Paste any docs URL → get a hosted, Cursor-ready MCP server in under 60 seconds.
No install. No local clone. No API keys to hand over.
Live · Docs · Pricing · Comparison
If docs4llm is useful to you, please ⭐ star the repo — it helps other developers find it.
Private codebase. This repository contains proprietary product code. It is not open source. For public docs, badges, and MCP Registry publishing, see docs4llm/docs4llm-registry.
- Site: docs4llm.site
- CLI:
npm install -g docs4llm - Registry: every converted MCP auto-publishes to
io.github.docs4llm/<slug>on the official MCP Registry whenMCP_REGISTRY_GITHUB_TOKENis configured in production.
- Paste a docs URL — LangChain, Stripe, your own — in the chat with the docs4llm toggle on.
- The pipeline crawls the site (Mintlify, Docusaurus, OpenAPI JSON/YAML, GitHub repos, GitBook, plain HTML), preserving code blocks and chunking by heading.
- You get a remote MCP URL + Bearer token. Paste it into Cursor's
mcp.jsonand reload. - Every generated MCP is auto-published to the official MCP Registry under
io.github.docs4llm/<slug>and listed in the marketplace.
Auth: Sign in with GitHub OAuth — no passwords, no Google account required.
{
"mcpServers": {
"stripe": {
"url": "https://docs4llm.site/api/mcp/<projectId>/mcp",
"headers": {
"Authorization": "Bearer <project-token>"
}
}
}
}Install the terminal client and run the same conversion pipeline from your shell:
npm install -g docs4llm # global install puts `docs4llm` on your PATH
docs4llm login # browser-based device auth
docs4llm https://docs.example.comUse
-g. A localnpm i docs4llmwon't expose thedocs4llmcommand — usenpx docs4llm <url>instead.
The CLI uses browser-based device auth, shares your web account limits, auto-lists ready MCPs in the marketplace, and can write configs to Cursor, VS Code, Claude Desktop, and Windsurf.
- 📦 npm: https://www.npmjs.com/package/docs4llm
- 📖 Full command reference:
cli/README.md· docs/cli
| Tool | What it does |
|---|---|
list_documentation_pages |
Every crawled page |
get_documentation_page |
Full markdown of one page |
search_documentation |
Heading-aware search |
get_documentation_overview |
Summary + index |
read_full_documentation |
All pages combined |
ask_documentation |
Q&A with citations |
Next.js 16 · OpenRouter · Supabase · Upstash Redis + QStash · Streamable HTTP MCP
For team members with repo access:
git clone https://github.com/garvitsingh006/docs4llm.git
cd docs4llm
pnpm install
cp .env.example .env.local
# fill OPENROUTER_API_KEY, AUTH_SECRET, POSTGRES_URL, Supabase keys, GitHub OAuth
pnpm db:migrate
pnpm devOpen http://localhost:3000.
# Core
AUTH_SECRET=... # openssl rand -base64 32
OPENROUTER_API_KEY=... # https://openrouter.ai/keys
OPENROUTER_MODEL=nvidia/nemotron-3-ultra-550b-a55b:free
# Supabase
NEXT_PUBLIC_SUPABASE_URL=...
NEXT_PUBLIC_SUPABASE_ANON_KEY=...
SUPABASE_SERVICE_ROLE_KEY=...
POSTGRES_URL=... # Supabase pooler URI
# GitHub OAuth (login/signup)
# Create at https://github.com/settings/developers → OAuth Apps
# Callback URL: https://<your-project>.supabase.co/auth/v1/callback
GITHUB_CLIENT_ID=...
GITHUB_CLIENT_SECRET=...
# Admin access (comma-separated emails)
ADMIN_EMAILS=you@example.com
# MCP Registry auto-publish (optional — no-op if unset)
MCP_REGISTRY_GITHUB_TOKEN=... # token for a member of the docs4llm GitHub org
# Optional — improves crawl quality for SPA / sparse docs
TAVILY_API_KEY=
BRAVE_SEARCH_API_KEY=
EXA_API_KEY=
JINA_API_KEY=
FIRECRAWL_API_KEY=Never commit secrets. All keys above belong in
.env.local(gitignored) or your host's environment settings.
- Fork / clone this repo, push to your GitHub.
- Import the repo at https://vercel.com/new.
- Add the env vars above in Settings → Environment Variables.
- Deploy. docs4llm runs on Vercel Functions out of the box.
Set NEXT_PUBLIC_APP_URL to your deployed domain so generated MCP configs
point at the right host. Leave it unset on Preview so per-branch preview
URLs resolve correctly for auth.
| Framework | Next.js 16, React 19, Turbopack |
| AI | OpenRouter (nvidia/nemotron-3-ultra-550b-a55b:free by default) |
| Database | Supabase Postgres |
| Auth | Supabase Auth (GitHub OAuth) |
| UI | Tailwind v4, shadcn/ui, Framer Motion, Streamdown |
| Lint | Ultracite (Biome) |
| MCP | @modelcontextprotocol/sdk + official MCP Registry |
A single GitHub Actions workflow (.github/workflows/ci.yml) runs on every push and PR:
- TypeScript type-check (
tsc --noEmit --skipLibCheck) - Ultracite / Biome lint (
pnpm check) - Next.js production build (
pnpm exec next build)
Branching: feature branches cut from staging → PR → staging preview for QA
→ main → tagged release to production. Preview deploys are created per branch
and support full login.
Contributions are welcome! Whether it's a bug fix, a new source-format adapter, or docs improvements:
- Fork the repo and create a branch off
staging. - Run
pnpm checkandpnpm exec tsc --noEmitbefore opening a PR. - Open a PR against
stagingwith a clear description.
Found a bug or have an idea? Open an issue.
Never commit secrets — all API keys belong in .env.local (gitignored) or your
host's environment settings. If you discover a security issue, please open a
private security advisory
instead of a public issue.
Built for developers shipping AI agents. If this saved you time, ⭐ star the repo.
