使用说明
Python文档MCP服务器
两个基于Python的MCP服务器,用于文档抓取和读取。复制深受启发 docs-mcp服务器.
概述
- 刮刀服务器:抓取文档网站并将内容存储在SQLite中
- 阅读器服务器:搜索和检索存储的文档
特性
刮刀服务器
- 🕷️ 具有可配置深度和页面限制的网站爬行
- 📄 HTML内容提取(标题、内容、元数据)
- 💾 带FTS5全文搜索的SQLite存储
- 🔧 用于Claude集成的MCP工具
- 💻 CLI可直接使用
阅读器服务器
- 🔍 在所有文档中搜索关键字
- 📚 列出可用库和版本
- 📖 按库浏览文档
- 🎯 按URL检索特定文档
- 🔧 用于Claude集成的5个MCP工具
安装
# Clone the repository
cd docs-mcp-server-python
# Install dependencies
uv sync --extra dev
Docker部署
使用Docker部署两台服务器进行生产或容器化开发。
快速开始
# Build images
cd docker && ./build.sh
# Deploy services
cd ../deploy && docker-compose up -d
两台服务器现在都在运行:
- 刮刀MCP服务器: http://localhost:6281
- 读取器MCP服务器: http://localhost:6282
主要特点
- 🐳 容器化:隔离、可重复的环境
- 🔒 网络隔离:阅读器服务器无法访问互联网(安全)
- 💾 共享数据库:通过Docker卷的单个SQLite数据库
- 🔄 自动重启:失败时重新启动服务
- ⚙️ 可配置的:通过自定义
.env文件
建筑
Scraper (6281) ──┬──> Shared SQLite Database
│
Reader (6282) ──┘ (Network Isolated)
文档
- 建筑图片:参见 docker/README.md
- 部署指导:参见 部署/README.md
- 详情:完整的说明、故障排除和配置选项
Docker命令
# Service management
docker-compose up -d # Start all
docker-compose logs -f reader # View logs
docker-compose restart scraper # Restart service
docker-compose down # Stop all
# Individual services
docker-compose up -d scraper # Start scraper only
docker-compose stop reader # Stop reader only
用法
刮刀服务器
通过CLI
# Scrape React documentation
uv run python scraper/cli.py scrape \
--url https://react.dev \
--library react \
--version 19.0 \
--max-depth 2 \
--max-pages 50
# View all options
uv run python scraper/cli.py scrape --help
通过MCP服务器(本地开发)
添加到您的MCP客户端配置(例如,Claude Desktop)中,用于基于本地stdio的执行:
{
"mcpServers": {
"docs-scraper": {
"command": "uv",
"args": [
"--directory",
"/path/to/docs-mcp-server-python",
"run",
"python",
"scraper/server.py"
],
"env": {
"MCP_TRANSPORT": "stdio"
}
}
}
}
然后使用 scrape_documentation 克劳德的工具。
注: 有关Docker部署,请参阅 Docker容器的MCP配置 在......下面
阅读器服务器
通过MCP服务器(本地开发)
添加到您的MCP客户端配置中,用于基于本地stdio的执行:
{
"mcpServers": {
"docs-reader": {
"command": "uv",
"args": [
"--directory",
"/path/to/docs-mcp-server-python",
"run",
"python",
"reader/server.py"
],
"env": {
"MCP_TRANSPORT": "stdio"
}
}
}
}
可用的MCP工具:
search_documentation-使用关键字搜索list_libraries-列出所有可用库list_versions-列出库的版本get_document-按URL检索文档browse_library-浏览库中的所有文档
Docker容器的MCP配置
服务器在Docker中使用HTTP传输运行,使其可以作为网络服务访问。
使用Claude CLI(推荐)
启动Docker容器后(docker-compose up -d),添加服务器:
# Add scraper server
claude mcp add --transport http docs-scraper http://localhost:6281/mcp
# Add reader server
claude mcp add --transport http docs-reader http://localhost:6282/mcp
手动配置
或者,在MCP客户端配置中添加:
刮刀服务器(Docker)
{
"mcpServers": {
"docs-scraper": {
"transport": "http",
"url": "http://localhost:6281/mcp"
}
}
}
阅读器服务器(Docker)
{
"mcpServers": {
"docs-reader": {
"transport": "http",
"url": "http://localhost:6282/mcp"
}
}
}
要求:
- Docker容器必须正在运行(
docker-compose up -d) - 服务器使用HTTP传输进行远程访问
- 数据库通过绑定挂载在容器之间共享
deploy/data/
注: 服务器自动检测传输模式。默认情况下,它们使用HTTP(适用于Docker),但您可以通过设置强制stdio模式 MCP_TRANSPORT=stdio 环境变量。
配置
环境变量(可选):
# Database location (default: ~/.docs-mcp/documentation.db)
export DOCS_MCP_DB_PATH=/path/to/database.db
# Scraping settings
export DOCS_MCP_USER_AGENT="MyBot/1.0"
export DOCS_MCP_TIMEOUT=30
export DOCS_MCP_DELAY=0.5
export DOCS_MCP_MAX_DEPTH=3
export DOCS_MCP_MAX_PAGES=100
项目结构
docs-mcp-server-python/
├── scraper/ # Scraper server
│ ├── server.py # MCP server
│ ├── cli.py # CLI commands
│ ├── crawler.py # Site crawler
│ ├── extractors/ # Content extractors
│ │ ├── base.py # Base interface
│ │ └── html.py # HTML extractor
│ └── strategies/ # Scraping strategies
│ ├── base.py # Base interface
│ └── site_crawler.py # Site crawler strategy
├── reader/ # Reader server
│ ├── server.py # MCP server
│ ├── search.py # Search functionality
│ └── query.py # Query builder
├── shared/ # Shared components
│ ├── database.py # Database manager
│ ├── schema.py # Database schema
│ ├── models.py # Data models
│ └── config.py # Configuration
├── docker/ # Docker image building
│ ├── Dockerfile.scraper # Scraper image
│ ├── Dockerfile.reader # Reader image
│ ├── build.sh # Build script
│ ├── push.sh # Push to registry
│ └── README.md # Build documentation
├── deploy/ # Deployment configuration
│ ├── docker-compose.yml # Service orchestration
│ ├── .env.example # Configuration template
│ └── README.md # Deployment guide
└── tests/ # Tests
数据库模式
使用FTS5全文搜索的简单模式:
documents (
id, library, version, url, title, content,
raw_html, metadata, scraped_at, updated_at
)
documents_fts (FTS5 virtual table for search)
发展
运行测试
# Run all tests
uv run pytest -v
# Run specific test file
uv run pytest tests/shared/test_database.py -v
类型检查
uv run mypy shared/ scraper/ reader/ --strict
代码检查
uv run ruff check .
uv run ruff format .
示例
示例1:报废和搜索
# 1. Scrape Python documentation
uv run python scraper/cli.py scrape \
--url https://docs.python.org/3/ \
--library python \
--version 3.13
# 2. Start reader server and search
# (In Claude with reader MCP configured)
# Use: search_documentation("async generators")
示例2:浏览库
# Start reader MCP server
# (In Claude)
# Use: list_libraries()
# Use: browse_library("python", "3.13")
路线图
看 实施计划 用于:
- 未来的增强功能(剧作家、语义搜索等)
- 测试策略
- 详细实施说明
MVP状态
✅ 完成 -所有核心功能均已实现:
- 第一阶段:基础和共享组件
- 第二阶段:刮刀服务器(MCP+CLI)
- 第三阶段:阅读器服务器(MCP工具)
许可证
麻省理工学院
致谢
复制深受启发 docs-mcp服务器.
