MkDocs MCP Server

MkDocs MCP Server

A generic, configurable MCP server that makes any MkDocs documentation site searchable and explorable from MCP clients.

Category
Visit Server

README

MkDocs MCP Server

Run Tests Release GitHub release (latest by date) GHCR image License Docs

A generic, configurable Model Context Protocol server that makes any MkDocs documentation site searchable and explorable from MCP clients (Claude CLI, IDEs, …).

Nothing is organization- or project-specific: the docs repo, URLs, tenants, topic taxonomy, and server identity are all supplied via configuration.

  • Transport: streamable-http
  • Search: BM25 (rank-bm25) with an optional self-hosted semantic/hybrid layer (sentence-transformers, fused with Reciprocal Rank Fusion)
  • Source of truth: the docs git repo (with a search_index.json and a local fallback)
  • Built on established libraries — FastMCP (auth, middleware, transport), markdown-it-py + python-markdown + python-frontmatter (parsing), pydantic-settings, structlog, prometheus-client.

Quick start (local)

uv pip install -e .

export MKDOCS_MCP_SOURCE_MODE=local
export MKDOCS_MCP_REPO_DIR=/path/to/your/mkdocs-repo
export MKDOCS_MCP_MKDOCS_CONFIG=mkdocs.yml
export MKDOCS_MCP_BASE_URL=https://docs.example.com
export MKDOCS_MCP_AUTH_MODE=none

mkdocs-mcp        # serves http://0.0.0.0:8000/mcp

Health: GET /health, readiness: GET /ready, metrics: :9000/metrics.

Connect from Claude CLI (HTTP)

{
  "mcpServers": {
    "mkdocs-docs": {
      "type": "http",
      "url": "https://mkdocs-mcp.example.com/mcp",
      "headers": { "Authorization": "Bearer <token>" }
    }
  }
}

Configuration

All settings are env vars prefixed MKDOCS_MCP_ (see src/mkdocs_mcp/config.py).

Var Default Notes
MKDOCS_MCP_SOURCE_MODE local git | search_index | local
MKDOCS_MCP_GIT_URL — docs repo to clone (when git)
MKDOCS_MCP_MKDOCS_CONFIG mkdocs.yml supplies the nav tree
MKDOCS_MCP_BASE_URL http://localhost:8000 used for deep-links
MKDOCS_MCP_TENANTS [] restrict tenant segments (else first path segment)
MKDOCS_MCP_TOPICS_FILE — YAML topic taxonomy (else vendor-neutral default)
MKDOCS_MCP_FEATURED_TOPICS k8s/argocd/terraform/vault/gitlab topics that get a find_<topic>_docs alias
MKDOCS_MCP_EMBEDDINGS_ENABLED false needs the vectors extra
MKDOCS_MCP_AUTH_MODE bearer none | bearer
MKDOCS_MCP_BEARER_TOKENS / _ADMIN_TOKENS — comma-separated
MKDOCS_MCP_REINDEX_INTERVAL_MINUTES 30 0 disables

Custom topic taxonomy

# topics.yml  (MKDOCS_MCP_TOPICS_FILE=/path/topics.yml)
topics:
  payments:
    paths: ["/payments/"]
    keywords: ["checkout", "billing", "invoice"]

Tools

Search: search_docs, search_section, semantic_search Navigation: get_page, get_section, list_categories, list_pages, browse_tree Knowledge: summarize_page, related_documents, suggest_reading Discovery: recent_changes, find_runbooks, find_examples Topics: find_by_topic (+ find_<topic>_docs aliases generated from FEATURED_TOPICS) Admin: rebuild_index (admin scope), health_check, get_statistics

Auth

Static bearer tokens are verified by FastMCP's StaticTokenVerifier; admin tokens carry the admin scope, required by rebuild_index. To use JWT or an OAuth provider (Keycloak, GitHub, Google, …), change build_verifier in src/mkdocs_mcp/auth.py to the matching FastMCP provider — the tools are unaffected.

Semantic / hybrid search (optional)

uv pip install -e '.[vectors]'
export MKDOCS_MCP_EMBEDDINGS_ENABLED=true
export MKDOCS_MCP_EMBEDDINGS_MODEL=BAAI/bge-m3   # multilingual, self-hosted

Embeddings run in-process; no external embedding API is used.

Tests

uv pip install -e '.[dev]'
pytest
ruff check src tests

Contributing

See docs/CONTRIBUTING.md for development setup, validation, pull request expectations, and commit message rules.

Releases

This repository uses Semantic Versioning with semantic-release and Conventional Commits.

When a branch is merged into main, the release workflow analyzes the commits since the previous release, calculates the next version, creates the Git tag automatically, builds Python and Helm package artifacts, publishes a GitHub release with generated release notes, and pushes a GHCR image. The tag starts with v (for example, v1.2.3).

The release image is published to ghcr.io/<owner>/<repo> with these tags:

  • <version> such as 1.2.3
  • <major>.<minor> such as 1.2
  • sha-<commit-sha>
  • latest

Release notes are grouped into:

  • Features
  • Bug Fixes
  • Performance
  • Refactoring

Low-signal commit types such as docs:, test:, chore:, ci:, and build: are hidden from published release notes unless they include a breaking change.

Use standard Conventional Commit syntax:

  • feat: add source adapter -> minor release
  • fix: handle empty search index -> patch release
  • perf: reduce indexing allocations -> patch release
  • refactor: split parser metadata handling -> no version bump, but shown in release notes
  • feat!: change configuration names -> major release
  • BREAKING CHANGE: configuration names changed in the commit footer -> major release

Deployment

Container + Helm chart for OKD/OpenShift live in charts/mkdocs-mcp/. See charts/mkdocs-mcp/README.md.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured