Skip to main content
Glama
ojacques

MkDocs Material MCP Server

by ojacques

MkDocs Material MCP Server

Model Context Protocol (MCP) server for documentation sites built with MkDocs Material.

This MCP server provides tools to search and retrieve documentation from any MkDocs Material-powered documentation site. By default, it connects to the MkDocs Material documentation itself.

Features

  • Search Documentation: Find relevant pages across the entire documentation site

  • Retrieve Pages: Get full page content in markdown format with source URLs

  • Multi-site Support: Configure multiple MkDocs Material sites simultaneously

  • Dynamic Tool Generation: Automatically creates MCP tools for each configured site

Related MCP server: MkDocs MCP Plugin

Prerequisites

Installation Requirements

  • Install uv from Astral or the GitHub README

  • Install Python 3.10 or newer using uv python install 3.10 (or a more recent version)

Installation

Kiro CLI

Configure the MCP server in your MCP client (like Kiro CLI) configuration (~/.kiro/settings/mcp.json):

{
  "mcpServers": {
    "mkdocs": {
      "command": "uvx",
      "args": ["mkdocs-mcp@latest"],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR"
      },
      "disabled": false,
      "autoApprove": ["search_mkdocs-material", "get_mkdocs-material_page"]
    }
  }
}

Custom MkDocs Material Site

To use with your own MkDocs Material-powered documentation:

{
  "mcpServers": {
    "my-docs": {
      "command": "uvx",
      "args": ["mkdocs-mcp@latest"],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR",
        "MKDOCS_SITES": "mysite=https://your-docs-site.com"
      },
      "disabled": false,
      "autoApprove": ["search_mysite", "get_mysite_page"]
    }
  }
}

Multiple Sites

Configure multiple MkDocs Material sites:

{
  "mcpServers": {
    "mkdocs-multi": {
      "command": "uvx",
      "args": ["mkdocs-mcp@latest"],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR",
        "MKDOCS_SITES": "mkdocs-material=https://squidfunk.github.io/mkdocs-material,mysite=https://your-docs-site.com"
      },
      "disabled": false,
      "autoApprove": ["search_mkdocs-material", "get_mkdocs-material_page", "search_mysite", "get_mysite_page"]
    }
  }
}

Windows Installation

For Windows users, the MCP server configuration format is slightly different:

{
  "mcpServers": {
    "mkdocs": {
      "disabled": false,
      "timeout": 60,
      "type": "stdio",
      "command": "uv",
      "args": [
        "tool",
        "run",
        "--from",
        "mkdocs-mcp@latest",
        "mkdocs-mcp.exe"
      ],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR"
      }
    }
  }
}

Environment Variables

Variable

Description

Default

FASTMCP_LOG_LEVEL

Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL)

WARNING

MKDOCS_SITES

Comma-separated list of site configurations in format key=url

mkdocs-material=https://squidfunk.github.io/mkdocs-material

Performance

Large Documentation Sites: Sites with very large search indexes use async loading with a 1.5-second timeout:

  • First search returns a "loading" message if index isn't ready

  • The LLM can retry the search (index loads in background)

  • Once loaded, the index is cached and searches are instant

Search Capabilities

This MCP server provides basic search functionality:

  • Phrase matching: Exact phrase matches are prioritized (highest relevance)

  • Word matching: Falls back to matching individual words when exact phrases don't match

  • Scoring: Results are ranked by relevance (exact matches first, then by word count)

The LLM interprets search results and provides meaningful answers, making up for the simpler search algorithm with intelligent result processing.

Corporate Network Support

For corporate environments with proxy servers:

{
  "env": {
    "HTTPS_PROXY": "http://proxy.company.com:8080",
    "HTTP_PROXY": "http://proxy.company.com:8080"
  }
}

For authenticated proxies:

{
  "env": {
    "HTTPS_PROXY": "http://username:password@proxy.company.com:8080"
  }
}

Basic Usage

Example queries:

  • "Search MkDocs Material documentation for admonitions"

  • "How do I use code blocks in MkDocs Material?"

  • "What are the customization options for MkDocs Material?"

About MkDocs Material

MkDocs Material is a powerful documentation framework built on top of MkDocs. This MCP server works with any documentation site built using MkDocs Material.

Development

From Source

git clone https://github.com/ojacques/mkdocs-mcp.git
cd mkdocs-mcp
pip install -e .
mkdocs-mcp

Running Tests

# Install with dev dependencies
pip install -e ".[dev]"

# Run tests
pytest -v

# Run tests with coverage
pytest --cov=mkdocs_mcp --cov-report=html

Tests are automatically run on push and pull requests via GitHub Actions.

Publishing

This package is automatically published to PyPI when a new release is created on GitHub:

  1. Update version in pyproject.toml

  2. Create a new release on GitHub with a tag (e.g., v0.1.0)

  3. GitHub Actions will automatically build and publish to PyPI

Note: Requires PyPI trusted publishing to be configured for the repository.

License

MIT

Available Tools

2 tools
get_mkdocs-material_pageA

Get page from mkdocs-material documentation. Returns 'url' field that MUST be included in responses to users.

ParametersJSON Schema
NameRequiredDescriptionDefault
locationYesPage location from search results (e.g., "getting-started/")

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral disclosure burden. It does disclose an important usage constraint: the returned 'url' field MUST be included in responses to users. It does not elaborate on additional behaviors such as read-only guarantees, error conditions, or page content format, but the simple 'get' operation implies a safe read.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no redundant words. The action is front-loaded, and the critical instruction about the 'url' field is placed clearly in the second sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has only one parameter, fully described in the schema, and an output schema exists so return values are covered. The description plus parameter description together tell an agent how to invoke the tool and what to do with the result. It could be more complete by explicitly stating 'use after search_mkdocs-material', but that relationship is implied.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter, so the baseline is 3. The tool description adds no extra meaning about the 'location' parameter beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get') and resource ('page from mkdocs-material documentation'), so an agent knows what the tool does. It does not explicitly differentiate it from the sibling search_mkdocs-material, though 'get page' versus 'search' is a recognizable contrast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description itself gives no direct when-to-use guidance. However, the parameter description says 'Page location from search results', which implies this tool should be used after search_mkdocs-material returns a location. There is no explicit alternative or exclusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_mkdocs-materialA

Search mkdocs-material documentation. Returns results with 'url' field that MUST be included in responses to users.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return (default: 10)
queryYesSearch query string

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It usefully discloses that results contain a 'url' field that must be included in user-facing responses. It does not mention pagination, rate limits, or edge cases, but the read-only nature of a search tool is reasonably apparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no filler or redundant content. The core operation is front-loaded, and the important requirement about the 'url' field is stated immediately and clearly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter search tool with an output schema, the description is largely complete and adds the critical instruction about including the 'url' field in responses. The only notable gap is the lack of guidance on when to use this tool versus get_mkdocs-material_page.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both 'query' and 'limit' already documented in the input schema. The description adds no parameter-specific meaning beyond what the schema provides, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: 'Search mkdocs-material documentation.' This clearly identifies the tool's purpose. It does not explicitly differentiate from get_mkdocs-material_page, though the search-vs-get distinction is reasonably implied by the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies the tool is for searching documentation, which provides basic usage context. However, it does not specify when to prefer this tool over the sibling get_mkdocs-material_page, nor does it provide any exclusion criteria or alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 2 tool updatesv0.1.0
    • First observedget_mkdocs-material_page
    • First observedsearch_mkdocs-material

TDQS

A3.7/5.0
Disambiguation5/5

Search and get page have clearly distinct purposes: one retrieves search results across the documentation, the other fetches a specific page. There is no meaningful overlap in action or expected usage.

Naming Consistency4/5

Both tools follow a snake_case verb-plus-product pattern: search_mkdocs-material and get_mkdocs-material_page. The only minor inconsistency is that the second tool includes '_page' while the first does not, but the naming remains predictable.

Tool Count3/5

Two tools is a thin surface, though search and page retrieval are the core operations for documentation lookup. This fits a narrow, focused server but sits at the low end of the appropriate range.

Completeness4/5

The pair covers the essential documentation workflow: discover relevant results via search, then retrieve a specific page. Missing broader navigation or listing capabilities is a minor gap, but typical documentation lookups are fully supported.

Maintenance

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables Claude and other LLMs to search through any published MkDocs documentation site using the Lunr.js search engine, allowing the AI to find and summarize relevant documentation for users.
    149
    21
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to interact with MkDocs documentation through intelligent search (keyword, vector, and hybrid), document retrieval, and automatic indexing. Automatically detects and launches MkDocs projects for seamless documentation querying.
    10
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to access and search MkDocs documentation through tools for full-text search, page navigation, and code block extraction. It serves documentation pages as readable resources and provides structural outlines to help LLMs navigate documentation content.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables interaction with MkDocs documentation through the MCP protocol, allowing AI assistants to read, search, and retrieve documentation content from MkDocs projects.
    9
    MIT

Latest Blog Posts

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/ojacques/mkdocs-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server