papermoon-mkdocs-mcp
papermoon-mkdocs-mcp
Ein leichtgewichtiger MCP-Server für MkDocs-Dokumentationsseiten. Liest Markdown-Dateien direkt von der Festplatte, bietet Volltext- und optionale semantische Suche und stellt die Projektstruktur über das Model Context Protocol bereit.
Funktionen
5 MCP-Tools – Suche, read_document, list_documents, get_project_info, get_document_outline
SQLite-FTS5-Keyword-Suche mit BM25-Ranking (keine externen Abhängigkeiten)
Optionale semantische Vektorsuche über sentence-transformers
Hybride Suche kombiniert Keyword- und Vektor-Ergebnisse mit Reciprocal Rank Fusion
Inkrementelle Indizierung – schnelle Updates bei Dateiänderungen
Persistenter SQLite-Index, der Server-Neustarts übersteht
Navigationsbewusst – parst
mkdocs.ymlund.nav.ymlAusschließbare Dokumente – Entwürfe und interne Seiten vom MCP-Surface fernhalten
Sicherheit zuerst – Path-Traversal-Schutz, schreibgeschützte Suchverbindungen
Minimale Abhängigkeiten – 3 erforderlich, 2 optional
Related MCP server: mdbook-mcp-server
Installation
pip install papermoon-mkdocs-mcpUm die Vektorsuche zu aktivieren:
pip install papermoon-mkdocs-mcp[vector]Schnellstart
Führen Sie den Befehl im Stammverzeichnis eines beliebigen MkDocs-Projekts aus (dort, wo mkdocs.yml liegt):
cd /path/to/your/mkdocs-project
papermoon-mkdocs-mcpOder zeigen Sie auf eine bestimmte Konfigurationsdatei:
papermoon-mkdocs-mcp --config /path/to/mkdocs.ymlDer Server erkennt mkdocs.yml im aktuellen Verzeichnis automatisch, wenn --config weggelassen wird.
Transportoptionen
Standardmäßig verwendet der Server den stdio-Transport. Sie können für Remote- oder Multi-Client-Setups auf einen Netzwerktransport umschalten:
# Streamable HTTP (recommended for network access)
papermoon-mkdocs-mcp --transport streamable-http --host 0.0.0.0 --port 9000
# SSE (legacy client compatibility)
papermoon-mkdocs-mcp --transport sse --port 8080Flag | Standard | Beschreibung |
|
|
|
|
| Bind-Adresse (nur Netzwerktransporte) |
|
| Bind-Port (nur Netzwerktransporte) |
Sicherheitshinweis: Wenn Sie an eine Nicht-Loopback-Adresse binden, platzieren Sie den Server hinter einem Reverse-Proxy (z. B. nginx, Caddy), der TLS beendet.
MCP-Client-Konfiguration
Claude Desktop
Fügen Sie zu Ihrer Claude-Desktop-Konfigurationsdatei hinzu:
{
"mcpServers": {
"mkdocs": {
"command": "papermoon-mkdocs-mcp",
"args": ["--config", "/path/to/mkdocs.yml"]
}
}
}Hinweis: Wenn Claude Desktop den Befehl nicht finden kann (Failed to spawn process: No such file or directory), verwenden Sie den vollständigen Pfad zur ausführbaren Datei anstelle von nur mkdocs-mcp:
{
"mcpServers": {
"mkdocs": {
"command": "/path/to/.venv/bin/mkdocs-mcp",
"args": ["--config", "/path/to/mkdocs.yml"]
}
}
}Dies ist häufig der Fall, wenn das Paket in einer virtuellen Umgebung installiert ist, deren bin/-Verzeichnis nicht im PATH von Claude Desktop liegt.
Claude Code / VS Code
Fügen Sie .mcp.json im Stammverzeichnis Ihres Projekts hinzu:
{
"mcpServers": {
"mkdocs": {
"command": "papermoon-mkdocs-mcp",
"args": ["--config", "/path/to/mkdocs.yml"]
}
}
}Verfügbare Tools
search
Durchsuchen Sie die Dokumentation mit Keyword-, semantischer oder hybrider Suche.
Parameter | Typ | Standard | Beschreibung |
| str | (erforderlich) | Die Suchanfragezeichenfolge |
| str |
|
|
| int |
| Maximale Anzahl der zurückzugebenden Ergebnisse (1–100) |
Gibt sortierte Ergebnisse mit Pfad, Titel, Relevanzwert (normalisiert 0,0–1,0) und Textausschnitt zurück.
read_document
Liest eine Dokumentationsdatei anhand ihres relativen Pfads.
Parameter | Typ | Standard | Beschreibung |
| str | (erforderlich) | Relativer Pfad vom Docs-Verzeichnis (z. B. |
Gibt den Markdown-Body (ohne Frontmatter), das geparste Frontmatter als separates Feld, die Überschriftenstruktur und Dateimetadaten zurück.
list_documents
Listet alle Dokumentationsdateien auf, optional nach Abschnitt gefiltert.
Parameter | Typ | Standard | Beschreibung |
| str oder null |
| Verzeichnispräfix zum Filtern (z. B. |
Gibt Dokumentmetadaten zurück (Pfad, Titel, Beschreibung, Kategorien, Größe, mtime).
get_project_info
Ruft Metadaten des MkDocs-Projekts ab. Nimmt keine Parameter entgegen.
Gibt Site-Name, Site-URL, Docs-Verzeichnis, Theme, Navigationsbaum, Dokumentanzahl und Indexstatus zurück.
get_document_outline
Ruft die Überschriftenstruktur (Inhaltsverzeichnis) für ein Dokument ab.
Parameter | Typ | Standard | Beschreibung |
| str | (erforderlich) | Relativer Pfad vom Docs-Verzeichnis (z. B. |
Gibt den Dokumenttitel und eine Liste von Überschriften mit Ebene, Text und Anker zurück.
Ausschließen von Dokumenten
Einige Markdown-Dateien sind es nicht wert, über MCP bereitgestellt zu werden – Entwürfe, interne Runbooks, generierte Notizdateien. Fügen Sie eine mcp_exclude-Liste zu mkdocs.yml hinzu:
site_name: My Docs
mcp_exclude:
- drafts/ # any directory named 'drafts', at any depth
- internal/** # anchored: only 'internal/' at the docs root
- "*-scratch.md" # by filename suffix, at any depth
- "!internal/public.md" # re-include one file from a broader ruleAusschlüsse gelten überall gleichzeitig. Ein ausgeschlossenes Dokument fehlt im Navigationsbaum, gelangt nie in den Suchindex, erscheint nicht in list_documents und wird von read_document und get_document_outline abgelehnt – die Ablehnung ist identisch mit der Antwort für eine nicht vorhandene Datei, sodass nicht preisgegeben wird, dass das Dokument existiert.
mcp_exclude betrifft nur diesen MCP-Server. Es ändert nicht, was mkdocs build veröffentlicht.
Mustersyntax
Muster sind im Gitignore-Stil und werden gegen den Pfad eines Dokuments relativ zu docs_dir abgeglichen.
Muster | Entspricht |
| Jedes Verzeichnis namens |
| Nur |
| Alles unter einem |
| Dateien, die auf |
|
|
|
|
|
|
| Eine Zeichenklasse |
| Schließt einen Pfad wieder ein, der von einem früheren Muster ausgeschlossen wurde |
Ein Muster, das
/enthält, ist andocs_dirverankert; eines ohne/passt in beliebiger Tiefe.Ein abschließendes
/beschränkt ein Muster auf Verzeichnisse, sodassdrafts/eine Datei namensdrafts.mdnicht versteckt.Regeln werden in der Reihenfolge ausgewertet, und die letzte Übereinstimmung entscheidet. Setzen Sie
!-Wiedereinschlüsse also nach der Regel, aus der sie ausgenommen werden.Leere Zeilen und
#-Kommentare werden ignoriert.
Neu ausgeschlossene Dateien werden beim nächsten Lauf aus dem Index entfernt, und das Entfernen eines Musters bringt sie zurück – es ist nicht nötig, .mkdocs-mcp.db zu löschen.
Architektur
src/mkdocs_mcp/
config.py -- MkDocs config detection and nav parsing
exclusions.py -- mcp_exclude pattern matching
repository.py -- SQLite schema and CRUD operations
indexer.py -- Index orchestration with incremental updates
searcher.py -- Keyword, vector, and hybrid search
server.py -- FastMCP server with 5 tool definitions
utils.py -- Path validation, frontmatter parsing, text extraction
models.py -- Pydantic response modelsBeim Start liest der Server mkdocs.yml, scannt das Docs-Verzeichnis und erstellt (oder aktualisiert inkrementell) einen SQLite-FTS5-Index. Suchanfragen treffen direkt auf den Index; die Vektorsuche bettet die Abfrage mit all-MiniLM-L6-v2 ein und vergleicht sie mit gespeicherten Dokument-Embeddings. Der Hybridmodus führt beide Ergebnislisten mithilfe von Reciprocal Rank Fusion zusammen.
Entwicklung
git clone https://github.com/aspect-build/mkdocs-mcp.git
cd mkdocs-mcp
pip install -e ".[dev]"
pytestLinting und Typprüfung:
ruff check .
mypy src/Anforderungen
Python >= 3.10
Erforderlich: fastmcp (>=3.0, <4), pydantic (>=2.0, <3), pyyaml (>=6.0), markdown (>=3.4)
Optional (Vektorsuche): sentence-transformers (>=3.0), numpy (>=1.24)
Lizenz
Siehe LICENSE für Details.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Read-only MCP server for the OrchestKit docs: full-text search + Markdown fetch. No auth.
Query any docs site via MCP. Submit a URL, ask questions, get cited answers.
Team docs served to AI agents over MCP - search, Markdown reads, version pinning, read audit.
Turn a GitHub repo or docs site into agent-ready context: pack it or search it, over MCP.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables interaction with MkDocs documentation through the MCP protocol, allowing AI assistants to read, search, and retrieve documentation content from MkDocs projects.9MIT
- AlicenseNot gradedqualityCmaintenanceEnables MCP clients to access and read mdbook documentation, including structure, content, and search.203MIT
- AlicenseNot gradedqualityDmaintenanceProvides semantic search over markdown documentation using RAG, allowing natural language queries and integration with MCP clients.1MIT
- FlicenseAqualityDmaintenanceEnables searching documentation from GitHub repositories and web pages via MCP tools, with in-memory indexing and caching for fast retrieval.3-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/papermoonio/mkdocs-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server