Documentation Retrieval MCP Server (DOCRET)

文档检索 MCP 服务器 (DOCRET)

该项目实现了一个模型上下文协议 (MCP) 服务器,使 AI 助手能够访问各种 Python 库(包括 LangChain、LlamaIndex 和 OpenAI)的最新文档。通过利用该服务器,AI 助手可以从官方文档源动态获取并提供相关信息。目标是确保 AI 应用程序始终能够访问最新的官方文档。

什么是 MCP 服务器?

模型上下文协议 (MCP) 是一项开放标准,使开发者能够在其数据源和 AI 驱动的工具之间建立安全的双向连接。其架构简单易懂:开发者可以通过 MCP 服务器公开数据,也可以构建连接到这些服务器的 AI 应用程序(MCP 客户端)。

特征

  • 动态文档检索:获取指定 Python 库的最新文档内容。
  • 异步网络搜索:利用SERPER API在目标文档网站内执行高效的网络搜索。
  • HTML 解析:使用 BeautifulSoup 从 HTML 内容中提取可读文本。
  • 可扩展设计:通过更新配置轻松添加对其他库的支持。

先决条件

  • Python 3.8 或更高版本
  • UV 用于 Python 包管理(如果你是平民,可以使用 pip)
  • Serper API 密钥(用于 Google 搜索或“SERP”)
  • Claude Desktop 或 Claude Code(用于测试)

安装

1.克隆存储库

git clone https://github.com/Sreedeep-SS/docret-mcp-server.git cd docret-mcp-server

2.创建并激活虚拟环境

  • 在 macOS/Linux 上
    python3 -m venv env source env/bin/activate
  • 在 Windows 上
    python -m venv env .\env\Scripts\activate

3.安装依赖项

激活虚拟环境后,安装所需的依赖项:

pip install -r requirements.txt

或者如果你使用 uv:

uv sync

设置环境变量

运行应用程序之前,请配置所需的环境变量。本项目使用 SERPER API 搜索文档,需要 API 密钥。

  1. 在项目的根目录中创建一个.env文件。
  2. 添加以下环境变量:
    SERPER_API_KEY=your_serper_api_key_here

your_serper_api_key_here替换为您的实际 API 密钥。

运行 MCP 服务器

一旦安装了依赖项并设置了环境变量,您就可以启动 MCP 服务器。

python main.py

这将启动服务器并使其准备好处理请求。

用法

MCP 服务器提供了一个 API,用于从支持的库中获取文档内容。它的工作原理是查询 SERPER API 以获取相关的文档链接并抓取页面内容。

搜索文档

要在库中搜索特定主题的文档,请使用get_docs函数。此函数接受两个参数:

  • query :要搜索的主题(例如“Chroma DB”)
  • library :库的名称(例如“langchain”)

使用示例:

from main import get_docs result = await get_docs("memory management", "openai") print(result)

这将返回从相关 OpenAI 文档页面提取的文本。

与人工智能助手集成

您可以将此 MCP 服务器与 Claude 等 AI 助手或自定义 AI 模型集成。要配置助手与服务器交互,请使用以下配置:

{ "servers": [ { "name": "Documentation Retrieval Server", "command": "python /path/to/main.py" } ] }

确保指定了正确的main.py路径。

扩展 MCP 服务器

该服务器目前支持以下库:

  • 朗链
  • 骆驼指数
  • OpenAI

要添加对其他库的支持,请使用库名称及其文档 URL 更新main.py中的docs_urls字典:

docs_urls = { "langchain": "python.langchain.com/docs", "llama-index": "docs.llamaindex.ai/en/stable", "openai": "platform.openai.com/docs", "new-library": "new-library-docs-url.com", }

📌 路线图

这对我来说确实非常令人兴奋,我期待在此基础上取得更多进展,并随时了解最新的新闻和可以实施的想法

我心里想的是:

  1. 添加对更多库的支持(例如,Hugging Face、PyTorch)

    • 使用附加库扩展docs_urls字典。
    • 修改 get_docs 函数以处理不同格式的文档页面。
    • 使用基于正则表达式或人工智能的解析来更好地提取有意义的内容。
    • 提供 API 端点以动态添加新库。
  2. 实施缓存以减少冗余 API 调用

    • 使用 Redis 或内存缓存机制,例如functools.lru_cache
    • 实现基于时间的缓存失效。
    • 按库和按搜索词缓存结果。
  3. 利用人工智能摘要优化网页抓取

    • 使用GPT-4BARTT5来总结抓取的文档。
    • 此外,还有Claude 3 HaikuGemini 1.5 ProGPT-4-miniOpen-mistral-nemoHugging Face Models等众多模型可供使用。所有这些都有待商榷。
    • 让用户在原始文档文本和摘要版本之间进行选择。
  4. 引入用于外部集成的 REST API

    • 使用 FastAPI 公开 API 端点。(仅此而已)
    • 构建一个简单的前端仪表板,用于 API 交互。(为什么不呢?)
  5. 添加单元测试以提高可靠性参考

    • 使用 pytest 和 unittest 进行 API 和爬虫的可靠性测试。(我们最不希望的就是这玩意儿变成核弹)
    • 实施 CI/CD 工作流程,在每次推送时自动运行测试。(当然,这是最重要的)
  6. 更多在开发过程中有用的 MCP 工具

    • 数据库集成
    • Google 文档/表格/云端硬盘集成
    • 文件系统操作
    • Git 集成
    • 整合沟通平台,将创意转化为产品
    • Docker 和 Kubernetes 管理

参考

有关 MCP 服务器及其实现的更多详细信息,请参阅指南:

执照

本项目遵循 MIT 许可证。更多详情请参阅许可证文件。

ID: j1bg7jklhy