Skip to content
MCP Shelf

Grounded Docs (docs-mcp-server)

View on GitHub

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)
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).
MCP Shelf tests: numbers from our own runs, not the README · tested on 27 Oct 2026

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.

ToolWhat it is for
cancel_jobStops a queued or running indexing job.
refresh_versionRe-fetches an indexed version, updating only the pages that changed.
remove_docsDeletes the index for a library version.
scrape_docsFetches and indexes documentation from a URL for a library and version.

Only reads8 tools · Looks things up and changes nothing.

ToolWhat it is for
fetch_urlFetches any web page and returns it as Markdown, without indexing it.
find_versionFinds the indexed version that best matches the one you ask for.
get_job_infoShows the progress of one indexing job.
list_jobsLists indexing jobs and their status.
list_librariesLists the indexed libraries and their versions.
list_pagesLists the pages indexed for a library version.
read_pageReads a whole indexed page, in parts if it is long.
search_docsSearches 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 Code
claude mcp add grounded-docs -- npx -y @arabold/docs-mcp-server@latest --no-telemetry

To 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.

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.

SettingWhat it does
OPENAI_API_KEYEnvironment variableTurns on vector search using OpenAI embeddings. Other providers, including a local Ollama, are set with their own variables.sk-proj-...
--no-telemetryCommand line flagTurns off the anonymous usage events, which are on by default. DOCS_MCP_TELEMETRY=false does the same.
--read-onlyCommand line flagLeaves 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 flagstdio 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 variableWhere 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.

Docs MCP Server web interface

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.txt file 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.md or /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.txt and links to .md files. A custom Accept header 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:

Usage:

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:

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
  • MCP Server for WinDbg

    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
  • MCP Language Server

    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
  • Nx MCP

    Your Nx monorepo's projects, tasks, generators and CI results, for your assistant.

    Tools
    13
    Runs on
    Your computer
    Licence
    MIT
    Stars
    1.4K
  • Jupyter MCP Server

    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
  • Burp Suite MCP

    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
Full docs on GitHubarabold/docs-mcp-server

Something wrong on this page? Tell us.