MkDocs Material MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MkDocs Material MCP ServerSearch MkDocs Material for how to add admonitions"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 |
| Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL) | WARNING |
| Comma-separated list of site configurations in format | 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-mcpRunning Tests
# Install with dev dependencies
pip install -e ".[dev]"
# Run tests
pytest -v
# Run tests with coverage
pytest --cov=mkdocs_mcp --cov-report=htmlTests 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:
Update version in
pyproject.tomlCreate a new release on GitHub with a tag (e.g.,
v0.1.0)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 toolsget_mkdocs-material_pageA
Get page from mkdocs-material documentation. Returns 'url' field that MUST be included in responses to users.
| Name | Required | Description | Default |
|---|---|---|---|
| location | Yes | Page location from search results (e.g., "getting-started/") |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default: 10) | |
| query | Yes | Search query string |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
2 tool updates
v0.1.0- First observed
get_mkdocs-material_page - First observed
search_mkdocs-material
TDQS
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.
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.
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.
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
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
Query any docs site via MCP. Submit a URL, ask questions, get cited answers.
Provides access to Google's public developer documentation.
Search Multilo's docs, fetch any public page as clean Markdown, and read the changelog.
Versioned documentation registry and semantic search for AI tools and coding assistants.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables 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.14921MIT
- AlicenseNot gradedqualityDmaintenanceEnables 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.10MIT
- AlicenseNot gradedqualityDmaintenanceEnables 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
- AlicenseNot gradedqualityCmaintenanceEnables interaction with MkDocs documentation through the MCP protocol, allowing AI assistants to read, search, and retrieve documentation content from MkDocs projects.9MIT
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/ojacques/mkdocs-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server