Your own index of library docs, by version, that an assistant searches before it answers.
- Started in our test
- ★ 1.8K GitHub stars
- Last commit 25 Oct 2026
What is Grounded Docs (docs-mcp-server)?
Grounded Docs (docs-mcp-server) is an open source MCP server that indexes documentation from websites, GitHub, npm, PyPI and local files so AI assistants can search the exact version you use.
Andre Rabold's server builds a private documentation index that a coding assistant can search. You point it at a docs site, a GitHub repository, an npm or PyPI package or a local folder, and it fetches the pages, splits them into passages and stores them in a SQLite database on your machine, labelled by library and version. The model can then look up the version you actually use instead of relying on what it remembers.
It is an open source alternative to hosted services such as Context7. Search uses full-text matching out of the box, and adds meaning-based search when you give it an embedding model from OpenAI, a local Ollama or another provider. A web interface on port 6280 shows what is indexed. Anonymous usage telemetry is on by default and easy to switch off.
- Made by
- Andre Rabold (arabold) and contributors
- Licence
- MIT
- Latest version
- 3.4.1 (25 Oct 2026)
- npm package
- @arabold/docs-mcp-server
- GitHub stars
- 1.8K
- Last commit
- 25 Oct 2026
- Tools
- 12
- Runs on
- Your computer
- Setup checked
- 27 Oct 2026
- Page updated
- 27 Oct 2026
Our check: We ran this exact config on 27 Oct 2026: it started and answered with 12 tools.
MCP Shelf take
We started Grounded Docs (docs-mcp-server) on our own test machine on 27 Oct 2026 and it answered with 12 tools. 8 of the 12 only read; the other 4 can change things. Every tool comes with a useful description, all of them say whether they change things, and the tool list costs about 700 tokens of context before you ask a thing. It sits 15th of 21 in its category on our shelf by GitHub stars (1.8K).
What can Grounded Docs (docs-mcp-server) read and change?
It can read
- Docs sites, GitHub repositories, package pages and local folders you ask it to index
- Any URL passed to fetch_url
It can change
- Its own local index of documentation
- Nothing outside it
Safer setup: Run it with --read-only once your docs are indexed, and add --no-telemetry if you do not want usage events sent.
What's in the pod
What tools does Grounded Docs (docs-mcp-server) have?
We found 12 tools when we started it on 27 Oct 2026. 8 only read. The rest can change things, so keep your app's "ask before each tool call" setting on for them.
Changes things4 tools · Can create, edit, send or delete.
| Tool | What it is for |
|---|---|
cancel_job | Stops a queued or running indexing job. |
refresh_version | Re-fetches an indexed version, updating only the pages that changed. |
remove_docs | Deletes the index for a library version. |
scrape_docs | Fetches and indexes documentation from a URL for a library and version. |
Only reads8 tools · Looks things up and changes nothing.
| Tool | What it is for |
|---|---|
fetch_url | Fetches any web page and returns it as Markdown, without indexing it. |
find_version | Finds the indexed version that best matches the one you ask for. |
get_job_info | Shows the progress of one indexing job. |
list_jobs | Lists indexing jobs and their status. |
list_libraries | Lists the indexed libraries and their versions. |
list_pages | Lists the pages indexed for a library version. |
read_page | Reads a whole indexed page, in parts if it is long. |
search_docs | Searches the indexed docs for a library, optionally for a version, and returns matching passages with their source. |
Grouped and described by us. The README on GitHub lists the inputs each tool takes.
How clearly it describes its tools to your assistant
- Tools with a description
- 12 of 12
- Say if they change things
- 12 of 12
- Context it takes, at least
- ~700 tokens
Every tool says whether it only reads or can change things, so a client can ask before the risky ones.
From the tool list it sent us. The token figure counts names, descriptions and input names; the full schemas your client loads add more.
How do I install Grounded Docs (docs-mcp-server)?
Install steps from the Grounded Docs (docs-mcp-server) README
The project's own instructions, copied from its README on GitHub on 27 Oct 2026 under its MIT licence. They are the source of truth; the ready-made configs further down are built from them. The rest of the README is in the README tab.
Quick Start
You need Node.js 22 or later, or Docker. Installation covers both in detail, along with Docker Compose and running the server inside your AI client.
1. Start the server
npx @arabold/docs-mcp-server@latest
Or with Docker:
docker run --rm \
-v docs-mcp-data:/data \
-v docs-mcp-config:/config \
-p 6280:6280 \
ghcr.io/arabold/docs-mcp-server:latest
2. Turn on vector search (optional)
Without an embedding model, search uses full-text matching. Vector search also finds passages by meaning. To use OpenAI, start the server with OPENAI_API_KEY set:
OPENAI_API_KEY="sk-proj-..." npx @arabold/docs-mcp-server@latest
With Docker, add -e OPENAI_API_KEY="sk-proj-...". Embedding Models covers Ollama, Gemini, Azure OpenAI and other providers.
Do this before you add documentation. Embeddings are computed when a page is indexed, so documentation indexed without a model gets no vectors until you scrape it again with --replace.
3. Add documentation
Open the web UI at http://localhost:6280 and choose Add library.
4. Connect your AI client
Add the server's MCP endpoint, http://localhost:6280/mcp, to your client. Most clients accept an entry like this:
{
"mcpServers": {
"docs-mcp-server": {
"url": "http://localhost:6280/mcp"
}
}
}
Connecting MCP Clients has the exact settings for Claude Code, Claude Desktop, Zed and other clients, how a client can start the server itself over stdio, and the list of MCP tools.
What you need first
- Node.js 22 or newer
- Optional: an embedding provider such as an OpenAI key or a local Ollama, for vector search
Add Grounded Docs (docs-mcp-server) to your app
Pick your app for a ready-to-paste snippet and where it goes, built from the steps above.
Where it goes: Your terminal, in the project folder
claude mcp add grounded-docs -- npx -y @arabold/docs-mcp-server@latest --no-telemetryTo share one index and keep the web UI, run npx @arabold/docs-mcp-server@latest in a terminal and add it with claude mcp add --transport http docs-mcp-server http://localhost:6280/mcp instead. Add docs at http://localhost:6280.
Where it goes: ~/.cursor/mcp.json, or .cursor/mcp.json in a project
{
"mcpServers": {
"grounded-docs": {
"command": "npx",
"args": [
"-y",
"@arabold/docs-mcp-server@latest",
"--no-telemetry"
]
}
}
}Where it goes: claude_desktop_config.json (Settings → Developer → Edit Config)
{
"mcpServers": {
"grounded-docs": {
"command": "npx",
"args": [
"-y",
"@arabold/docs-mcp-server@latest",
"--no-telemetry"
]
}
}
}Where it goes: .vscode/mcp.json in your project
{
"servers": {
"grounded-docs": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@arabold/docs-mcp-server@latest",
"--no-telemetry"
]
}
}
}Where it goes: ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"grounded-docs": {
"command": "npx",
"args": [
"-y",
"@arabold/docs-mcp-server@latest",
"--no-telemetry"
]
}
}
}Where it goes: Not supported
Not supported: the index lives on your machine, and ChatGPT only connects to remote servers.
Add OPENAI_API_KEY in env for vector search. To keep the web UI and share one index with several clients, run "npx @arabold/docs-mcp-server@latest" in a terminal and connect clients to http://localhost:6280/mcp instead. "--read-only" leaves out the tools that add or remove docs.
Checked against the project's own install docs on 27 Oct 2026: arabold/docs-mcp-server README.
New to this? See the setup guides for Claude Code, Cursor, Claude Desktop and ChatGPT.
Grounded Docs (docs-mcp-server) not working? Common fixes
- It will not start on an older Node.js
- It needs Node.js 22 or newer. Check with node --version.
- The first start is slow
- It downloads a headless Chromium for pages that need JavaScript. Set PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH to use one you already have.
- It refuses to start after changing the embedding model
- A model change deletes the stored vectors, so it asks you to confirm. In a container with no terminal, set DOCS_MCP_ACCEPT_MODEL_CHANGE=true for one start.
- Search finds only exact words
- Without an embedding model it uses full-text search. Add OPENAI_API_KEY or another provider for search by meaning.
How do I configure Grounded Docs (docs-mcp-server)?
Names are exactly as the project spells them. Required ones are marked.
| Setting | What it does |
|---|---|
OPENAI_API_KEYEnvironment variable | Turns on vector search using OpenAI embeddings. Other providers, including a local Ollama, are set with their own variables.sk-proj-... |
--no-telemetryCommand line flag | Turns off the anonymous usage events, which are on by default. DOCS_MCP_TELEMETRY=false does the same. |
--read-onlyCommand line flag | Leaves out the tools that add, refresh or remove docs, so clients can only search and read. DOCS_MCP_READ_ONLY=true does the same. |
--protocolCommand line flag | stdio or http. Normally chosen for you: stdio when a client starts it, HTTP when you run it in a terminal.--protocol stdio |
DOCS_MCP_STORE_PATHEnvironment variable | Where the SQLite index lives, if you want it somewhere other than the default data folder. |
Grounded Docs (docs-mcp-server) FAQ
How do I add Grounded Docs to Claude Code?
Run claude mcp add docs -- npx -y @arabold/docs-mcp-server@latest --no-telemetry, or start the server in a terminal and connect to http://localhost:6280/mcp so the web UI stays available for adding docs.
How do I add documentation to Grounded Docs?
Open the web UI at http://localhost:6280 and choose Add library, or ask your assistant to run scrape_docs with a URL. It indexes websites, GitHub repositories, npm and PyPI packages and local folders.
Does Grounded Docs need an OpenAI key?
No. Without an embedding model it uses full-text search. Set OPENAI_API_KEY, or another provider such as Ollama or Gemini, before indexing to add search by meaning.
Is Grounded Docs free?
Yes. It is MIT licensed and runs on your machine. Embedding calls to a paid provider are billed by that provider; a local provider such as Ollama costs nothing.
Do my docs leave my machine with Grounded Docs?
Only to the embedding provider you choose; with a local provider nothing leaves. Telemetry sends usage events, not your docs, and --no-telemetry turns it off.
Grounded Docs or Context7?
Context7 is a hosted index of public libraries. Grounded Docs runs on your machine, indexes whatever you point it at, including private docs, and keeps the index local.
Why won't Grounded Docs start?
It needs Node.js 22 or later, or Docker. After a change of embedding model it waits for you to confirm, since the change deletes stored vectors; in a container, set DOCS_MCP_ACCEPT_MODEL_CHANGE=true for one start.
Can several apps share one Grounded Docs index?
Yes. Run it as an HTTP server and point every app at http://localhost:6280/mcp. The stdio server, the command line and the HTTP server also share the same data folder.
Grounded Docs (docs-mcp-server) README
This is the project's own README from arabold/docs-mcp-server, written by Andre Rabold (arabold) and contributors, and shared under its MIT licence. We copied it on 27 Oct 2026, so the version on GitHub may be newer.
Grounded Docs MCP Server
Grounded Docs gives your AI coding assistant a documentation index that matches the library versions you use. It fetches documentation from websites, GitHub repositories, npm, PyPI and local folders, and serves search over the Model Context Protocol (MCP), a command line and a web UI. Your assistant answers from that documentation instead of from what it remembers.
It is an open-source alternative to Context7, Nia and Ref.Tools.

Features
- Indexes websites, GitHub repositories, npm and PyPI packages, local folders and archives (ZIP, TAR).
- Reads HTML, Markdown, PDF, Office and OpenDocument files, EPUB, Jupyter notebooks, source code and more. See Supported Formats.
- Stores each library version separately, so a search targets the version your project uses.
- Combines full-text search with optional vector search through OpenAI, Ollama, Gemini, Vertex AI, AWS Bedrock, Azure OpenAI or any OpenAI-compatible server.
- Runs on your machine and keeps its index in a local SQLite database. Document text goes only to the embedding provider you configure; with a local one, such as Ollama, it stays on your machine. Usage telemetry is on by default; Telemetry lists what it sends and how to turn it off.
- Works with any MCP client, over stdio or Streamable HTTP.
Quick Start
You need Node.js 22 or later, or Docker. Installation covers both in detail, along with Docker Compose and running the server inside your AI client.
1. Start the server
npx @arabold/docs-mcp-server@latest
Or with Docker:
docker run --rm \
-v docs-mcp-data:/data \
-v docs-mcp-config:/config \
-p 6280:6280 \
ghcr.io/arabold/docs-mcp-server:latest
2. Turn on vector search (optional)
Without an embedding model, search uses full-text matching. Vector search also finds passages by meaning. To use OpenAI, start the server with OPENAI_API_KEY set:
OPENAI_API_KEY="sk-proj-..." npx @arabold/docs-mcp-server@latest
With Docker, add -e OPENAI_API_KEY="sk-proj-...". Embedding Models covers Ollama, Gemini, Azure OpenAI and other providers.
Do this before you add documentation. Embeddings are computed when a page is indexed, so documentation indexed without a model gets no vectors until you scrape it again with --replace.
3. Add documentation
Open the web UI at http://localhost:6280 and choose Add library.
4. Connect your AI client
Add the server's MCP endpoint, http://localhost:6280/mcp, to your client. Most clients accept an entry like this:
{
"mcpServers": {
"docs-mcp-server": {
"url": "http://localhost:6280/mcp"
}
}
}
Connecting MCP Clients has the exact settings for Claude Code, Claude Desktop, Zed and other clients, how a client can start the server itself over stdio, and the list of MCP tools.
Command Line
The CLI indexes and searches without a running server, which suits scripts and coding agents. It shares its database with a server on the same machine.
# Index documentation
npx @arabold/docs-mcp-server@latest scrape react https://react.dev/reference/react
# Search it
npx @arabold/docs-mcp-server@latest search react "useEffect cleanup" --output yaml
# Fetch one page as Markdown without indexing it
npx @arabold/docs-mcp-server@latest fetch-url https://react.dev/reference/react/useEffect
scrape refuses a library version that already exists. Pass --replace to rebuild it, or run refresh to update it in place. The skills/ directory has Agent Skills that teach coding agents these commands. Basic Usage covers every command, output formats and local files.
Web Scraping
- Before it crawls a website, a scrape or refresh looks for an
llms.txtfile in the start URL's directory and at the site root. The links listed there become extra starting points, and for those pages the scraper first tries the Markdown version of the URL, such as/guide/index.html.mdor/page.html.md. - Requests ask for HTML first, like a browser. Markdown that a server converts on request leaves out the site's navigation, so a crawl would miss most pages. The scraper uses Markdown where the site publishes it: pages listed in
llms.txtand links to.mdfiles. A customAcceptheader replaces the default one. - For documentation sites that route with hash URLs, such as
https://docs.example.com/#/guide, turn on hash routes for the scrape. See Hash Route Behavior.
Documentation
Setup:
- Installation: npx, Docker, Docker Compose and the embedded server.
- Configuration: config file, environment variables and every setting.
- Embedding Models: providers, models and changing the model.
Usage:
- Basic Usage: the web UI, the CLI and local files.
- Connecting MCP Clients: client settings and MCP tools.
- Supported Formats: file formats and how each is processed.
- Search Quality Benchmark: measure retrieval quality.
Deployment:
- Deployment Modes: one process, or a worker with separate MCP and web services.
- Reverse Proxy Deployment: serve the server under a path such as
https://example.com/docs. - Authentication: protect the MCP endpoint with OAuth2/OIDC.
- Security: trust boundaries and limits on what the scraper may reach.
- Telemetry: the usage events the server sends, and how to turn them off.
Internals:
- Architecture: system design for contributors.
Contributing
See CONTRIBUTING.md for development setup and guidelines.
License
This project is licensed under the MIT License. See LICENSE for details.
Two peas, one chat
Chat with AI about Grounded Docs (docs-mcp-server)
Opens a chat primed with Grounded Docs (docs-mcp-server)’s README and setup docs from this page, or add it in Cursor to use its tools.
The Cursor button opens Cursor and asks before it adds the server. Fill in any keys it needs in Cursor’s MCP settings.
Peas in a pod
What are the alternatives to Grounded Docs (docs-mcp-server)?
How Grounded Docs (docs-mcp-server) lines up against its neighbours on the shelf. See every developer tools server.

Grounded Docs (docs-mcp-server)This pea
Your own index of library docs, by version, that an assistant searches before it answers.
- Tools
- 12
- Runs on
- Your computer
- Licence
- MIT
- Stars
- 1.8K

Lets an assistant run WinDbg commands to triage crash dumps and debug live Windows targets.
- Tools
- 12
- Runs on
- Your computer
- Licence
- MIT
- Stars
- 1.6K

Puts a real language server behind your assistant: definitions, references, diagnostics and rename.
- Tools
- 6
- Runs on
- Your computer
- Licence
- BSD-3-Clause
- Stars
- 1.6K

Your Nx monorepo's projects, tasks, generators and CI results, for your assistant.
- Tools
- 13
- Runs on
- Your computer
- Licence
- MIT
- Stars
- 1.4K

Lets an assistant edit and run cells in a live Jupyter notebook and read the results.
- Tools
- 18
- Runs on
- Your computer
- Licence
- BSD
- Stars
- 1.3K

Lets an assistant send requests, read proxy history and use Repeater in Burp Suite.
- Tools
- 27
- Runs on
- Your computer
- Licence
- GPL-3.0
- Stars
- 1.3K
Something wrong on this page? Tell us.