mcpField
D
devdocs-mcp

devdocs-mcp

本地服务
github.com/madhan-g-p开发工具1329 周前更新

关于 devdocs-mcp

DevDocs-MCP 是本地 MCP 服务,为编码 Agent 提供来自 DevDocs.io 的版本固定文档。它按项目依赖版本筛选并缓存内容,支持离线检索。

主要功能

  1. 01按项目依赖匹配文档版本
  2. 02缓存文档以供离线使用
  3. 03模糊搜索并排序结果
  4. 04输出结构化文档内容
  5. 05使用 SQLite 管理元数据

适用场景

  1. 01查询项目依赖对应的 API 文档
  2. 02在离线环境检索已缓存文档
  3. 03减少编码时的版本混淆

MCP 相关

作为 MCP 服务,提供文档摄取和检索能力;支持 stdio,也可通过 HTTP SSE 连接远程客户端。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"madhan-g-p-devdocs": {
"command": "npx",
"args": [
"-y",
"@madhan-g-p/devdocs-mcp-server"
]
}
}
}
启动命令npx -y @madhan-g-p/devdocs-mcp-server

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@madhan-g-p/devdocs-mcp-server1.0.0

工具

5

收录的工具列表 · 更新于 2 周前

参数类型必填说明
limitnumber否要返回的最大结果数(默认值为 5)
querystring是搜索查询(例如,“react hooks”“python list”)
projectIdstring否可选的项目 ID,用于优先显示与项目依赖项相关的文档

详细介绍

DevDocs-MCP:AI Agent 的权威文档来源

README 配图 README 配图

借助本地、版本感知且权威的文档,消除 AI 的幻觉。

DevDocs-MCP 是一个 Model Context Protocol(MCP)服务,为 AI 助手(Claude、RooCode、Cline、Copilot 等)提供来自 DevDocs.io 的固定版本、确定性文档。它充当本地文档智能层,确保你的 Agent 始终获得正确的 API 上下文,不受网络延迟或训练数据偏差的影响。

此服务遵循 MCP 提出的 MCP 服务标准。整个生态系统中的 AI 工具和 Agent(包括 Anthropic、OpenAI 和 Google 等提供商的产品)都在采用该标准。


⚠️ 项目状态说明 ⚠️ 此项目正处于活跃且快速的开发阶段。目前仍需测试现有功能,并实现更多新功能,例如优化缓存、自动更新最新文档并支持按需更新、优化查询等。设计决策、API 和项目结构预计会根据开发者社区的意见、评审和反馈不断演进。我热忱欢迎大家参与讨论、提出批评和贡献代码,共同推动项目朝正确的方向发展。


📑 目录

  1. 概述
  2. 核心功能
  3. 快速开始
  4. 安装与设置
  5. AI Agent 配置
  6. 延伸阅读

🎯 概述

本项目是什么
  • 使用 NestJS(TypeScript)编写的本地 MCP 服务。
  • 为文档元数据和内容提供确定性权威来源。
  • 按需摄取引擎,可在本地缓存 DevDocs。
  • 项目感知型上下文管理器,可根据你的 package.json 版本固定文档。
本项目不是什么
  • ❌ 不是 AI Agent 或代码生成器。
  • ❌ 不是网页爬虫(它使用结构化的 DevDocs 数据集)。
  • ❌ 不是 DevDocs UI 的替代品。
  • ❌ 不是托管式 SaaS(它 100% 在本地运行)。
项目缘起(面临的问题)

现代 AI 编码 Agent 面临三大难题:

  1. 幻觉:猜错 API 签名或使用已弃用的方法。
  2. 延迟:每次查询都获取实时网页文档,速度很慢。
  3. 版本漂移:混淆 React 18 与 React 19 的功能。

解决方案:DevDocs-MCP 从本地存储中即时检索文档,并根据项目的特定依赖版本进行筛选。

工作原理

DevDocs-MCP 充当 IDE Agent 与文档来源之间的中间件。

graph TD
    Agent["AI Agents"] -->|MCP Search/Explain| Server["DevDocs-MCP Server"]
    Server -->|Metadata| DB[(SQLite - sql.js)]
    Server -->|Content| FS[Local Disk - JSON Cache]
    Server -.->|Lazy Fetch| Web[DevDocs.io API]

🚀 核心功能

  • 离线优先:文档缓存在本地;摄取完成后无需联网。
  • 排序模糊搜索:即时查找相关条目(例如“intersection observer”)。
  • 版本感知:自动映射到项目中指定的库版本。
  • 纯 Node 架构:使用 sql.js,无需原生依赖(不需要 Python/C++ 构建步骤)。
  • 结构化输出:返回简洁、针对 LLM 优化的内容。

⚡ 快速开始

  1. 克隆并安装
git clone https://github.com/madhan-g-p/DevDocs-MCP.git
cd DevDocs-MCP
pnpm install
  1. 配置环境
cp .env.example .env
# Edit .env: Set DEVDOCS_DATA_PATH to where you want to store docs.
  1. 构建并运行
pnpm build
pnpm start:prod

**注意:**开发和贡献时必须使用 pnpm。


🛠️ 安装与设置

DevDocs-MCP 通过 pnpm 实现轻松设置。它是一个仅限 Node.js 的项目。

前置条件
  • Node.js 18+(已在 18.x 和 20.x 上测试)。
🐳 Docker 用法

DevDocs-MCP 专为轻量化和持久化而设计。由于它会下载并缓存大型文档数据集,因此正确管理数据卷至关重要。

方法 A:Docker Compose(动态且持久)

这是推荐的方法。通过 .env 文件中的 DEVDOCS_VOLUME_SOURCE 变量,它支持 3 种存储模式。

  1. 在 .env 中配置首选存储方式:

    # 模式 1:命名卷(默认 — 由 Docker 管理)
    DEVDOCS_VOLUME_SOURCE=devdocs_data
    
    # 模式 2:主机路径(Docker 外部 — 本地文件夹)
    # DEVDOCS_VOLUME_SOURCE=./my-docs-storage
    
  2. 启动服务:

    docker compose up -d
    

灵活性:每次启动容器时,只需更改 .env 文件中的 DEVDOCS_VOLUME_SOURCE,即可指定新卷(从头开始)或现有卷(保留数据)。mcp.db(数据库库)和 data/(文档下载文件)都会存储在此卷中。

方法 B:Docker Run(手动)

如果你只想直接从 Docker Hub 运行公开镜像:

docker run -d -p 3000:3000 \
  -v "devdocs_data:/app/data" \
  --name devdocs-mcp \
  madhandock1/devdocs-mcp:latest
💾 数据策略

项目使用 /app/data 这一个挂载点,其中包含:

  • /app/data/mcp.db:SQLite 注册表。
  • /app/data/docs/:缓存的文档文件。 这种统一结构让你只需移动一个文件夹或卷,就能轻松备份或迁移整个文档库。
配置(.env)
变量描述默认值
DEVDOCS_DATA_PATH存储下载的文档 JSON 的路径。./data
MCP_DB_PATHSQLite 元数据数据库的路径。mcp.db
LOG_LEVEL日志详细程度(debug、info、warn、error)。info
导入文档

服务器连接到你的 Agent 后,使用 ingest 工具下载与你的技术栈对应的文档: 服务器启动并运行后,Agent 会负责处理;它应该会列出可用工具,并据此作出决定。

{
  "dependencies": {
    "react": "18.2.0",
    "typescript": "5.0.0"
  }
}

注意:用于导入的 Devdocs 获取 URL 定义在 src/config/constants.ts 中。此 URL 当前指向正确且官方支持的路径。如果 devdocs 社区未来更改此路径,可能需要相应更新配置。
此方法不涉及网页抓取,而是采用 DevDocs 使用的相同支持机制来提供离线使用的文档,类似于用户在 DevDocs 中下载文档的方式。


🤖 AI Agent 配置

RooCode / Cline / Claude Desktop(推荐:STDIO)

将以下内容添加到 mcp_settings.json。设置 cwd(当前工作目录)后,服务会自动从 .env 文件加载配置,让你可以使用相对路径存储数据。

{
  "mcpServers": {
    "devdocs": {
      "command": "node",
      "args": ["dist/main.js"],
      "cwd": "file://path/to/your/DevDocs-MCP"
    }
  }
}

专业提示:在 cwd 中使用项目的绝对路径。这样服务就能找到 .env,并使用你在其中定义的 DEVDOCS_DATA_PATH 和 MCP_DB_PATH(例如 ./data 或 mcp.db),让设置更易于移植!

远程 / Web 客户端(HTTP SSE)

如果需要通过端口公开服务(用于生产环境 / 远程设置):

  1. 使用端口标志启动服务:
    node dist/main.js --port 3000
    
  2. 配置客户端:
    • SSE URL:http://your-server:3000/mcp/sse
    • 类型:SSE(大多数 MCP 客户端都支持,至少我猜是这样)

📖 延伸阅读


灵感来自 @Nathaniel Whiteinge 的项目 devdocs-local、 devdocs-local-demo

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。