文档检索MCP服务器

一个实现模型上下文协议(MCP)的服务器,为AI助手提供动态获取Python库最新官方文档的功能,支持LangChain、LlamaIndex和OpenAI等库。

  • by Sreedeep-SS
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 sreedeep-ss/docret-mcp-server

使用说明

文档检索MCP服务器(DOCRET)

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

什么是MCP服务器?

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

特性

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

先决条件

  • Python 3.8或更高版本
  • 用于Python包管理的UV(如果你是平民,则使用pip)
  • Serper API密钥(用于Google搜索或“SERP”)
  • 克劳德桌面或克劳德代码(用于测试)

安装

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 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文档页面提取的文本。

与AI助手集成

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

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

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

扩展MCP服务器

服务器当前支持以下库:

  • LangChain
  • 调用Index
  • OpenAI

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

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. 使用AI支持的摘要优化网络抓取

    • 使用 GPT-4, BART,或 T5 用于总结被刮擦的文档。
    • 还有 Claude 3 Haiku, Gemini 1.5 Pro, GPT-4-mini, Open-mistral-nemo, Hugging Face Models 还有更多可以使用的。所有这些都有待商榷。
    • 让用户在原始文档文本和摘要版本之间进行选择。
  4. 为外部集成引入REST API

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

    • 使用pytest和unittest进行API和刮擦可靠性测试。(我们最不希望的就是这东西变成核弹)
    • 实施CI/CD工作流,以便在每次推送时自动运行测试。(当然是面包和黄油)
  6. 更多在开发过程中有用的MCP工具

    • 数据库集成
    • 谷歌文档/表格/驱动器集成
    • 文件系统操作
    • Git集成
    • 整合沟通平台,将创意转化为产品
    • Docker和Kubernetes管理

参考文献

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

许可证

该项目根据MIT许可证获得许可。请参阅 许可证 文件以获取更多详细信息。