PubMed Search MCP
使用说明
-
项目简介 PubMed Search MCP 是一个完整的 MCP 服务器实现,提供对 PubMed 等学术数据库的访问、资源管理、工具注册与执行,以及提示模板的渲染能力。通过 JSON-RPC 与客户端通信,支持会话管理、能力声明、多传输协议接入,旨在为 LLM 客户端提供结构化的研究上下文与外部功能调用能力。
-
主要功能点
- 资源与数据访问:托管并管理面向 LLM 的学术资源和缓存数据,提供统一的数据入口。
- 工具注册与执行:提供大量检索、导出、分析等工具,LLM Agent 可以通过 MCP 调用外部功能。
- Prompt 与模板:定义和渲染用于与 LLM 交互的提示模板,支持可定制的交互模式。
- JSON-RPC 交互:服务器通过 JSON-RPC 接收请求并返回标准化响应,支持读取资源、调用工具、获取 Prompts 等。
- 会话和能力声明:会话管理、能力声明,支持多种传输协议,确保上下文服务的安全性和可扩展性。
- 多传输协议支持:包括 SSE、Streamable HTTP、WebSocket 等,便于嵌入到不同的前端/客户端。
- Copilot Studio 集成:提供 Copilot Studio mode 的适配工具流和中间件,方便将 MCP 配置为 Copilot Studio 的后端。
-
安装与运行
- 快速安装方式(适用于开发与本地实验)
- 使用 uv 安装插件方式:uv add pubmed-search-mcp
- 使用 uvx(零安装)直接运行:uvx pubmed-search-mcp
- 运行方式
- HTTP/Streamable HTTP 模式:python run_server.py --transport streamable-http --port 8765
- SSE 模式(不推荐用于 Copilot Studio): python run_server.py --transport sse --port 8765
- 运行时环境变量
- 必填:NCBI_EMAIL,遵守 NCBI 使用政策
- 可选:NCBI_API_KEY,用于提升速率限制
- 服务器端的端口和主机可以通过命令行参数或环境变量设置
- 快速安装方式(适用于开发与本地实验)
-
服务器配置(MCP 客户端所需信息,示例) { "server_name": "PubMed Search MCP", "command": "uvx", "args": ["pubmed-search-mcp"], "transport": "streamable-http", "host": "0.0.0.0", "port": 8765, "env": { "NCBI_EMAIL": "[email protected]" } } 注释:
- server_name:给 MCP 客户端显示的服务器名称,和仓库中的 MCP 服务名称一致。
- command 与 args:对应客户端启动 MCP 服务的命令及参数,当前实现推荐使用 uvx pubmed-search-mcp(Streamable HTTP)模式。
- transport:传输模式,推荐 streamable-http,兼容 Copilot Studio 等客户端。
- host、port:服务器监听地址与端口,可根据需要修改。
- env:运行时环境变量,需设置 NCBI 邮件地址以满足接口策略。
-
基本使用方法
- 启动服务器
- 在本地或服务器上执行上述运行命令以启动 MCP 服务器。
- 配置客户端连接
- MCP 客户端(如 Copilot Studio、VS Code Copilot 扩展等)通过提供的配置连接到服务器的 /mcp 端点(Streamable HTTP 模式下通常为 http(s)://your-host:8765/mcp)。
- 发送请求
- 客户端以 JSON-RPC 风格向服务器发送请求,例如读取资源、执行工具、获取 Prompt 模板等,服务器返回标准化的 JSON-RPC 响应。
- 监控与扩展
- 服务器具备会话、缓存、并发工具注册等能力,可根据需求扩展工具集和资源。
- 启动服务器
-
备注
- 本仓库包含完整的 MCP 服务器实现与大量工具/插件,覆盖从资源管理、工具执行、到跨数据库的统一检索与排行,支持多种传输协议并可与 Copilot Studio 集成。
- 部署时请确保 NCBI 邮件地址设置正确,若需要提升调用速率可配置 NCBI API Key。
-
典型工作流示例
- 与 LLM Agent 的对话中,Agent 通过 unified_search 等工具发起多源检索,MCP 服务器自动进行词汇翻译、MeSH 展开、并行检索、去重与排名,最终将结构化的结果返回给 Agent 用于推断或呈现。