docsbook-mcp
Official# docsbook-mcp
A thin open-source proxy to the hosted Docsbook MCP server.
[Docsbook](https://docsbook.io) is an AI-native documentation platform — hosting, AI chat over your docs, analytics, SEO/GEO/AEO optimization, translations, and webhooks, all driven from a GitHub repo. This package is a small stdio [MCP](https://modelcontextprotocol.io) server that forwards requests to Docsbook's hosted MCP endpoint, giving any MCP client (Claude Desktop, Claude Code, Cursor, etc.) access to ~40 tools for managing a Docsbook workspace: branding, navigation, SEO/GEO/AEO, the AI chat system prompt, translations, analytics, webhooks, and the doc source-of-truth graph.
The actual tool implementations live in Docsbook's hosted backend (`https://docsbook.io/api/mcp/server`) — this repo contains no proprietary code, no database access, and no secrets. It is ~150 lines that speak stdio to your MCP client on one side and Streamable HTTP to the hosted endpoint on the other.
## Install & configure
### Claude Code
```bash
claude mcp add docsbook -- npx -y docsbook-mcp
```
Then set your token as an environment variable, or pass it via `claude mcp add --env`:
```bash
claude mcp add docsbook --env DOCSBOOK_MCP_TOKEN=your-token-here -- npx -y docsbook-mcp
```
### Claude Desktop (or any JSON-config MCP client)
Add to your MCP client config (e.g. `claude_desktop_config.json`):
```json
{
"mcpServers": {
"docsbook": {
"command": "npx",
"args": ["-y", "docsbook-mcp"],
"env": {
"DOCSBOOK_MCP_TOKEN": "..."
}
}
}
}
```
Get a token from your workspace's MCP settings at `https://docsbook.io/settings/mcp`.
## Environment variables
| Variable | Required | Description |
|---|---|---|
| `DOCSBOOK_MCP_TOKEN` | For real tool calls | Bearer token used to authenticate against the hosted Docsbook MCP server. Without it, the server still starts and lists tools (see below), but `tools/call` returns an error telling you where to get one. |
| `DOCSBOOK_MCP_URL` | No | Overrides the upstream endpoint. Defaults to `https://docsbook.io/api/mcp/server`. Can be pointed at a scoped endpoint, e.g. `https://docsbook.io/{owner}/{repo}/api/mcp/server`, which Docsbook serves anonymously (no token) for read-only access to PRO+ public workspaces. |
## How it works
- On `tools/list`, this proxy forwards to the hosted endpoint (with your `DOCSBOOK_MCP_TOKEN` as a Bearer token, if set) and returns whatever tools the server currently exposes — the tool list is never hardcoded here.
- If the upstream is unreachable, or no token is configured, it falls back to a bundled static tool manifest (`src/tools-manifest.json`) so the server can still respond to `initialize`/`tools/list` (useful for sandboxed registry introspection, e.g. Glama). This fallback list may lag behind the live tool set — see the `_comment` field in that file for how it was assembled.
- On `tools/call`, it forwards the call to the hosted endpoint. If no token is configured, it returns a clear MCP error pointing you to `https://docsbook.io/settings/mcp`.
## Development
```bash
npm install
npm run build
node dist/index.js
```
## Learn more
- [Docsbook](https://docsbook.io)
- [Model Context Protocol](https://modelcontextprotocol.io)
## License
MIT
TDQS
Scored across 62 tools
Most tools are clearly distinct, but the doc_search_* family (doc_search_text, doc_grep, doc_search_paths, doc_search_by_anchor) and the general search_docs overlap in function, which could cause misselection. The analytics and workspace tools are well-separated.
The majority of tools follow a clear verb_noun pattern (get_, list_, update_, create_, delete_, set_, test_). However, the doc_* tools (doc_outline, doc_breadcrumbs, doc_neighbors) deviate by using a prefix instead of a leading verb, though they remain readable and predictable.
62 tools is extreme for an MCP server. Even for a feature-rich documentation platform, this exceeds reasonable scope and will overwhelm agents with too many options, making selection harder.
The tool set covers many features but has significant gaps: no delete_workspace, no delete_doc, no register_webhook (only unregister), and no general list_translations (only pending). These missing lifecycle operations create dead ends and prevent full workflows.