MCP server
Host a Model Context Protocol server so coding agents can search and read your docs directly — tools, resources, discovery documents, content-type and facet filters, and the server output it needs.
Host a Model Context Protocol server so coding agents (Claude Code, Cursor, VS Code, claude.ai connectors) can search and read your docs directly — no scraping. It’s opt-in:
ai: {
mcp: {
enabled: true,
route: "/mcp", // where the server is mounted
},
}
| Option | Default | Description |
|---|---|---|
enabled |
false |
Generate and host the MCP server. |
route |
/mcp |
Path the Streamable-HTTP endpoint is mounted on. |
name |
title | Server name shown to clients (defaults to title). |
instructions |
— | Optional system hint passed to connecting agents. |
Tools and resources
The server exposes read-only tools — search_docs, get_page, list_pages, and get_navigation — and every page as an MCP resource (resources/list enumerates the pages at their served URLs with a text/markdown type; resources/read returns the page’s agent Markdown, the same output as get_page), so clients that attach context by URI can browse the docs without calling a tool. It publishes discovery documents at /.well-known/mcp.json and /.well-known/mcp/server-card.json. The server card follows the SEP-2127 Server Card extension schema (reverse-DNS name, remotes transport endpoints), with initialize-shaped compat fields (serverInfo, capabilities, transports) for scanners built against the proposal’s earlier revision. Each page’s Connect to MCP menu offers copy-and-go install for Claude Code, Cursor, VS Code, and Codex (shown once deployment.site is set).
search_docs runs its own full-text index, so it works regardless of your search provider — and even when search is set to none. The MCP server is a separate feature from on-page search.
The same tools are available over plain HTTP as the JSON API, for frameworks that don’t speak MCP.
Scoping by content type and facets
search_docs and list_pages both accept an optional contentTypes filter, narrowing results to pages of the given frontmatter types — ["rfc"], ["blog", "changelog"] — so an agent working against a site that mixes docs with RFCs, runbooks, or policies can scope retrieval to the kind of page it needs. Every result names its content type, and list_pages output shows the types in use.
Both tools also accept a filters object matching against the facets a site declares per content type (content.types.<type>.facets) — custom frontmatter keys whose values become filterable metadata:
{
"query": "OpenAPI request schemas",
"contentTypes": ["rfc"],
"filters": { "domain": "architecture", "status": "enforced" }
}
Every filters entry must match (results carry their facet values, and list_pages shows each page’s), so a knowledge base can drive progressive-disclosure agent workflows — enumerate the enforced standards, search only within them — without any server of its own.
Server output required
The MCP server is a live endpoint (/mcp), so it can’t run on a static build. Switch to server output and pick an adapter:
deployment: {
output: "server",
adapter: "node", // or "vercel" | "netlify" | "cloudflare"
site: "https://docs.example.com",
}
A static build with ai.mcp.enabled fails fast with a message telling you to set deployment.output to server. See Deployment for the adapters. Once deployed, connect from Claude Code with:
claude mcp add --transport http my-docs https://docs.example.com/mcp