A TypeScript rewrite of the Step Into Vision content service inspired by the architecture of sosumi.ai. It ingests the live WordPress site and serves the catalog over HTTP (REST + MCP) for local development or Cloudflare Workers.
src/app.ts– Shared Hono application factory (HTTP + MCP).src/index.ts– Node.js entrypoint used for local development.src/worker.ts– Cloudflare Workers entrypoint fed by environment bindings.src/lib/– Shared domain logic for catalog storage, search, rendering, and ingestion helpers.src/cli/ingest.ts– CLI that fetches Step Into Vision posts and produces a static catalog file.tests/– Vitest unit tests.data/– Ignored directory that holds the generated catalog (jsonor SQLite) on your machine.
- Node.js 18 or newer
- npm 10 or newer
npm installFetch Step Into Vision posts and write them to data/stepintovision.json:
npm run ingestUse --max-pages, --modified-after, or --output to control pagination,
incremental syncs, and where the JSON file is written. The CLI targets
https://stepinto.vision by default.
npm run devThe worker listens on http://localhost:8787. The root endpoint returns service
metadata; append /mcp for the MCP endpoint.
GET /posts– Paginated list with optionalcategory,tag,limit, andoffset.GET /posts/:slug– Markdown or JSON for an individual post.GET /posts/id/:id– Fetch by numeric WordPress identifier.GET /search?q=vision– Keyword search backed by Fuse.js.POST /mcp– Model Context Protocol endpoint (streaming HTTP).- AI-readable shortcuts – Swap the production domain for
https://stepintovision.aior hithttp://localhost:8787/mcp/<slug>for Markdown-ready payloads.
npm run test– Vitest unit tests.npm run format– Biome formatter.npm run lint– Lint fixes.npm run check– Run formatter and linter together.
-
Ensure your catalog JSON is available locally (see ingestion step above).
Cloudflare CPU limits: The Workers Free plan only allows ~10 ms of CPU time per request. Because ingesting the WordPress feed requires fetching and normalizing hundreds of posts, the Worker does not attempt to build the catalog itself unless you explicitly opt-in. Run the ingestion CLI outside of Cloudflare and upload the resulting JSON as described below.
-
Upload the catalog to Cloudflare—KV storage is recommended so the worker can refresh without another deploy:
npx wrangler kv key put catalog.json \ --binding=STEPINTOVISION_CATALOG_KV \ --path=data/stepintovision.json \ --remote
Verify the upload (also against the remote namespace):
npx wrangler kv key get catalog.json \ --binding=STEPINTOVISION_CATALOG_KV \ --text \ --remote
The
--remoteflag opts the command into Cloudflare’s hosted KV instead of the local development store.If you do not have KV configured, you can fall back to an environment secret so the worker can hydrate itself at runtime:
wrangler secret put STEPINTOVISION_CATALOG < data/stepintovision.json -
Build and deploy the worker:
npm run build npx wrangler deploy
-
(Optional) If your Cloudflare plan provides enough CPU time and you want the worker to self-ingest on deploys or cron triggers, set the
STEPINTOVISION_ALLOW_WORKER_INGESTenvironment variable totrue.
Regenerate Worker binding types after configuration changes with:
npm run cf-typegenChoose the integration that matches your client’s capabilities.
Run npm run dev (or host the worker) so the MCP endpoint is reachable at
http://localhost:8787/mcp.
-
gpt5-codex CLI
[mcp_servers.stepIntoVision] url = "http://localhost:8787/mcp"
Swap the URL for your deployed endpoint when hosting remotely.
Some MCP clients (Companion, Claude Desktop, etc.) expect STDIO servers. Use the
official mcp-remote bridge to translate HTTP into STDIO.
npx -y mcp-remote http://localhost:8787/mcp-
Companion app
- Open Companion, click the + button, and choose STDIO.
- Set Command to
npx. - Add three separate Arguments rows:
-y,mcp-remote,http://localhost:8787/mcp. - Save. Companion should connect to the HTTP relay and list
listStepIntoVisionPosts,getStepIntoVisionPost, andsearchStepIntoVisionPosts.
All rights reserved. Step Into Vision content remains the property of its respective creators; contact the maintainers for licensing or redistribution requests.