使用说明
MCP文档服务器
一种模型上下文协议(MCP)服务器,为Claude Code提供从多个来源直接访问技术文档的权限,从而提供更准确和上下文相关的开发帮助。
概述
此MCP服务器通过提供对以下内容的实时访问来增强Claude Code的功能:
- 电子文档 -完整的API参考和示例
- React文档 -组件API和使用模式
- Node.js文档 -运行时API和指南
- GitHub文档 -存储库内容和API引用
特性
- 智能搜索 -使用智能查询到API映射同时搜索多个文档源
- API参考资料查找 -从真实来源获取特定API和方法的详细文档
- 示例查找器 -通过语法高亮显示查找相关代码示例
- 迁移指南 -版本到版本升级帮助
- 高级缓存 -两层缓存(内存+文件)实现最佳性能
- 安全强化 -SSRF保护、XSS预防、输入验证和安全文件操作
- 双重运输 -支持stdio和HTTP SSE传输,实现灵活部署
- Docker就绪 -使用Docker Compose进行生产部署和安全最佳实践
- 健康监测 -内置健康检查端点位于
/health - 生产就绪测试 -全面的集成测试验证了真实的文档抓取
建筑
src/
├── tools/ # MCP tools (search, api_reference, examples, migration)
├── scrapers/ # Documentation scrapers (Electron, React, Node.js, GitHub)
├── cache/ # Two-tier caching system (memory + file storage)
├── utils/ # Utilities (logging, parsing, cache management)
├── server.ts # MCP server implementation
├── index.ts # Application entry point
└── types.ts # TypeScript definitions and Zod schemas
快速开始
先决条件
- Node.js 20+ (出于安全考虑,建议使用LTS)
- npm 或 纱线
安装
-
克隆并安装:
git clone https://github.com/Liquescent-Development/mcp-docs-server.git cd mcp-docs-server npm install -
配置环境:
cp .env.example .env # Edit .env with your documentation source URLs -
构建并启动:
npm run build npm start
配置
环境变量
创建一个 .env 与您的文档来源一起归档:
# Documentation Sources (at least one required)
DOCS_ELECTRON_URL=https://www.electronjs.org
DOCS_REACT_URL=https://react.dev
DOCS_NODE_URL=https://nodejs.org
DOCS_GITHUB_URL=https://docs.github.com
# GitHub Integration (optional, for higher rate limits)
GITHUB_TOKEN=ghp_your_token_here
# Server Configuration
PORT=3000
NODE_ENV=production
# Caching
CACHE_DIR=./cache
CACHE_TTL=3600
CACHE_STORAGE=both
# Performance
RATE_LIMIT_PER_MINUTE=60
# Logging
LOG_LEVEL=info
Docker部署
# Quick start with Docker
cp docker.env.example docker.env
# Edit docker.env with your configuration
docker-compose up -d
# View logs
docker-compose logs -f
# Check health
curl http://localhost:3000/health
Docker设置包括:
- 加强安保 -非root用户,最小Alpine图像
- 持久存储 -缓存和日志的卷
- 健康监测 -内置健康检查
/health - 资源限制 -CPU和内存限制
- 易于配置 -通过环境变量进行所有设置
看 医生.md 了解详细的Docker部署指南。
使用Claude代码
MCP文档服务器支持两种与Claude Code连接的传输模式:
- 标准运输 (默认)-直接过程通信
- HTTP/SSE传输 -服务器通过HTTP为基于web的客户端发送事件
选项1:标准运输(推荐)
这是桌面Claude Code安装的标准模式。
添加到您的Claude Code MCP配置中(claude_desktop_config.json):
{
"mcpServers": {
"docs": {
"command": "node",
"args": ["/path/to/mcp-docs-server/dist/index.js"],
"env": {
"DOCS_ELECTRON_URL": "https://www.electronjs.org",
"DOCS_REACT_URL": "https://react.dev",
"DOCS_NODE_URL": "https://nodejs.org"
}
}
}
}
选项2:HTTP/SSE传输
此模式非常适合基于web的Claude客户端、容器化部署,或者需要从多个客户端访问服务器。
步骤1:启动HTTP服务器
# Start with both stdio and HTTP endpoints
npm start
# Or using Docker
docker-compose up -d
服务器将在端口3000上启动(可通过以下方式配置 PORT 环境变量),并提供:
- 健康终点:
GET http://localhost:3000/health - MCP SSE端点:
GET http://localhost:3000/mcp - MCP POST端点:
POST http://localhost:3000/mcp?sessionId={sessionId}
步骤2:为HTTP传输配置Claude代码
添加到您的Claude Code MCP配置中:
{
"mcpServers": {
"docs": {
"sse": {
"url": "http://localhost:3000/mcp",
"timeout": 30000
},
"env": {
"DOCS_ELECTRON_URL": "https://www.electronjs.org",
"DOCS_REACT_URL": "https://react.dev",
"DOCS_NODE_URL": "https://nodejs.org"
}
}
}
}
步骤3:连接流程
HTTP/SSE传输的工作原理如下:
- 建立SSE连接:克劳德代码连接到
GET /mcp并接收会话ID - 发送消息:Claude Code将JSON-RPC消息发送到
POST /mcp?sessionId={sessionId} - 接收响应:服务器通过HTTP以JSON-RPC响应进行响应
何时使用每种运输方式
| 运输 | 用例 | 好处 | 注意事项 |
|---|---|---|---|
| 标准输入输出 | 桌面Claude Code,本地开发 | 简单设置,直接通信 | 基于流程,单客户端 |
| HTTP/SSE | Web客户端、Docker、多个客户端 | Web兼容、可扩展、健康检查 | 需要HTTP服务器、网络开销 |
2.可用工具
服务器提供四种MCP工具:
search_documentation
跨多个文档源搜索:
// Claude Code will automatically use this when you ask:
// "How do I create a window in Electron?"
search_documentation({
query: "create browser window",
sources: ["electron"],
type: "api",
limit: 10
})
get_api_reference
获取详细的API文档:
// "Show me the BrowserWindow API documentation"
get_api_reference({
apiName: "BrowserWindow",
source: "electron",
version: "latest"
})
find_examples
查找代码示例:
// "Find TypeScript examples for React hooks"
find_examples({
topic: "hooks",
sources: ["react"],
language: "typescript",
limit: 5
})
get_migration_guide
获取版本迁移指南:
// "How do I migrate from React 17 to 18?"
get_migration_guide({
source: "react",
fromVersion: "17.0.0",
toVersion: "18.0.0"
})
3.对话示例
User: "I need to create an Electron app with a custom menu"
Claude: I'll help you create an Electron app with a custom menu. Let me get the latest documentation for you.
[Claude automatically uses search_documentation and get_api_reference]
Based on the Electron documentation, here's how to create a custom menu:
[Provides accurate, up-to-date code examples from real Electron docs]
发展
设置开发环境
# Install dependencies
npm install
# Run in development mode (with hot reload)
npm run dev
# Run tests
npm test
# Build for production
npm run build
# Lint code
npm run lint
测试
该项目包括一个全面的基于Docker的集成测试套件:
# Run all tests (unit + integration)
npm run test:all
# Run unit tests only
npm run test:unit
# Run integration tests with Docker
docker-compose -f docker-compose.test.yml up --build
# Run specific test suites
cd tests/integration && npm run test:integration
测试覆盖范围:
- MCP协议测试 -完全符合MCP规范
- HTTP传输测试 -SSE连接和CORS验证
- 真实文档测试 -验证从文档源抓取的实际内容
- 安全测试 -XSS、注入、DoS保护、会话隔离
- 健康检查测试 -系统健康和监控
- MCP工具测试 -核心功能验证
测试套件验证真实的文档抓取,确保服务器正确解析并返回来自文档源的实际内容。
看 测试.md 获取详细的测试指南和架构。
添加新文档源
-
创建刮刀 在……里面
src/scrapers/:// src/scrapers/custom-docs.ts import { BaseScraper } from './base.js'; export class CustomDocsScraper extends BaseScraper { constructor(config: ScraperConfig) { super(config, 'custom-docs'); } async scrape(params: Record<string, any>): Promise<ScraperResult> { // Implementation } // ... other required methods } -
添加配置 在……里面
.env:DOCS_CUSTOM_URL=https://customdocs.com -
注册刮刀 在服务器配置中
安全功能
- SSRF保护 -阻止对专用网络和本地主机的请求
- 输入验证 -所有输入都经过Zod模式的净化和验证
- XSS预防 -脚本标签和JavaScript URL自动清理
- 路径横向保护 -源参数验证阻止目录遍历
- 安全日志记录 -从日志中自动编辑敏感数据
- 文件安全性 -受限权限和路径遍历保护
- 错误处理 -不暴露内部细节或堆栈跟踪的安全错误消息
- 会话隔离 -具有适当会话管理的唯一会话ID
- DoS保护 -请求大小限制和速率限制以防止滥用
演出
- 两层缓存 -内存缓存+持久文件存储
- 速率限制 -可配置的每个源请求限制
- 并发处理 -具有受控并发性的批处理请求
- 智能TTL -不同内容类型的缓存持续时间不同
按内容类型缓存TTL:
- 搜索结果:30分钟
- API参考:1小时
- 代码示例:30分钟
- 迁移指南:2小时
文档
- API毫米 -所有MCP工具的完整API参考资料
- 配置.md -详细的配置指南
- CLIENT_EXAMPLES.md -stdio和HTTP传输的实用客户端示例
- 医生.md -Docker部署指南
- 测试/README.md -测试指南和最佳实践
监控和故障排除
健康检查
# Check if server is running
curl http://localhost:3000/health
# View logs
tail -f logs/combined.log
# Check cache statistics
# (Available through logging with debug level)
常见问题
“未配置文档源”
# Ensure at least one DOCS_*_URL is set
echo "DOCS_ELECTRON_URL=https://www.electronjs.org" >> .env
速率限制错误
# Increase rate limit or add GitHub token
RATE_LIMIT_PER_MINUTE=120
GITHUB_TOKEN=your_github_token
缓存权限错误
# Fix cache directory permissions
mkdir -p ./cache
chmod 700 ./cache
有关详细的故障排除,请参阅 配置.md.
生产部署
最低要求
- Node.js 20+ (用于安全更新)
- 2GB内存 (用于缓存)
- 10GB磁盘空间 (用于缓存存储)
- 可靠的互联网 (用于获取文档)
推荐配置
NODE_ENV=production
LOG_LEVEL=warn
CACHE_TTL=7200
RATE_LIMIT_PER_MINUTE=120
CACHE_STORAGE=both
流程管理
# Using PM2
npm install -g pm2
pm2 start dist/index.js --name mcp-docs-server
# Using Docker
docker-compose up -d
贡献
我们欢迎捐款!拜托:
- 分叉 存储库
- 创建 特征分支(
git checkout -b feature/amazing-feature) - 制造 您的更改
- 添加 新功能测试
- 确保 所有测试均通过(
npm test) - 提交 pull请求
开发指南
- 遵循现有的代码风格(ESLint配置)
- 为新功能添加测试
- 根据需要更新文档
- 确保安全最佳实践
许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。
路线图
当前版本(1.0.0)
- 核心MCP工具实现(搜索、API参考、示例、迁移)
- 多源文档抓取(Electron、React、Node.js、GitHub)
- 高级缓存系统(双层内存+文件存储)
- 安全强化(SSRF、XSS、DoS保护、输入验证)
- 双传输支持(stdio+HTTP SSE传输)
- 具有全面集成测试的生产就绪测试
- 真实文档验证(实际内容抓取验证)
- Docker部署与安全最佳实践
未来的增强功能
- 其他来源 -Vue.js、Angular、Python、Rust文档
- AI总结 -智能文档摘要
- 语义搜索 -基于矢量的内容搜索
- 插件系统 -自定义文档源插件
- 实时同步 -实时文档更新
- 分析 -使用指标和性能监控
- GraphQL API -MCP协议的替代方案
- web界面 -基于浏览器的文档资源管理器