这是一个基于Model Context Protocol (MCP) 构建的服务器实现,旨在帮助大型语言模型(LLM)便捷地访问流行Python库的官方文档。通过实现一个标准的MCP工具,它允许LLM客户端(如Claude Desktop)调用此服务器的功能,获取特定查询在目标库文档中的相关信息。
主要功能点:
- 文档搜索: 允许搜索指定库(当前支持'langchain'、'openai'、'llama-index')的官方文档。
- 网页内容提取: 能抓取搜索结果页面的内容,并提取可见文本,作为提供给LLM的上下文。
- MCP工具实现: 将文档搜索功能封装为一个标准的MCP工具 ('get_docs'),供MCP客户端调用。
- 标准协议通信: 通过STDIO传输方式,遵循MCP协议与客户端进行JSON-RPC通信。
安装步骤:
- 安装uv包管理器: 按照uv官方文档安装'uv'。这是一个快速的Python包管理器。
- 创建项目目录:
uv init mcp-server-docs # 创建并进入一个新目录 cd mcp-server-docs - 创建并激活虚拟环境:
uv venv source .venv/bin/activate # Windows上使用:.venv\Scripts\activate - 安装依赖:
uv add "mcp[cli]" httpx beautifulsoup4 python-dotenv - 创建服务器代码文件:
touch main.py # 或使用你喜欢的编辑器创建 - 将仓库中的 main.py 代码复制到你创建的 main.py 文件中。
- 配置Serper.dev API密钥:
- 你需要一个Serper.dev API密钥。
- 在项目根目录('mcp-server-docs')下创建一个名为 '.env' 的文件。
- 在 '.env' 文件中添加以下内容,将'your_serper_api_key'替换为你实际的API密钥:
SERPER_API_KEY=your_serper_api_key
服务器配置 (供MCP客户端使用):
MCP客户端(例如Claude Desktop)需要知道如何启动这个MCP服务器。你需要将以下配置信息添加到客户端的相应配置文件中(例如Claude Desktop的'claude_desktop_config.json'),告诉客户端服务器的启动命令及其参数。
配置示例如下(这是一个JSON结构,你需要根据你的MCP客户端的具体要求进行添加):
{ "mcpServers": { "mcp-docs-server": { // 给你的服务器取一个名称,客户端会用它来引用 "command": "uv", // 用于启动服务器的可执行命令 "args": [ // 启动命令的参数列表 "--directory", "/绝对/路径/到你的/mcp-server-docs", // **重要:替换为你项目目录的绝对路径** "run", "main.py" // 启动main.py脚本 ] } } }
请根据你的客户端软件文档找到正确的配置文件位置和格式,然后填入类似上述示例中的 'command' 和 'args' 信息。
基本使用方法:
-
启动MCP服务器: 在你的项目目录 ('mcp-server-docs') 中,确保虚拟环境已激活 ('source .venv/bin/activate'),然后运行:
uv run main.py服务器将在STDIO上启动并监听来自MCP客户端的连接。
-
连接客户端: 启动配置好此服务器信息的MCP客户端(例如Claude Desktop)。客户端应该会自动连接到服务器。
-
LLM调用工具: 一旦连接成功,你的LLM客户端(如果它支持调用MCP工具)就可以识别并调用服务器提供的 'get_docs' 工具了。当你在与LLM交互时提出与支持库文档相关的问题时,LLM可能会自动或在你的确认下调用 'get_docs' 工具来获取信息,然后利用这些信息来回答你的问题。
'get_docs' 工具需要两个参数:
- 'query' (字符串): 你想要搜索的文档内容,例如“如何使用Agent”。
- 'library' (字符串): 你想要搜索的库名称,目前支持'"langchain"'、'"openai"'或'"llama-index"'。
例如,如果你问LLM关于LangChain中Agents的问题,LLM可能会调用 'get_docs(query="Agents", library="langchain")' 来获取相关文档内容。
信息
分类
AI与计算