关于 Documentation Retrieval MCP Server (DOCRET)
DOCRET 是一个 MCP 服务,用于检索指定 Python 库的最新文档,面向 AI 助手。它搜索官方文档站点,并从网页中提取可读文本。
主要功能
- 01按主题搜索文档
- 02支持 LangChain、LlamaIndex 和 OpenAI
- 03通过 SERPER API 搜索站点
- 04从 HTML 提取可读文本
- 05扩展文档库 URL 配置
适用场景
- 01查找 Python 库主题文档
- 02为 AI 助手获取官方参考资料
- 03添加其他库的文档站点
MCP 相关
MCP 服务通过 `get_docs` 函数提供文档检索,输入查询词和库名称后返回提取的文本。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
文档检索 MCP 服务(DOCRET)
本项目实现了一个 Model Context Protocol(MCP)服务,让 AI 助手能够访问各种 Python 库的最新文档,包括 LangChain、LlamaIndex 和 OpenAI。借助此服务,AI 助手可以动态获取官方文档中的相关信息并提供给用户。项目旨在确保 AI 应用始终能够访问最新的官方文档。
什么是 MCP 服务?
Model Context Protocol 是一项开放标准,使开发者能够在数据源与 AI 驱动的工具之间建立安全的双向连接。其架构十分简单:开发者既可以通过 MCP 服务公开数据,也可以构建连接到这些服务的 AI 应用(MCP 客户端)。
功能
- 动态检索文档:获取指定 Python 库的最新文档内容。
- 异步网页搜索:使用 SERPER API 在指定文档网站中高效搜索。
- HTML 解析:使用 BeautifulSoup 从 HTML 内容中提取可读文本。
- 可扩展设计:通过更新配置即可轻松添加对其他库的支持。
前提条件
- Python 3.8 或更高版本
- 用于 Python 包管理的 UV(或者 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 密钥。
-
在项目根目录中创建一个
.env文件。 -
添加以下环境变量:
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
- LlamaIndex
- OpenAI
要添加对其他库的支持,请在 main.py 中更新 docs_urls 字典,添加库名称及其文档 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",
}
📌 路线图
这确实让我非常兴奋,我期待着在此基础上继续扩展,并及时了解可供实现的最新动态和想法。
以下是我的想法:
-
添加对更多库的支持(例如 Hugging Face、PyTorch)
- 在
docs_urls字典中添加更多库。 - 修改 get_docs 函数,以处理不同格式的文档页面。
- 使用基于正则表达式或由 AI 驱动的解析,更好地提取有意义的内容。
- 提供一个 API 端点,以便动态添加新库。
- 在
-
实现缓存,减少冗余 API 调用
- 使用 Redis 或
functools.lru_cache这样的内存缓存机制。 - 实现基于时间的缓存失效。
- 按库和搜索词分别缓存结果。
- 使用 Redis 或
-
利用 AI 驱动的摘要优化网页抓取
- 使用
GPT-4、BART或T5来总结抓取的文档。 - 也可以使用
Claude 3 Haiku、Gemini 1.5 Pro、GPT-4-mini、Open-mistral-nemo、Hugging Face Models等等。这些方案都有争议。 - 让用户选择原始文档文本或摘要版本。
- 使用
-
引入 REST API,支持外部集成
- 使用 FastAPI 暴露 API 端点。(就是想这么做)
- 构建一个简单的前端仪表板,用于与 API 交互。(何乐而不为?)
-
添加单元测试,提高可靠性参考
- 使用 pytest 和 unittest 测试 API 和网页抓取的可靠性。(我们最不希望看到的就是这东西变成一颗核弹)
- 实现 CI/CD 工作流,在每次推送时自动运行测试。(当然,这是基本功)
-
添加更多在开发过程中实用的 MCP 工具
- 数据库集成
- Google Docs/Sheets/Drive 集成
- 文件系统操作
- Git 集成
- 集成通信平台,将想法转化为产品
- Docker 和 Kubernetes 管理
参考资料
如需详细了解 MCP 服务及其实现,请参阅以下指南:
许可证
本项目采用 MIT 许可证。详情请参阅 LICENSE 文件。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。