cancel_job
Cancel a queued or running indexing job. Use the 'list_jobs' tool to find the job ID.
Index the docs for the exact library version you use, and search them locally instead of trusting recall.
LABSCO SUMMARY
The failure this addresses is an assistant confidently using an API that changed two releases ago. Because the index is keyed by version and the search resolves against it, the answer comes from the docs for the version in your lockfile — and the whole thing stays on your machine.
A personal documentation index. It fetches official docs from websites, GitHub, npm, PyPI, local folders and archives, stores them by library and version, and answers searches from that store — so an assistant reads the version in your project rather than whatever it remembers. Everything runs on your machine.
Node.js 22 or newer, run with npx from @arabold/docs-mcp-server, or from the ghcr.io container with volumes for its data and config. It is a long-running local server: the web UI for managing the index is at http://localhost:6280 and clients connect to the SSE endpoint on the same port. Nothing leaves your network, and no account is involved. An embedding model is optional but is what turns keyword matching into semantic search — set an OpenAI key in the environment, or point it at Ollama, Gemini or Azure instead.
One command — npx @arabold/docs-mcp-server@latest
USE CASES
Scrape the library's docs at that version once, then search them whenever a question about it comes up.
Search the index rather than the open web, and read the passage from the official docs it returns.
Refresh the stored version with the settings it was scraped under, and drop the sets you no longer support.
Start the scrape, watch the job while it runs, and cancel it if it is crawling somewhere you did not intend.
Fetch the URL as Markdown for a one-off question — nothing is stored and nothing is crawled.
Point a scrape at a local folder, a GitHub repository or an archive, and the same search covers material that was never on a docs site.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
cancel_jobCancel a queued or running indexing job. Use the 'list_jobs' tool to find the job ID.
fetch_urlFetch a single URL and convert its content to Markdown. Use this tool to read the content of any web page.
find_versionFind the best matching version for a library. Use to identify available or closest versions.
get_job_infoGet details for a specific indexing job. Use the 'list_jobs' tool to find the job ID.
list_jobsList all indexing jobs. Optionally filter by status.
list_librariesList all indexed libraries.
refresh_versionRe-scrape a previously indexed library version, updating only changed pages.
remove_docsRemove indexed documentation for a library version. Use only if explicitly instructed.
scrape_docsScrape and index documentation from a URL for a library. Use this tool to index a new library or a new version.
search_docsSearch up-to-date documentation for a library or package. Examples:
BEFORE YOU INSTALL
10 tools when we connected.
npx on PATH
CONTEXT COST
Rated by the size of the 10 tool definitions that ride along on every turn, not by how many there are
INSTALLATION
npx @arabold/docs-mcp-server@latest{
"mcpServers": {
"docs-mcp-server": {
"command": "npx",
"args": [
"-y",
"@arabold/docs-mcp-server@latest"
]
}
}
}Go to Settings → Cursor Settings → MCP
Click Add new MCP server
Set Type to stdio and Command to npx -y @arabold/docs-mcp-server@latest
{
"context_servers": {
"docs-mcp-server": {
"command": "npx",
"args": [
"-y",
"@arabold/docs-mcp-server@latest"
]
}
}
}{
"mcpServers": {
"docs-mcp-server": {
"url": "http://localhost:6280/mcp",
"type": "streamableHttp"
}
}
}{
"mcpServers": [
{
"name": "docs-mcp-server",
"command": "npx",
"args": [
"-y",
"@arabold/docs-mcp-server@latest"
]
}
]
}claude mcp add --scope user docs-mcp-server -- npx -y @arabold/docs-mcp-server@latest{
"mcp": {
"docs-mcp-server": {
"type": "local",
"command": [
"npx",
"-y",
"@arabold/docs-mcp-server@latest"
],
"enabled": true
}
}
}{
"mcpServers": {
"docs-mcp-server": {
"type": "local",
"command": "npx",
"args": [
"-y",
"@arabold/docs-mcp-server@latest"
]
}
}
}{
"servers": {
"docs-mcp-server": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@arabold/docs-mcp-server@latest"
]
}
}
}{
"mcpServers": {
"docs-mcp-server": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v",
"docs-mcp-data:/data",
"ghcr.io/arabold/docs-mcp-server:latest"
]
}
}
}