Grounded Docs MCP 服务器
为 AI 编程助手提供实时、版本精确的文档索引,减少幻觉,保证上下文最新。
证据显示:项目提供本地运行、数据不出网络的承诺(README),并支持可选的认证(OAuth2/OIDC)和网络访问控制(security.md)。但未发现明确的权限最小化设计(如按需请求权限),也未发现用户确认机制(如危险操作需确认)。数据流透明度:README和文档描述了数据流(抓取、索引、查询),但未详细说明数据如何被处理、存储和传输。敏感数据处理:支持API密钥(如OPENAI_API_KEY)但未说明如何安全存储。依赖安全:使用大量依赖,但未提供依赖审计或漏洞扫描证据。外部影响:抓取外部网站可能产生网络请求,但未说明速率限制或对目标站点的尊重。回滚:未提及索引或配置的回滚机制。来源归属:文档来源明确(官方文档),但未说明如何验证来源的完整性。扣分原因:缺乏权限最小化、用户确认、回滚机制等关键安全特性。
证据显示:项目有测试(单元、集成、E2E)和CI流程,但未提供测试覆盖率或稳定性数据。依赖可用性:依赖众多,但未提供依赖锁定或镜像策略。失败消息:CLI测试验证了错误输出,但未提供全面的错误处理文档。扣分原因:依赖可用性未充分保障,失败消息覆盖有限。
证据显示:README和文档覆盖了多种使用场景(CLI、MCP、Docker),并提供了配置选项(如嵌入模型、认证)。能力边界:文档说明了支持的格式和来源,但未明确限制(如最大页面数、并发)。触发精度:CLI命令和MCP工具定义清晰,但未提供详细的参数说明。环境适配:支持多种部署模式(本地、Docker、分布式),但未提供所有环境的详细配置。扣分原因:能力边界和触发精度描述不够详细。
证据显示:信息架构清晰(README、docs目录),安装说明详细(npx、Docker),命名稳定(包名、命令名),示例和FAQ存在(README中的示例),已知限制部分提及(如hash路由),许可证明确(MIT),版本控制有(package.json版本),维护责任未明确(未指定维护者或贡献指南)。扣分原因:已知限制不全面,维护责任不明确。
证据显示:输出格式多样(JSON、YAML、Markdown),易于集成。边际价值:作为Context7等的替代品,提供了本地、私有的文档索引。成本效益:免费开源,但需要Node.js 22+和可能的API密钥(嵌入模型)。扣分原因:未提供性能基准或与其他工具的对比数据。
证据显示:README中的声明(如支持格式)有文档支持,但未提供独立的验证。跨来源佐证:未提供第三方验证或用户评价。事实与推断分离:README区分了功能描述和推荐,但未明确标注哪些是推断。扣分原因:缺乏独立验证和事实/推断的明确分离。
- 项目依赖大量第三方库,但未提供依赖审计或漏洞扫描证据,建议在使用前进行安全审查。
- 项目支持抓取外部网站,可能产生网络请求,建议配置网络访问控制并注意目标网站的robots.txt。
- 项目支持API密钥(如OPENAI_API_KEY),请确保密钥安全存储,不要提交到版本控制。
- 项目未提供回滚机制,建议定期备份索引数据。
这个 Agent 能做什么,适合哪些场景?
Grounded Docs MCP 服务器是一个自托管的文档索引服务,可抓取官方文档网站、GitHub、npm、PyPI 以及本地文件,为 AI 编程助手提供最新、版本精确的上下文。它支持多种格式,包括 PDF、Word、Markdown、源码等,并提供 Web UI 和 CLI 两种方式。通过 MCP 协议与 Claude、Cline 等客户端集成,支持语义向量搜索(可选嵌入模型)。该服务完全本地运行,保护代码隐私,是 Context7、Nia 和 Ref.Tools 的开源替代品。
该工具执行以下操作:抓取指定 URL 的文档页面并保存为索引(如 npx @arabold/docs-mcp-server@latest scrape react https://react.dev/reference/react);在索引中执行关键词或语义搜索(search react "useEffect cleanup");将网页转换为干净的 Markdown(fetch-url);提供 MCP 服务器端点(默认端口 6280),通过 SSE 协议供 AI 客户端查询;支持从本地文件夹、ZIP 压缩包导入;可选配置 OpenAI、Ollama、Gemini 等嵌入模型以提升搜索质量。
- 开发者使用 Cursor 或 VS Code 的 Cline 插件,希望 AI 助手基于项目实际使用的库版本(如 React 18 vs 19)提供准确的 API 用法。
- 团队因合规要求不能将代码发送到云端,需要完全本地的文档检索服务。
- 技术写作者需要快速将官方文档(如 TypeScript 手册)转换为 Markdown 格式用于内部知识库。
- AI 应用开发者希望在自己的 MCP 客户端中集成版本感知的文档查询,避免模型幻觉。
- 运维人员需要为 Docker 化的开发环境提供文档索引服务,支持最新版本追踪。
这个 Agent 有哪些优点和局限?
- 从官方源实时抓取,确保文档最新,减少幻觉
- 支持版本精确查询,针对项目实际使用的库版本
- 完全本地运行,代码和文档数据不出网络,隐私性好
- 兼容任何 MCP 客户端(Claude、Cline 等),并支持 Docker 部署
- 支持丰富的文件格式,包括 Office、PDF、源码等 90+ 语言
- 需要 Node.js 22+ 环境,可能不兼容旧版本
- 可选嵌入模型需要额外配置(如 OpenAI、Ollama),增加使用复杂度
- 大型文档索引可能占用本地存储和计算资源
- 对 JavaScript 单页应用的爬取可能需要 Playwright,增加依赖
- 依赖外部服务(如 OpenAI API)时,可能引入网络和成本问题
如何安装或部署这个 Agent?
要求 Node.js 22+。通过 npx 直接运行:npx @arabold/docs-mcp-server@latest。也可以使用 Docker:docker run --rm -v docs-mcp-data:/data -v docs-mcp-config:/config -p 6280:6280 ghcr.io/arabold/docs-mcp-server:latest --protocol http --host 0.0.0.0 --port 6280。启动后打开 http://localhost:6280 添加文档。
如何使用这个 Agent?
- 索引文档:
npx @arabold/docs-mcp-server@latest scrape react https://react.dev/reference/react。2. 搜索:npx @arabold/docs-mcp-server@latest search react "useEffect cleanup" --output yaml。3. 获取页面:npx @arabold/docs-mcp-server@latest fetch-url https://react.dev/reference/react/useEffect。4. 配置 MCP 客户端(如 Claude Desktop),在配置文件中添加{"mcpServers": {"docs-mcp-server": {"type": "sse", "url": "http://localhost:6280/sse"}}}。5. 可选:设置OPENAI_API_KEY环境变量以启用嵌入模型。
这个 Agent 与同类方案有什么区别?
作为 Context7、Nia 和 Ref.Tools 的开源替代品,本工具强调完全本地运行和版本精确性,而 Context7 等可能在云端存储索引,或提供更广泛的文档库。