A TypeScript-powered MCP (Model Context Protocol) server that makes Step Into Vision's visionOS development content accessible to AI assistants. Serves both REST API and MCP endpoints from a unified codebase.
What it does: Fetches articles from https://stepinto.vision, converts them to AI-ready formats, and provides MCP tools/resources plus a REST API for easy access to visionOS development content.
- Node.js 18+ and npm 10+
- (Optional) Cloudflare account for production deployment
git clone <repository>
cd stepintovision.ai
npm install
# Fetch latest content from Step Into Vision
npm run ingest
# Start local development server
npm run devVisit http://localhost:8787 - serves both REST API and MCP endpoints.
Add to your claude_desktop_config.json:
{
"mcp_servers": {
"stepIntoVision": {
"url": "http://localhost:8787/mcp"
}
}
}- listStepIntoVisionPosts - Browse articles with filters
- getStepIntoVisionPost - Retrieve specific articles
- searchStepIntoVisionPosts - Full-text search
- stepIntoVisionPost resources - AI-ready markdown content
- stepIntoVisionPostMeta resources - Structured metadata
GET /- Service metadataGET /posts- Paginated article listingsGET /posts/:slug- Individual article (JSON/Markdown)GET /search?q=query- Keyword searchPOST /mcp- Model Context Protocol endpoint
npm run dev # http://localhost:8787Important: Cloudflare Workers Free tier has ~10ms CPU limit, so ingestion is disabled by default.
npm run ingest # Creates data/stepintovision.jsonnpx wrangler kv key put catalog.json \
--binding=STEPINTOVISION_CATALOG_KV \
--path=data/stepintovision.json \
--remotenpm run build
npx wrangler deploywrangler secret put STEPINTOVISION_CATALOG < data/stepintovision.jsonBuild and run the Node.js server anywhere:
npm run build
npm start# 1. Fetch new content
npm run ingest
# 2. Upload to Cloudflare (if using Workers)
npx wrangler kv key put catalog.json --binding=STEPINTOVISION_CATALOG_KV --path=data/stepintovision.json --remote
# 3. Deploy worker (if needed)
npx wrangler deploySet STEPINTOVISION_ALLOW_WORKER_INGEST=true environment variable to enable worker-side ingestion (requires paid Cloudflare plan for sufficient CPU time).
# Basic ingestion
npm run ingest
# Custom options
npm run ingest -- --max-pages 10
npm run ingest -- --modified-after 2025-11-01
npm run ingest -- --output custom.jsonnpm run dev # Start dev server
npm run test # Run tests
npm run check # Format & lint
npm run build # Build for production[mcp_servers.stepIntoVision]
url = "http://localhost:8787/mcp"npx -y mcp-remote http://localhost:8787/mcpsrc/
├── app.ts # Shared Hono application factory
├── index.ts # Local Node.js entrypoint
├── worker.ts # Cloudflare Workers entrypoint
├── lib/ # Core business logic
│ ├── mcp.ts # MCP server implementation
│ ├── catalog/ # Catalog loading strategies
│ └── wordpress.ts # WordPress ingestion
├── cli/
│ └── ingest.ts # Content ingestion CLI
Q: Content isn't updating
# Solution: Manual ingestion and upload
npm run ingest
npx wrangler kv key put catalog.json --binding=STEPINTOVISION_CATALOG_KV --path=data/stepintovision.json --remote
npx wrangler deployQ: Worker ingestion is disabled
This is intentional! Free tier Workers have 10ms CPU limits. Use manual ingestion workflow above.
Q: TypeScript build errors
npm run check # Auto-fixes formatting issues
npm run build # Verify compilationQ: Local server not loading content
# Ensure catalog exists locally
npm run ingest
npm run dev| Variable | Default | Description |
|---|---|---|
STEPINTOVISION_ALLOW_WORKER_INGEST |
false |
Enable worker-side ingestion (requires paid plan) |
STEPINTOVISION_CATALOG |
- | Fallback catalog JSON (environment binding) |
STEPINTOVISION_CATALOG_KV |
- | KV namespace binding for catalog storage |
- Dual Interface: Same codebase serves REST API + MCP
- Content Processing: HTML → Markdown + AI-ready metadata
- Search: Fuse.js-powered fuzzy search
- Flexible Storage: File-based, KV, or environment variables
- Type Safety: Full TypeScript with Zod validation
- Performance Optimized: Content digests, caching, efficient indexing
All rights reserved. Step Into Vision content remains the property of its respective creators.