
docs-mcp-server
一个模型上下文协议(MCP)服务器,用于抓取、索引和搜索第三方软件库和软件包的文档,支持版本控制和混合搜索。
README
docs-mcp-server MCP 服务器
一个用于获取和搜索第三方软件包文档的 MCP 服务器。
本项目提供了一个模型上下文协议 (MCP) 服务器,旨在抓取、处理、索引和搜索各种软件库和软件包的文档。它从指定的 URL 获取内容,使用语义分割技术将其分割成有意义的块,使用 OpenAI 生成向量嵌入,并将数据存储在 SQLite 数据库中。该服务器利用 sqlite-vec
实现高效的向量相似度搜索,并利用 FTS5 实现全文搜索功能,将它们结合起来以获得混合搜索结果。它支持版本控制,允许存储和查询不同库版本的文档(包括未版本控制的内容)。
抓取过程由异步作业队列 (PipelineManager
) 管理,允许多个抓取作业并发运行。
该服务器公开了以下 MCP 工具:
- 启动抓取作业 (
scrape_docs
):立即返回一个jobId
。 - 检查作业状态 (
get_job_status
):检索特定作业的当前状态和进度。 - 列出活动/已完成的作业 (
list_jobs
):显示最近和正在进行的作业。 - 取消作业 (
cancel_job
):尝试停止正在运行或已排队的作业。 - 搜索文档 (
search_docs
)。 - 列出已索引的库 (
list_libraries
)。 - 查找合适的版本 (
find_version
)。 - 删除已索引的文档 (
remove_docs
)。
还包含一个配套的 CLI (docs-mcp
),用于本地管理和交互(注意:CLI scrape
命令会等待完成)。
构建项目
在使用服务器之前(例如,通过将其与 Claude Desktop 集成,如“安装”部分所述),您需要克隆存储库并从源代码构建项目。
-
克隆存储库: 如果您尚未克隆,请将项目克隆到您的本地计算机:
git clone <repository-url> # 将 <repository-url> 替换为实际 URL cd docs-mcp-server
-
安装依赖项: 导航到项目目录并安装所需的 Node.js 包:
npm install
-
构建服务器: 将 TypeScript 源代码编译为 JavaScript。输出将放置在
dist/
目录中。此步骤是生成安装说明中引用的dist/server.js
文件所必需的。npm run build
完成这些步骤并设置您的 .env
文件(请参阅“开发”下的“环境设置”)后,您可以继续执行“安装”或“使用 Docker 运行”说明。
安装
要与 Claude Desktop 一起使用,请添加服务器配置:
- 在 MacOS 上:
~/Library/Application Support/Claude/claude_desktop_config.json
- 在 Windows 上:
%APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"docs-mcp-server": {
"command": "node",
"args": ["/path/to/docs-mcp-server/dist/server.js"],
"env": {
"OPENAI_API_KEY": "sk-proj-..."
},
"disabled": false,
"autoApprove": []
}
}
}
使用 Docker 运行
或者,您可以使用 Docker 构建和运行服务器。这提供了一个隔离的环境,并通过 HTTP 端点公开服务器。
-
构建 Docker 镜像:
docker build -t docs-mcp-server .
-
运行 Docker 容器:
确保您的
.env
文件存在于项目根目录中,因为它包含必要的OPENAI_API_KEY
。容器将在运行时使用--env-file
标志从此文件读取变量。(有关.env
文件的详细信息,请参阅“开发”下的“环境设置”)。docker run -p 8000:8000 --env-file .env --name docs-mcp-server-container docs-mcp-server
-p 8000:8000
:将主机上的端口 8000 映射到容器中的端口 8000。--env-file .env
:在运行时从本地.env
文件加载环境变量。这是处理密钥的推荐方法。--name docs-mcp-server-container
:为容器分配一个名称,以便于管理。
-
可用端点:
容器运行后,可以通过以下方式访问 MCP 服务器:
- SSE 端点:
http://localhost:8000/sse
(用于服务器发送事件通信) - POST 消息:
http://localhost:8000/message
(用于发送单个消息)
- SSE 端点:
如果您不想直接通过 Node.js 运行服务器,或者不想使用标准安装方法将其与 Claude Desktop 集成,则此方法非常有用。
CLI 用法
docs-mcp
CLI 提供了用于管理文档的命令。要查看可用命令和选项:
# 显示所有命令
docs-mcp --help
# 显示特定命令的帮助
docs-mcp scrape --help
docs-mcp search --help
docs-mcp find-version --help
docs-mcp remove --help
抓取文档 (scrape
)
从给定 URL 抓取和索引特定库的文档。
docs-mcp scrape <library> <url> [options]
选项:
-v, --version <string>
:与抓取的文档关联的特定版本。- 接受完整版本 (
1.2.3
)、预发布版本 (1.2.3-beta.1
) 或部分版本 (1
、1.2
,它们扩展为1.0.0
、1.2.0
)。 - 如果省略,则文档将索引为未版本控制。
- 接受完整版本 (
-p, --max-pages <number>
:要抓取的最大页数(默认值:100)。-d, --max-depth <number>
:最大导航深度(默认值:3)。-c, --max-concurrency <number>
:最大并发请求数(默认值:3)。--ignore-errors
:在抓取期间忽略错误(默认值:true)。
示例:
# 抓取 React 18.2.0 文档
docs-mcp scrape react --version 18.2.0 https://react.dev/
# 抓取没有特定版本的 React 文档(索引为未版本控制)
docs-mcp scrape react https://react.dev/
# 抓取部分版本(将存储为 7.0.0)
docs-mcp scrape semver --version 7 https://github.com/npm/node-semver
# 抓取预发布版本
docs-mcp scrape mylib --version 2.0.0-rc.1 https://mylib.com/docs
搜索文档 (search
)
搜索已索引的库文档,可以选择按版本过滤。
docs-mcp search <library> <query> [options]
选项:
-v, --version <string>
:要在其中搜索的目标版本或范围。- 支持确切版本 (
18.0.0
)、部分版本 (18
) 或范围 (18.x
)。 - 如果省略,则搜索最新可用的已索引版本。
- 如果特定版本/范围不匹配,它会回退到比目标版本_更旧_的最新索引版本。
- 要仅搜索未版本控制的文档,请显式传递一个空字符串:
--version ""
。(注意:省略--version
会搜索最新版本,如果不存在其他版本,则_可能_是未版本控制的)。
- 支持确切版本 (
-l, --limit <number>
:最大结果数(默认值:5)。-e, --exact-match
:仅匹配指定的精确版本(禁用回退和范围匹配)(默认值:false)。
示例:
# 搜索最新的 React 文档中的 'hooks'
docs-mcp search react 'hooks'
# 搜索 React 18.x 文档中的 'hooks'
docs-mcp search react --version 18.x 'hooks'
# 搜索 React 17 文档(如果未找到 17.x.x,将匹配 17.x.x 或更旧版本)
docs-mcp search react --version 17 'hooks'
# 仅搜索 React 18.0.0 文档
docs-mcp search react --version 18.0.0 --exact-match 'hooks'
# 仅搜索未版本控制的 React 文档
docs-mcp search react --version "" 'hooks'
查找可用版本 (find-version
)
检查索引中库的最佳匹配版本(基于目标),并指示是否存在未版本控制的文档。
docs-mcp find-version <library> [options]
选项:
-v, --version <string>
:目标版本或范围。如果省略,则查找最新可用版本。
示例:
# 查找 react 的最新索引版本
docs-mcp find-version react
# 查找 react 版本 17.x 的最佳匹配
docs-mcp find-version react --version 17.x
# 查找 react 版本 17.0.0 的最佳匹配(可能会回退到更旧的版本)
docs-mcp find-version react --version 17.0.0
列出库 (list-libraries
)
列出当前存储中索引的所有库。
docs-mcp list-libraries
删除文档 (remove
)
删除特定库和版本的已索引文档。
docs-mcp remove <library> [options]
选项:
-v, --version <string>
:要删除的特定版本。如果省略,则删除库的未版本控制文档。
示例:
# 删除 React 18.2.0 文档
docs-mcp remove react --version 18.2.0
# 删除未版本控制的 React 文档
docs-mcp remove react
版本处理摘要
- 抓取: 需要特定的有效版本 (
X.Y.Z
、X.Y.Z-pre
、X.Y
、X
) 或没有版本(对于未版本控制的文档)。范围 (X.x
) 对于抓取无效。 - 搜索/查找: 接受特定版本、部分版本或范围 (
X.Y.Z
、X.Y
、X
、X.x
)。如果目标不匹配,则回退到最新的旧版本。省略版本以定位最新可用版本。显式搜索--version ""
以定位未版本控制的文档。 - 未版本控制的文档: 库可以存储没有特定版本的文档(通过在抓取期间省略
--version
)。可以使用--version ""
显式搜索这些文档。find-version
命令还将报告是否存在未版本控制的文档以及任何 semver 匹配项。
开发
有关项目架构和设计原则的详细信息,请参阅 ARCHITECTURE.md。
值得注意的是,该项目的大部分代码是由 AI 助手 Cline 生成的,它利用了该 MCP 服务器的功能。
发布
本项目使用 semantic-release 和 Conventional Commits 来自动化发布过程。
工作原理:
- 提交消息: 合并到
main
分支的所有提交必须遵循 Conventional Commits 规范。这允许semantic-release
自动确定更改类型(功能、修复、重大更改等)。feat:
提交触发minor
版本发布。fix:
提交触发patch
版本发布。- 脚注中包含
BREAKING CHANGE:
或类型/范围后包含!
的提交(例如,feat!:
)触发major
版本发布。 - 其他类型(
chore:
、docs:
、style:
、refactor:
、test:
等)本身不会触发版本发布。
- 自动化: 当具有触发版本发布的类型(
feat
、fix
、BREAKING CHANGE
)的提交被推送或合并到main
分支时,“Release” GitHub Actions 工作流程会自动运行semantic-release
。 semantic-release
操作: 该工具会自动执行以下步骤:- 根据提交确定下一个语义版本号。
- 使用相关提交更新
CHANGELOG.md
文件。 - 更新
package.json
中的version
。 - 提交更新后的
CHANGELOG.md
和package.json
。 - 为新版本创建 Git 标签(例如,
v1.2.3
)。 - 将软件包发布到 npm。
- 创建相应的 GitHub Release,其中包含生成的发布说明。
您需要做什么:
- 使用 Conventional Commits: 严格遵守所有提交消息的 Conventional Commits 格式。提交钩子 (
commitlint
) 将有助于强制执行此操作。 - 合并到
main
: 在功能分支准备就绪时将其合并到main
。
您_不需要_手动执行以下操作:
- 更新
CHANGELOG.md
。 - 增加
package.json
中的版本号。 - 创建 Git 标签。
- 发布到 npm。
- 创建 GitHub 版本。
自动化会根据 main
分支上的提交历史记录处理所有这些步骤。
环境设置
注意: 此 .env
文件设置主要在手动运行服务器(例如,node dist/server.js
)或在使用 CLI 进行本地开发/测试期间(docs-mcp
)需要。在为 Claude Desktop 配置服务器时(请参阅“安装”),OPENAI_API_KEY
通常直接在 claude_desktop_config.json
文件中设置,并且 Claude 集成不使用此 .env
文件。
- 基于
.env.example
创建一个.env
文件:
cp .env.example .env
- 在
.env
中更新您的 OpenAI API 密钥:
OPENAI_API_KEY=your-api-key-here
调试
由于 MCP 服务器通过 stdio 进行通信,因此调试可能具有挑战性。我们建议使用 MCP Inspector,它作为包脚本提供:
npx @modelcontextprotocol/inspector node dist/server.js
Inspector 将提供一个 URL,用于访问浏览器中的调试工具。
推荐服务器

Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。