返回市场
MCP-PubMed服务器

MCP-PubMed服务器

作者:hhx4654539392 星标更新:2025-10-23

项目介绍

██████╗ ██╗   ██╗██████╗ ███╗   ███╗███████╗██████╗     ██████╗  █████╗ ████████╗ █████╗ 
██╔══██╗██║   ██║██╔══██╗████╗ ████║██╔════╝██╔══██╗   ██╔════╝ ██╔══██╗╚══██╔══╝██╔══██╗
██████╔╝██║   ██║██████╔╝██╔████╔██║█████╗  ██║  ██║   ██║  ███╗███████║   ██║   ███████║
██╔═══╝ ██║   ██║██╔══██╗██║╚██╔╝██║██╔══╝  ██║  ██║   ██║   ██║██╔══██║   ██║   ██╔══██║
██║     ╚██████╔╝██████╔╝██║ ╚═╝ ██║███████╗██████╔╝   ╚██████╔╝██║  ██║   ██║   ██║  ██║
╚═╝      ╚═════╝ ╚═════╝ ╚═╝     ╚═╝╚══════╝╚═════╝     ╚═════╝ ╚═╝  ╚═╝   ╚═╝   ╚═╝  ╚═╝

License: Apache 2.0 Version: v2.0 MCP Compatible PubMed API EndNote Export

🧬 PubMed 数据服务器 v2.0

🔬 极简架构,专注于数据提供 - 为 LLM 提供结构化的 PubMed 文献数据


🎯 核心功能

四项核心功能满足全方位学术研究需求

📚 论文索引搜索 - 智能文献检索

  • 关键词搜索支持复杂的查询语法,精确定位相关文献
  • 批量查询一次性获取多篇论文的详细信息
  • 交叉引用识别相关研究并构建知识网络
  • 事实核查验证研究成果并提供证据支持

💾 智能缓存系统 - 高效的数据管理

  • 本地缓存避免重复调用 API,提高响应速度
  • 缓存统计实时监控缓存状态和存储使用情况
  • 智能更新自动检测数据变化以保持缓存新鲜度
  • 存储优化压缩存储,节省磁盘空间

📄 下载开放获取论文全文 - 开放获取文献检索

  • 全文检测自动识别可下载的开放获取论文
  • 智能下载模拟人类行为以避免被反爬虫机制拦截
  • 批量处理支持大批量论文的下载和管理
  • 格式支持PDF 格式,方便阅读和引用

📋 导出至 EndNote 格式的检查表或待办事项列表 - 文献管理集成

  • RIS 格式兼容主流文献管理软件如 EndNote 和 Zotero
  • BibTeX 格式支持 LaTeX 写作和学术引用
  • 自动导出查询结果自动生成引用文件
  • 批量处理支持大批量文档的批量导出

🌐 代理支持 - 网络环境适应

  • 代理开关控制通过 PROXY_ENABLED 环境变量控制代理功能
  • HTTP/HTTPS 代理支持企业网络和防火墙环境
  • 认证代理支持用户名和密码身份验证的代理服务器
  • 自动检测智能代理配置识别,无缝切换
  • 故障恢复当代理失败时自动降级为直接连接模式
  • 超时重试可配置的代理超时和重试次数

🎯 核心理念

MCP 服务器 = 数据提供者,外部 LLM = 智能分析

用户客户端(LLM) ←→ MCP服务器(PubMed数据) ←→ PubMed API
     ↑                      ↑
  智能分析              数据获取+结构化

核心优势:

  • 极简配置只需 PubMed API 和一个电子邮件
  • LLM友好结构化输出,优化上下文窗口
  • 高效检索批量查询、交叉引用、事实核查

🚀 快速部署

前提条件

安装 Node.js (v18.0.0+):nodejs.org

第一步:下载项目

git clone [项目地址] mcp-pubmed-server
cd mcp-pubmed-server

第二步:安装依赖

npm install

第三步:配置 API 密钥

cp .env.example .env
# 编辑 .env 文件,填入以下内容:
PUBMED_API_KEY=你的NCBI_API密钥
PUBMED_EMAIL=你的邮箱地址

获取 API 密钥:

  1. 访问 NCBI API 密钥管理
  2. 登录您的 NCBI 账户并生成 API 密钥

第四步:测试服务器

node src/index.js
# 看到 "PubMed 数据服务器 v2.0 正在 stdio 上运行" 表示成功

环境变量描述:项目内置 .env 自动加载(使用 dotenv)。在项目根目录创建 .env 文件,例如:

PUBMED_API_KEY=你的NCBI_API密钥
PUBMED_EMAIL=你的邮箱地址
# 摘要截断模式:quick | deep
# quick:1500 字符(快速检索,可能不包含完整摘要)
# deep:6000 字符(深度检索;建议模型上下文窗口 ≥ 120k tokens)
ABSTRACT_MODE=quick
# 全文模式:disabled | enabled | auto
# disabled:禁用全文功能(默认)
# enabled:启用全文检测,手动下载
# auto:启用全文检测,自动下载可用的OA论文
FULLTEXT_MODE=disabled
# EndNote导出:enabled | disabled
# enabled:自动导出RIS和BibTeX格式(默认)
# disabled:禁用EndNote导出
ENDNOTE_EXPORT=enabled
# 代理配置(可选)
# 代理开关:enabled | disabled
PROXY_ENABLED=disabled
# HTTP代理:用于HTTP和HTTPS请求
HTTP_PROXY=http://proxy.example.com:8080
# HTTPS代理:专门用于HTTPS请求
HTTPS_PROXY=https://proxy.example.com:8080
# 支持认证代理:http://username:password@proxy.example.com:8080
# 代理认证(可选)
PROXY_USERNAME=
PROXY_PASSWORD=
# 代理超时设置(秒)
PROXY_TIMEOUT=30
# 代理重试次数
PROXY_RETRY_COUNT=3

第五步:MCP 客户端配置

1. Cline (VS Code 插件) 配置

{
  "mcpServers": {
    "pubmed-data-server": {
      "command": "node",
      "args": ["./src/index.js"],
      "cwd": "完整路径/to/mcp-pubmed-server",
      "env": {
        "PUBMED_API_KEY": "你的API密钥",
        "PUBMED_EMAIL": "你的邮箱地址",
        "ABSTRACT_MODE": "deep",
        "FULLTEXT_MODE": "enabled",
        "PROXY_ENABLED": "disabled",
        "HTTP_PROXY": "",
        "HTTPS_PROXY": ""
      }
    }
  }
}

路径示例:

  • Linux/macOS: /home/user/mcp-pubmed-server
  • Windows: C:/Users/YourUser/mcp-pubmed-server

2. Cherry Studio (Windows) 配置

{
  "mcpServers": {
    "VBFfGqCFz9AuZJXX2f5GL": {
      "name": "pubmed-data-server",
      "type": "stdio",
      "isActive": true,
      "command": "node",
      "args": [
        "Y:/software/mcp-pubmed-server/src/index.js"
      ],
      "env": {
        "PUBMED_API_KEY": "你的API密钥",
        "PUBMED_EMAIL": "你的邮箱地址",
        "ABSTRACT_MODE": "deep",
        "FULLTEXT_MODE": "enabled",
        "PROXY_ENABLED": "disabled",
        "HTTP_PROXY": "",
        "HTTPS_PROXY": ""
      }
    }
  }
}

Windows 网络映射配置说明:

  • Y:/ - Samba 网络驱动器映射路径
  • 您也可以使用本地路径,如 C:/mcp-pubmed-server/src/index.js
  • 注意Cherry Studio 不支持 cwd 参数

3. Claude Desktop 配置

编辑 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) 或 %APPDATA%/Claude/claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "pubmed-data-server": {
      "command": "node",
      "args": ["/mnt/1T/software/mcp-pubmed-server/src/index.js"],
      "cwd": "/mnt/1T/software/mcp-pubmed-server",
      "env": {
        "PUBMED_API_KEY": "你的API密钥",
        "PUBMED_EMAIL": "你的邮箱地址",
        "ABSTRACT_MODE": "deep",
        "FULLTEXT_MODE": "enabled",
        "PROXY_ENABLED": "disabled",
        "HTTP_PROXY": "",
        "HTTPS_PROXY": ""
      }
    }
  }
}

或者使用内置项目模板:

cp config/claude_desktop_config.json.example config/claude_desktop_config.json
# 编辑配置文件,填入API密钥

4. Claude Code (CLI) 配置

编辑 ~/.claude/config.json

{
  "mcpServers": {
    "pubmed-data-server": {
      "command": "node",
      "args": ["/mnt/1T/software/mcp-pubmed-server/src/index.js"],
      "cwd": "/mnt/1T/software/mcp-pubmed-server",
      "env": {
        "PUBMED_API_KEY": "你的API密钥",
        "PUBMED_EMAIL": "你的邮箱地址",
        "ABSTRACT_MODE": "deep",
        "FULLTEXT_MODE": "enabled",
        "PROXY_ENABLED": "disabled",
        "HTTP_PROXY": "",
        "HTTPS_PROXY": ""
      }
    }
  }
}

第六步:验证集成

客户端测试:使用 pubmed_search 工具搜索 "针灸"


🛠️ 11 个高效工具

1 pubmed_search - 智能文献搜索

{
  "query": "针灸 肠道 微生物群",
  "max_results": 20,
  "days_back": 30,
  "sort_by": "relevance"
}

2 pubmed_get_details - 获取详细信息

{
  "pmids": ["38412345", "38412346"],
  "include_full_text": true
}

3 pubmed_extract_key_info - 关键信息提取

{
  "pmid": "38412345",
  "extract_sections": ["basic_info", "abstract_summary", "authors", "keywords"],
  "max_abstract_length": 2000
}

4 pubmed_cross_reference - 交叉引用分析

{
  "pmid": "38412345",
  "reference_type": "相似",
  "max_results": 10
}

5 pubmed_batch_query - 批量查询优化

{
  "pmids": ["38412345", "38412346", "38412347"],
  "query_format": "llm_optimized",
  "include_abstracts": true
}

6 pubmed_detect_fulltext - 检查整体文本的可用性

{
  "pmid": "38412345",
  "auto_download": false
}

7 pubmed_download_fulltext - 下载全文 PDF

{
  "pmid": "38412345",
  "force_download": false
}

8 pubmed_fulltext_status - 全文缓存管理

{
  "action": "stats",
  "pmid": "38412345"
}

9 pubmed_batch_download - 批量智能下载

{
  "pmids": ["38412345", "38412346", "38412347"],
  "human_like": true
}

10 pubmed_system_check - 系统环境检测

{}

11 pubmed_endnote_status - EndNote 导出管理

{
  "action": "stats"
}

🏗️ 架构特点

📊 LLM 输出优化

  • 简单格式标题、作者、期刊、日期
  • 详细格式完整的元数据 + 结构化摘要
  • LLM 优化格式智能截断,关键点提取,关键词组织

上下文窗口管理

  • 摘要截断模式(通过环境变量配置):
    • QUICK 模式:1,500 字符,快速检索,可能不包含完整摘要
    • DEEP 模式:6,000 字符,深度检索;推荐模型上下文窗口 ≥ 120k tokens(批量查询时更保守)
  • 关键点提取(5 个关键点)
  • 信息层次结构化

🔍 事实核查支持

  • 交叉引用相关文献
  • 相似研究比较
  • 回顾文献搜索

⚡ 性能优化

  • 速率限制管理(PubMed API 限制)
  • 批量查询优化(最多 20 个 PMID)
  • 错误重试机制

📝 使用场景

🔬 学术研究辅助

用户:我想了解针灸治疗肠易激综合征的最新研究
LLM → pubmed_search → 获取数据 → 智能分析和总结

✅ 事实核查

用户:这篇论文说某种化合物能治疗癌症,是真的吗?
LLM → pubmed_get_details → pubmed_cross_reference → 核查相关研究

📈 文献综述

用户:帮我分析某个领域的研究趋势
LLM → 批量查询 → 趋势分析 → 研究方向建议

💡 生物学问答

用户:某个蛋白质的功能是什么?
LLM → pubmed_search → pubmed_extract_key_info → 精准回答

📁 项目结构

mcp-pubmed-server/
├── src/
│   └── index.js              # 主服务器代码
├── config/
│   ├── mcp-config.json       # MCP配置模板
│   └── claude_desktop_config.json  # Claude Desktop配置
├── .env.example              # 环境变量模板
├── package.json              # 项目依赖配置
└── README.md                 # 本文件

🔍 故障排除

常见问题

  1. "模块未找到:'@modelcontextprotocol/sdk'"

    npm install
    
  2. "PubMed API 调用失败"

    • 检查 API 密钥是否正确
    • 确认网络连接正常
    • 等待速率限制重置
  3. "环境变量未设置"

    • 确保 .env 文件存在
    • 检查变量名拼写
  4. Cherry Studio 配置错误

    • 使用 src/index.js 的完整路径
    • 不使用 cwd 参数
    • 使用正斜杠 / 或双反斜杠 \\
  5. 代理连接问题

    • 检查 PROXY_ENABLED 设置为 enabled
    • 检查代理服务器地址和端口是否正确
    • 确认代理服务器支持 HTTPS 连接
    • 验证代理认证信息(如有需要)
    • 格式:http://username:password@proxy.example.com:8080
    • 检查代理超时设置是否合理(默认 30 秒)
    • 确认代理重试次数设置(默认 3 次)

部署检查清单

  • [ ] 已安装 Node.js
  • [ ] 已安装依赖项(npm install
  • [ ] 已配置 .env 文件
  • 服务器可以正常启动
  • [ ] MCP 客户端已正确配置

📄 许可证