PubMed MCP服务器-远程版
用于PubMed数据库访问的综合模型上下文协议(MCP)服务器,针对render.com和其他云平台上的部署进行了优化。该服务器通过本地(stdio)和远程(SSE/HTTP)传输提供高级生物医学文献搜索、检索和分析功能。
🚀 特性
🔧 工具
search_pubmed:使用全面的摘要和元数据搜索PubMedget_full_abstract:按PMID检索完整摘要get_full_text:从PMC开放获取文章中提取全文export_ris:以RIS格式为参考经理导出引文get_citation_counts:使用NCBI elink API分析引用指标optimize_search_query:使用MeSH术语将自然语言转换为优化的PubMed查询find_similar_articles:使用NCBI的相似性算法查找相似文章batch_process:通过多种操作高效处理多个PMID
🌐 部署模式
- 本地模式:Claude Desktop的传统stdio传输
- 远程模式:用于云部署的SSE/HTTP传输(render.com等)
📋 先决条件
- Node.js v18.x或更高版本
- npm或yarn包管理器
- (可选)云部署的render.com帐户
🎯 安装与使用
选项1:部署到Render.com(建议用于远程访问)
- 分叉或克隆此存储库
- 连接到Render.com
- 注册地址: render.com - 点击“新建+”→ “Web服务” - 连接您的GitHub存储库
- 配置环境变量 在渲染仪表板中:
NODE_ENV=production
MCP_TRANSPORT=sse
PORT=8000
HOST=0.0.0.0
LOG_LEVEL=info
NCBI_EMAIL=your-email@example.com- 部署
- 渲染将自动检测 render.yaml 并部署 - 您的服务URL将是: https://pubmed-mcp-server.onrender.com
- 添加到克劳德桌面
添加到您的Claude Desktop配置中:
视窗: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"pubmed-remote": {
"url": "https://your-service-name.onrender.com/sse"
}
}
}选项2:本地安装
- 克隆并安装
git clone
cd pubmed-mcp-remote
npm install
npm run build- 配置为本地模式
添加到Claude桌面配置:
{
"mcpServers": {
"pubmed": {
"command": "node",
"args": ["/path/to/pubmed-mcp-remote/dist/index.js"],
"env": {
"NCBI_EMAIL": "your-email@example.com"
}
}
}
}选项3:开发模式
# Local stdio mode
npm run dev
# Remote SSE mode
MCP_TRANSPORT=sse npm run dev⚙️ 配置
环境变量
| 变量 | 描述 | 默认值 | 必填 |
|---|---|---|---|
NODE_ENV | 环境模式 | development | 没有 |
MCP_TRANSPORT | 运输方式(sse 或 stdio) | stdio | 没有 |
PORT | 服务器端口(仅远程模式) | 8000 | 没有 |
HOST | 服务器主机(仅远程模式) | 0.0.0.0 | 没有 |
LOG_LEVEL | 日志记录级别(debug, info, warn, error) | info | 没有 |
NCBI_EMAIL | NCBI API的电子邮件(NCBI要求) | user@example.com | 是 |
MAX_RESULTS | 最大搜索结果 | 100 | 没有 |
REQUEST_TIMEOUT | API超时(以毫秒为单位) | 30000 | 没有 |
运输方式
标准模式(本地)
- 本地Claude Desktop的传统MCP传输
- 默认情况下或当
MCP_TRANSPORT=stdio - 通过stdin/stdout进行通信
SSE模式(远程)
- 用于远程部署的HTTP/SSE传输
- 激活时间
MCP_TRANSPORT=sse或--remote旗帜 - 提供HTTP端点:
- /sse -SSE连接端点 - /health -健康检查端点 - /message -客户端到服务器的消息传递
🔍 示例用法
1.查询优化
Input: "covid vaccine effectiveness in elderly"
→ Output: Optimized PubMed query with MeSH terms2.文献检索
Tool: search_pubmed
Query: "diabetes treatment 2023"
Max Results: 10
→ Returns: Detailed articles with abstracts and metadata3.引文分析
Tool: get_citation_counts
PMIDs: ["36038128", "30105375"]
→ Returns: Citation counts and citing articles4.批量处理
Tool: batch_process
PMIDs: ["36038128", "35105375", "34567890"]
Operations: ["abstract", "citations", "similar"]
→ Returns: Comprehensive analysis of all articles📊 API限值
| 操作 | 限制 | 注意事项 |
|---|---|---|
| 搜索结果 | 100篇文章 | 每次查询 |
| 完整摘要 | 20个PMID | 根据请求 |
| 全文 | 10篇PMC文章 | 根据要求 |
| 引文分析 | 20个PMID | 根据请求 |
| RIS导出 | 50个PMID | 每批 |
| 类似文章 | 50篇文章 | 每个PMID(默认值:10) |
| 批处理 | 50个PMID | 每批,5个并发操作 |
| API延迟 | 200-600ms | 请求之间 |
🛡️ 利率限制和最佳实践
- NCBI指南合规性
- 始终在中提供有效的电子邮件地址 NCBI_EMAIL - 遵守API速率限制(每秒3次请求,无API密钥) - 使用请求之间的延迟(自动处理)
- 错误处理
- 网络连接问题 - 无效的PMID或查询 - API超时 - 缺少全文内容
- 性能优化
- 对多个物品使用批处理 - 尽可能缓存结果 - 使用查询优化以获得更好的搜索结果
🏗️ 项目结构
pubmed-mcp-remote/
├── src/
│ ├── index.ts # Main server with dual transport support
│ └── pubmed-api.ts # PubMed API integration
├── dist/ # Compiled JavaScript output
├── render.yaml # Render.com deployment config
├── package.json # Dependencies and scripts
├── tsconfig.json # TypeScript configuration
├── .gitignore # Git ignore rules
└── README.md # This file🔧 发展
构建
npm run build本地运行(stdio)
npm start以远程服务器(SSE)运行
npm run start:remote
# or
MCP_TRANSPORT=sse npm start清洁建筑
npm run clean🚀 部署
Render.com
存储库包括 render.yaml 用于自动部署的文件:
- 将代码推送到GitHub
- 将存储库连接到Render
- 渲染自动部署使用
render.yaml - 更新Render仪表板中的环境变量
其他平台
对于部署到其他平台(Heroku、AWS、DigitalOcean等):
- 集
MCP_TRANSPORT=sse环境变量 - 集
PORT达到平台要求值 - 跑
npm run build && npm run start:remote
📖 MeSH项优化
服务器包括广泛的医学术语映射:
- 新冠肺炎和疫苗:新冠肺炎,冠状病毒,疫苗接种
- 心血管:心脏病发作、心肌梗死
- 癌症:肿瘤、肿瘤学、癌
- 心理健康:抑郁、焦虑
- 学习类型:临床试验、荟萃分析、随机对照试验
- 治疗类型:治疗、手术、药物
🤝 贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 彻底测试(本地和远程模式)
- 提交拉取请求
📝 版本历史
v1.0.2(当前)
- ✨ 增加了远程/SSE传输支持
- 🌐 Render.com部署配置
- 🔧 环境变量配置
- 📊 健康检查端点
- ⚡ 双模式支持(stdio/SSE)
v1.0.1
- 🆕 类似文章功能
- 📊 引文分析改进
v1.0.0
- 🚀 初始版本
- 📖 PubMed核心功能
📄 许可证
MIT许可证-有关详细信息,请参阅许可证文件
🙋♂️ 支持
对于问题或疑问:
- 检查现有的GitHub问题
- 创建具有详细描述的新问题
- 包括错误消息和再现步骤
🔗 相关资源
🎯 快速入门检查表
- \[\]克隆存储库
- \[\]安装依赖项(
npm install) - \[\]构建项目(
npm run build) - \[\]设置
NCBI_EMAIL环境变量 - \[\]选择部署模式(本地或远程)
- \[\]配置Claude桌面
- \[\]使用简单的搜索查询进行测试
⚡ 性能提示
- 使用查询优化 为了获得更好的搜索结果
- 批量处理 分析多篇文章时
- 缓存结果 以避免重复的API调用
- 监控速率限制 防止API节流
- 使用特定的PMID 尽可能加快检索速度
