PubMed文献搜索服务器

一个为PubMed数据库访问优化的模型上下文协议(MCP)服务器,提供生物医学文献搜索、检索和分析功能,支持本地和远程部署。

  • by aglitch120
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 aglitch120/pubmed-remote

使用说明

PubMed MCP服务器-远程版

用于PubMed数据库访问的综合模型上下文协议(MCP)服务器,针对render.com和其他云平台上的部署进行了优化。该服务器通过本地(stdio)和远程(SSE/HTTP)传输提供高级生物医学文献搜索、检索和分析功能。

🚀 特性

🔧 工具

  • search_pubmed:使用全面的摘要和元数据搜索PubMed
  • get_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(建议用于远程访问)

  1. 分叉或克隆此存储库

  2. 连接到Render.com

    • 注册地址: render.com
    • 点击“新建+”→ “Web服务”
    • 连接您的GitHub存储库
  3. 配置环境变量 在渲染仪表板中:

    NODE_ENV=production
    MCP_TRANSPORT=sse
    PORT=8000
    HOST=0.0.0.0
    LOG_LEVEL=info
    NCBI_EMAIL=your-email@example.com
    
  4. 部署

    • 渲染将自动检测 render.yaml 并部署
    • 您的服务URL将是: https://pubmed-mcp-server.onrender.com
  5. 添加到克劳德桌面

添加到您的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:本地安装

  1. 克隆并安装
git clone <repository-url>
cd pubmed-mcp-remote
npm install
npm run build
  1. 配置为本地模式

添加到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 terms

2.文献检索

Tool: search_pubmed
Query: "diabetes treatment 2023"
Max Results: 10
→ Returns: Detailed articles with abstracts and metadata

3.引文分析

Tool: get_citation_counts
PMIDs: ["36038128", "30105375"]
→ Returns: Citation counts and citing articles

4.批量处理

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 请求之间

🛡️ 利率限制和最佳实践

  1. NCBI指南合规性

    • 始终在中提供有效的电子邮件地址 NCBI_EMAIL
    • 遵守API速率限制(每秒3次请求,无API密钥)
    • 使用请求之间的延迟(自动处理)
  2. 错误处理

    • 网络连接问题
    • 无效的PMID或查询
    • API超时
    • 缺少全文内容
  3. 性能优化

    • 对多个物品使用批处理
    • 尽可能缓存结果
    • 使用查询优化以获得更好的搜索结果

🏗️ 项目结构

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 用于自动部署的文件:

  1. 将代码推送到GitHub
  2. 将存储库连接到Render
  3. 渲染自动部署使用 render.yaml
  4. 更新Render仪表板中的环境变量

其他平台

对于部署到其他平台(Heroku、AWS、DigitalOcean等):

  1. 集 MCP_TRANSPORT=sse 环境变量
  2. 集 PORT 达到平台要求值
  3. 跑 npm run build && npm run start:remote

📖 MeSH项优化

服务器包括广泛的医学术语映射:

  • 新冠肺炎和疫苗:新冠肺炎,冠状病毒,疫苗接种
  • 心血管:心脏病发作、心肌梗死
  • 癌症:肿瘤、肿瘤学、癌
  • 心理健康:抑郁、焦虑
  • 学习类型:临床试验、荟萃分析、随机对照试验
  • 治疗类型:治疗、手术、药物

🤝 贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 彻底测试(本地和远程模式)
  5. 提交拉取请求

📝 版本历史

v1.0.2(当前)

  • ✨ 增加了远程/SSE传输支持
  • 🌐 Render.com部署配置
  • 🔧 环境变量配置
  • 📊 健康检查端点
  • ⚡ 双模式支持(stdio/SSE)

v1.0.1

  • 🆕 类似文章功能
  • 📊 引文分析改进

v1.0.0

  • 🚀 初始版本
  • 📖 PubMed核心功能

📄 许可证

MIT许可证-有关详细信息,请参阅许可证文件

🙋‍♂️ 支持

对于问题或疑问:

  1. 检查现有的GitHub问题
  2. 创建具有详细描述的新问题
  3. 包括错误消息和再现步骤

🔗 相关资源

🎯 快速入门检查表

  • []克隆存储库
  • []安装依赖项(npm install)
  • []构建项目(npm run build)
  • []设置 NCBI_EMAIL 环境变量
  • []选择部署模式(本地或远程)
  • []配置Claude桌面
  • []使用简单的搜索查询进行测试

⚡ 性能提示

  1. 使用查询优化 为了获得更好的搜索结果
  2. 批量处理 分析多篇文章时
  3. 缓存结果 以避免重复的API调用
  4. 监控速率限制 防止API节流
  5. 使用特定的PMID 尽可能加快检索速度