文档检索服务

MCP文档服务器为Claude Code提供多源技术文档的实时访问,支持智能搜索、API参考查找、代码示例发现和迁移指南获取等功能,适用于开发辅助和文档查阅场景。

  • by Liquescent-Development
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 Liquescent-Development/mcp-docs-server

使用说明

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 或 纱线

安装

  1. 克隆并安装:

    git clone https://github.com/Liquescent-Development/mcp-docs-server.git
    cd mcp-docs-server
    npm install
    
  2. 配置环境:

    cp .env.example .env
    # Edit .env with your documentation source URLs
    
  3. 构建并启动:

    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连接的传输模式:

  1. 标准运输 (默认)-直接过程通信
  2. 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传输的工作原理如下:

  1. 建立SSE连接:克劳德代码连接到 GET /mcp 并接收会话ID
  2. 发送消息:Claude Code将JSON-RPC消息发送到 POST /mcp?sessionId={sessionId}
  3. 接收响应:服务器通过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 获取详细的测试指南和架构。

添加新文档源

  1. 创建刮刀 在……里面 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
    }
    
  2. 添加配置 在……里面 .env:

    DOCS_CUSTOM_URL=https://customdocs.com
    
  3. 注册刮刀 在服务器配置中

安全功能

  • SSRF保护 -阻止对专用网络和本地主机的请求
  • 输入验证 -所有输入都经过Zod模式的净化和验证
  • XSS预防 -脚本标签和JavaScript URL自动清理
  • 路径横向保护 -源参数验证阻止目录遍历
  • 安全日志记录 -从日志中自动编辑敏感数据
  • 文件安全性 -受限权限和路径遍历保护
  • 错误处理 -不暴露内部细节或堆栈跟踪的安全错误消息
  • 会话隔离 -具有适当会话管理的唯一会话ID
  • DoS保护 -请求大小限制和速率限制以防止滥用

演出

  • 两层缓存 -内存缓存+持久文件存储
  • 速率限制 -可配置的每个源请求限制
  • 并发处理 -具有受控并发性的批处理请求
  • 智能TTL -不同内容类型的缓存持续时间不同

按内容类型缓存TTL:

  • 搜索结果:30分钟
  • API参考:1小时
  • 代码示例:30分钟
  • 迁移指南:2小时

文档

监控和故障排除

健康检查

# 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

贡献

我们欢迎捐款!拜托:

  1. 分叉 存储库
  2. 创建 特征分支(git checkout -b feature/amazing-feature)
  3. 制造 您的更改
  4. 添加 新功能测试
  5. 确保 所有测试均通过(npm test)
  6. 提交 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界面 -基于浏览器的文档资源管理器

支持