MCP文档服务器
一个MCP服务器,它通过从官方来源动态获取,使AI助手能够访问LangChain、LlamaIndex和OpenAI等Python库的最新文档。
服务介绍
文档检索 MCP 服务器 (DOCRET)
该项目实现了一个模型上下文协议 (MCP) 服务器,使 AI 助手能够访问各种 Python 库的最新文档,包括 LangChain、LlamaIndex 和 OpenAI。通过利用此服务器,AI 助手可以动态获取并提供来自官方文档源的相关信息。目标是确保 AI 应用程序始终能够访问最新的官方文档。
什么是 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 密钥。
-
在项目的根目录中创建一个
.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文件。