文档检索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-server2.创建和激活虚拟环境
- 在macOS/Linux上:
python3 -m venv env
source env/bin/activate- 在Windows上:
python -m venv env
.\env\Scripts\activate3.安装依赖项
激活虚拟环境后,安装所需的依赖项:
pip install -r requirements.txt或者,如果你正在使用紫外线:
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
- 调用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",
}📌 路线图
当然,这对我来说真的很令人兴奋,我期待着在此基础上再接再厉,并随时了解可以实施的最新消息和想法
这就是我的想法:
- #### 添加对更多库的支持(例如,Hugging Face、PyTorch)
- 展开 docs_urls 带有额外库的词典。 - 修改get_docs函数以处理不同格式的文档页面。 - 使用基于正则表达式或人工智能的解析来更好地提取有意义的内容。 - 提供API端点以动态添加新库。
- #### 实现缓存以减少冗余的API调用
- 使用Redis或内存缓存机制,如 functools.lru_cache - 实现基于时间的缓存失效。 - 缓存每个库和每个搜索词的结果。
- #### 使用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工具
- 数据库集成 - 谷歌文档/表格/驱动器集成 - 文件系统操作 - Git集成 - 整合沟通平台,将创意转化为产品 - Docker和Kubernetes管理
参考文献
有关MCP服务器及其实现的更多详细信息,请参阅指南:
许可证
该项目根据MIT许可证获得许可。请参阅 许可证 文件以获取更多详细信息。

