ctx.vanshul.com
[MCP Registry]
[Endpoint]
[License: MIT]
A public Model Context Protocol (MCP) server, running as a Cloudflare
Worker, that turns a GitHub repository or a documentation site into agent-ready
context. Point an AI agent at it and it can pack a whole repo (or crawl a docs
site) into one token-counted blob — or search it and get back only the relevant
passages, each with its file/URL and line.
It's the agent-first companion to mcp/: where mcp reads a single
web page, ctx reads whole repos and doc sites. The repo pipeline fetches,
gunzips and parses the tarball in-process; docs extraction reuses Mozilla
Readability + Turndown.
Endpoint
Tools
repo is owner/repo, owner/repo/ref, or a github.com URL. url (for the
docs tools) is an absolute http(s) docs page to start crawling from.
Connect from an MCP client
Stdio-only clients bridge with npx mcp-remote https://ctx.vanshul.com/mcp.
Add it to your client
- Cursor — Settings → MCP → Add new server, or drop this into
~/.cursor/mcp.json:
- Claude Desktop — add the same block to
claude_desktop_config.json (Settings → Developer → Edit Config). If your version is stdio-only, use:
- Continue / VS Code — add
ctx with URL https://ctx.vanshul.com/mcp to your MCP servers config.
Try it with curl
Layout
Develop & deploy
How it works
The GitHub URL is always constructed from a fixed owner/repo slug, so the repo
tools have no SSRF surface. The docs tools fetch caller-supplied URLs, so every
URL and redirect hop is re-validated against the SSRF guard. Downloads are
bounded (timeout, size caps, page/file-count caps) and results are cached
per-isolate for a few minutes.
Security & limits
- No SSRF: input is a repo slug, not an arbitrary URL; only github.com is fetched.
- Bounded: 20s download timeout, ~60 MB uncompressed cap, 512 KB/file, ≤3000 files, per-IP rate limit.
- Stateless & private: no code stored, no LLM in the loop; public repos by default (private with a token).
Authentication (optional)
Set a GITHUB_TOKEN Worker secret to lift GitHub's rate limit (60 → 5,000/hour) and
read private repos:
The token is a Worker secret only — never a tool argument — so it can't leak to an agent.
Documentation
License
MIT © Vanshul Goyal