/mcp
An MCP server over the same content.
A Model Context Protocol endpoint, so an agent can query the documentation instead of scraping it.
Tools
| Tool | What it does |
|---|---|
list_versions | Every version, with the prefix that scopes it |
list_pages | The table of contents, bounded and scoped |
search_docs | Find a page by term, with an excerpt around the match |
read_page | One page as Markdown, with duxt frontmatter |
Scope is a URL prefix
list_versions hands back the prefix each version is served at — /app,
/app/v1, /de/app — and that string is the whole of the scope list_pages
and search_docs accept. It also carries the version's label, lifecycle status,
which languages it is published in and whether it is the default, so an agent
chooses an edition before it searches one.
Omitting the prefix covers every version, in the site's default language. A
version nested under another — /app/v1 below the current /app — is never
inside its parent's scope.
Bounded answers
Both listings take limit (20 by default, 100 at most) and a cursor. Results
are ordered by path, and a nextCursor line names where to resume; a listing
without one is complete. The cursor is the last path returned, so it stays
stable when the documentation changes between two calls.
What read_page returns
duxt's own YAML frontmatter — path, prefix, version label and ref, locale and lifecycle status — over the authored Markdown with the author's own frontmatter removed. Never the rendered HTML, and never Content's parse tree.
Notes
Same collections as the pages, so the answers cannot drift from what is published. The server name, description and instructions come from the module options.
The server reuses a path-only index for each production collection. A listing reads metadata for the requested results plus one continuation row. Search reads bodies in blocks of at most 64 pages and stops once the answer and continuation are known. Unicode matching and translation precedence are unchanged. A term with no matches still scans the whole scope, but does not retain all bodies in memory.