返回 MCP 目录
public公开dns本地运行

Documentation Crawler

一个基于MCP协议的开发文档服务器,提供文档爬取、本地加载、精准搜索和详情获取功能,解决AI开发中的文档幻觉问题。

article

README

🚀 MCP 服务器文档

MCP 服务器是一个强大的工具,可用于加载、管理和搜索各类文档。它支持自动加载文档、内置爬虫功能,还提供了丰富的工具接口,能有效提升文档处理的效率。

🚀 快速开始

安装

使用 Node.js 安装 MCP 服务器,可按以下步骤操作:

git clone [仓库地址]
cd mcp-server
npm install

启动服务器

运行以下命令启动 MCP 服务器:

node server.js

默认情况下,服务器将在 http://localhost:3000 启动。

✨ 主要特性

文档加载流程

  • 自动检测和加载:当服务器启动时,会自动扫描并加载位于 docs 目录中的所有 JSON 文件。
  • 备用加载机制:如果项目目录下未找到文档文件,则尝试从当前工作目录加载。
  • 页面 ID 确定:默认情况下,使用 URL 作为页面的唯一标识符,无需额外指定 url 字段。
  • 源名称处理:所有文档来源名称会自动转换为小写以确保一致性。

爬虫功能

系统内置爬虫支持从各类框架的官方文档站点抓取内容并转换为本地可用格式。其特性如下:

  • 多站点支持:支持任意框架和库的文档网站,完全可配置。
  • 选择性爬取:通过包含和排除模式精确控制需要爬取的内容。
  • 智能内容提取:自动识别页面标题、正文内容及相关结构信息。
  • 高并发处理:支持多线程同时爬取,提高效率。
  • 自动转换:将抓取内容自动转换为标准 JSON 格式文档。
  • 容错机制:具备超时处理和重试功能,确保稳定性。

MCP 工具

MCP 服务器提供以下实用工具:

  • search_docs - 文档搜索:可根据关键词搜索文档,还能通过特定参数控制搜索范围和结果数量。当 query 为 "reload" 时,可触发文档重新加载。
  • get_doc_detail - 获取文档详情:根据文档 ID 获取文档的详细信息。

📦 安装指南

使用 Node.js 安装 MCP 服务器:

git clone [仓库地址]
cd mcp-server
npm install

💻 使用示例

基础用法

// 搜索文档
const searchRequest = {
  jsonrpc: "2.0",
  id: "search1",
  method: "tools/call",
  params: {
    name: "search_docs",
    arguments: { 
      query: "组件", 
      source: "taro",
      limit: 5
    }
  }
};

// 获取文档详情
const detailRequest = {
  jsonrpc: "2.0",
  id: "detail1",
  method: "tools/call",
  params: {
    name: "get_doc_detail",
    arguments: { 
      id: "https://docs.taro.zone/docs/components"
    }
  }
};

📚 详细文档

文档格式

文档文件应为 JSON 格式,包含以下结构:

{
  "source": {
    "name": "taro",
    "url": "https://docs.taro.zone/docs"
  },
  "lastUpdated": "2024-03-27T12:00:00Z",
  "pages": {
    "https://docs.taro.zone/docs/components-desc": {
      "title": "组件库说明 | Taro 文档",
      "content": "页面内容..."
    },
    // 更多页面...
  }
}

爬虫配置示例

config.json 中添加以下内容以配置爬虫:

{
  "crawlers": {
    "taro": {
      "url": "https://docs.taro.zone/docs",
      "include": ["components", "tutorial"],
      "exclude": ["deprecated"]
    }
  }
}

MCP 工具参数说明

search_docs - 文档搜索

  • 参数
    • query: 搜索关键词 (字符串, 必须)
    • source: 文档源名称 (字符串, 可选)
    • limit: 最大结果数量 (数字, 可选, 默认为 10)
  • 特殊功能:
    • query 为 "reload" 时,触发文档重新加载。

get_doc_detail - 获取文档详情

  • 参数
    • id: 文档 ID (字符串, 必须)
    • source: 文档源名称 (字符串, 可选)

配置示例

config.json 中配置 MCP 服务器:

{
  "port": 3000,
  "sources": {
    "taro": {
      "url": "https://docs.taro.zone/docs",
      "token": "your_token_here"
    }
  }
}

测试

创建测试文档

docs 目录中创建一个名为 example.json 的文件:

{
  "source": {
    "name": "test",
    "url": "http://localhost/test-docs"
  },
  "lastUpdated": "2024-03-27T12:00:00Z",
  "pages": {
    "/test": {
      "title": "测试页面",
      "content": "这是一个测试文档。"
    }
  }
}

发送测试请求

使用 curl 命令发送请求:

curl http://localhost:3000 -d '{"jsonrpc":"2.0","id":"search1","method":"tools/call","params":{"name":"search_docs", "arguments":{"query":"test"}}}'

错误处理

常见错误

  • 404 Not Found: 请求的资源未找到。
  • 500 Internal Server Error: 服务器内部错误。

日志查看

查看 logs 目录中的日志文件以获取更多信息。

更新日志

v1.0.0

  • 初始版本发布
  • 添加基本功能和文档加载支持

v1.1.0

  • 增加多线程爬取功能
  • 优化文档搜索性能
  • 修复已知错误
help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端