pydantic-docs
A Model Context Protocol (MCP) server providing local-first access to Pydantic and Pydantic AI documentation with BM25-powered full-text search.
README
Pydantic Documentation MCP Server
A Model Context Protocol (MCP) server providing local-first access to Pydantic and Pydantic AI documentation with BM25-powered full-text search.
Features
- Local-first architecture - Offline-only mode by default
- BM25 full-text search - Fast semantic search across all docs
- Git-based extraction - Direct from source repositories (no HTML scraping)
- Pre-processed data - JSONL files included for instant setup
- Auto-initialization - Builds indices automatically on first run
- Complete coverage - Pydantic v2 and Pydantic AI documentation
Requirements
- Python 3.12+
- uv package manager
- ~15MB disk space (with indices)
Quick Start
# Clone and install
git clone <repository-url>
cd mcp_pydantic_docs
uv sync
# Server auto-builds indices on first run
uv run mcp-pydantic-docs
MCP Client Configuration
Add to your MCP settings (e.g., cline_mcp_settings.json):
{
"mcpServers": {
"pydantic-docs": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/mcp_pydantic_docs",
"run",
"mcp-pydantic-docs"
]
}
}
}
Architecture
How It Works
- Source Extraction (
source_extractor.py) - Clones Pydantic repos, extracts documentation from markdown/docstrings → JSONL - Index Building (
indexer.py) - Processes JSONL files → BM25 search indices - MCP Server (
mcp.py) - Serves documentation via MCP tools - Shared Utilities (
utils.py) - HTML/text processing, normalization
Directory Structure
mcp_pydantic_docs/
├── mcp_pydantic_docs/ # Source code
│ ├── mcp.py # MCP server
│ ├── source_extractor.py # Git-based doc extraction
│ ├── indexer.py # BM25 index builder
│ ├── utils.py # Shared utilities
│ └── setup.py # Setup CLI
├── data/ # Search data
│ ├── pydantic.jsonl # Pydantic docs (2.9MB, in git)
│ ├── pydantic_ai.jsonl # Pydantic AI docs (3.3MB, in git)
│ ├── *_bm25.pkl # BM25 index (generated)
│ └── *_records.pkl # Document records (generated)
└── docs_raw/ # Source repos (not in git)
├── pydantic/ # Cloned from GitHub
└── pydantic_ai/ # Cloned from GitHub
Data Flow
GitHub Repos → source_extractor.py → JSONL files → indexer.py → BM25 indices → mcp.py → MCP Client
Available Tools
Search & Retrieval
pydantic_search(query, k=10)- Full-text search with BM25 rankingpydantic_get(path_or_url, max_chars=None)- Fetch full documentation pagepydantic_section(path_or_url, anchor)- Extract specific sectionpydantic_api(symbol, anchor=None)- Jump to API documentation
Health & Admin
health_ping()- Server health checkhealth_validate()- Validate search indicespydantic_mode()- Server configurationadmin_cache_status()- Detailed cache statusadmin_rebuild_indices()- Rebuild search indices
Updating Documentation
Rebuild from Existing JSONL
uv run python -m mcp_pydantic_docs.indexer
Extract Fresh Documentation
# Check status
uv run python -m mcp_pydantic_docs.setup --status
# Download and extract from GitHub
uv run python -m mcp_pydantic_docs.setup --download --build-index
# Clean cache
uv run python -m mcp_pydantic_docs.setup --clean
Configuration
Environment Variables
PDA_DOC_ROOT- Pydantic v2 source pathPDA_DOC_ROOT_AI- Pydantic AI source pathPDA_DATA_DIR- Data directory path
Offline Mode
Default: Enabled (OFFLINE_ONLY = True in mcp.py)
- Blocks remote requests
- Validates file paths
- All content from local cache
Development
Run Tests
uv run pytest
Code Quality
uv run black mcp_pydantic_docs/ # Format
uv run ruff check . # Lint
uv run mypy mcp_pydantic_docs/ # Type check
Troubleshooting
Search indices not found:
uv run python -m mcp_pydantic_docs.indexer
Wrong Python version:
uv python install 3.12
Server won't start:
# Test standalone
uv run mcp-pydantic-docs
# Check indices
uv run python -m mcp_pydantic_docs.setup --status
License
MIT License - see LICENSE file.
Contributing
See CONTRIBUTING.md for:
- Development setup
- Code style
- Testing requirements
- Pull request process
Recommended Servers
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.
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.
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.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
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.
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.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
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.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.