返回市场
PubMed-MCP服务器

PubMed-MCP服务器

作者:cyanheads34 星标更新:2025-09-27

项目介绍

<div align="center">

pubmed-mcp-server

通过无缝集成PubMed来增强您的AI代理和研究工具!

TypeScript Model Context Protocol Version License Status GitHub

</div>

一个生产级别的模型上下文协议(MCP)服务器,使AI代理和研究工具能够全面访问PubMed。通过NCBI E-utilities实现高级自动化工作流程,用于搜索、检索、分析和可视化生物医学和科学文献。

基于cyanheads/mcp-ts-template,此服务器采用模块化架构,并具有强大的错误处理、日志记录和安全特性。

🚀 核心能力:PubMed 工具 🛠️

此服务器为您的AI提供了与PubMed交互的专用工具:

工具名称描述示例
pubmed_search_articles根据查询在PubMed中搜索文章。查看示例
pubmed_fetch_contents检索PubMed文章的详细信息。查看示例
pubmed_article_connections查找相关文章(被引用的文章、相似的文章、参考文献)或格式化PMID的引用。示例 1, 示例 2
pubmed_research_agent从组件细节生成标准化的JSON研究计划大纲。查看示例
pubmed_generate_chart从给定的输入数据生成图表图像(PNG)。查看示例

目录

概述功能安装
配置项目结构
工具开发与测试许可证

概述

PubMed MCP服务器充当桥梁,允许理解模型上下文协议(MCP)的应用程序(MCP客户端)——如高级AI助手(LLMs)、IDE扩展或自定义研究工具——直接高效地与PubMed庞大的生物医学文献数据库进行交互。

无需复杂的API集成或手动搜索,您的工具可以利用此服务器来:

  • 自动化研究工作流:搜索文献,获取全文元数据,跟踪引用,生成研究计划。
  • 获得研究洞察:访问详细的出版数据、作者信息、期刊详情、MeSH术语和引用网络,无需离开主机应用程序。
  • 将PubMed整合到AI驱动的研究中:使LLMs能够进行文献综述,分析研究趋势,并支持基于证据的决策。
  • 可视化研究数据:从出版物元数据和搜索结果生成图表和可视化。

基于强大的mcp-ts-template,此服务器提供了一种标准化、安全且高效的通过MCP标准暴露PubMed功能的方法。它通过与NCBI的E-utilities API集成,确保遵守速率限制并提供全面的错误处理。

开发者提示:此存储库包括一个.clinerules文件,作为您的LLM编码代理的快速参考指南,包含代码库模式、文件位置和代码片段的快速参考。

功能

核心实用工具

利用mcp-ts-template提供的强大实用工具:

  • 日志记录:结构化的可配置日志记录(文件轮换、stdout JSON、MCP通知),并带有敏感数据删除。
  • 错误处理:集中式错误处理,标准化错误类型(McpError),并自动记录。
  • 配置:环境变量加载(dotenv),使用Zod进行全面验证。
  • 输入验证/清理:使用zod进行模式验证和自定义清理逻辑。
  • 请求上下文:通过唯一的请求ID跟踪和关联操作,使用AsyncLocalStorage
  • 类型安全性:通过TypeScript和Zod模式强制执行强类型。
  • HTTP传输:使用Hono的高性能HTTP服务器,支持会话管理和身份验证。
  • 身份验证:支持JWT和OAuth 2.1的强大身份验证层,具有细粒度的作用域执行。
  • 部署:多阶段Dockerfile,用于创建小型、安全的生产镜像,支持本机依赖项。

PubMed 集成

  • NCBI E-utilities 集成:全面访问ESearch、EFetch、ELink和ESummary API,并自动解析XML。
  • 高级搜索功能:复杂查询构建,包括日期范围、出版类型、作者过滤器和MeSH术语支持。
  • 全文元数据:检索完整的出版数据,包括摘要、作者、隶属关系、期刊信息、DOI和引用数据。
  • 引用网络分析:通过ELink集成查找相关文章、引用文章和参考文献列表。
  • 研究规划:生成结构化的研究计划,具有自动文献搜索策略。
  • 数据可视化:从出版物元数据创建PNG图表(条形图、折线图、散点图、饼图、气泡图、雷达图、极区图)。
  • 多种输出格式:支持JSON、MEDLINE文本、完整XML和格式化引用(RIS、BibTeX、APA、MLA)。
  • 批处理:高效处理多个PMID,支持分页。

安装

先决条件

MCP客户端设置

将以下内容添加到您的MCP客户端配置文件(例如,cline_mcp_settings.json)中。 此配置使用npx运行服务器,如果尚未存在,将自动安装该包。 所有环境变量都是可选的,但建议在生产环境中使用。建议使用NCBI API密钥以避免速率限制问题。

{
  "mcpServers": {
    "pubmed-mcp-server": {
      "command": "npx",
      "args": ["@cyanheads/pubmed-mcp-server"],
      "env": {
        "MCP_LOG_LEVEL": "debug",
        "MCP_TRANSPORT_TYPE": "http",
        "MCP_HTTP_PORT": "3017",
        "NCBI_API_KEY": "YOUR_NCBI_API_KEY_HERE"
      }
    }
  }
}

如果手动运行(不是通过MCP客户端进行开发或测试)

通过npm安装

npm install @cyanheads/pubmed-mcp-server

或者从源代码安装

  1. 克隆仓库:
    git clone https://github.com/cyanheads/pubmed-mcp-server.git
    cd pubmed-mcp-server
    
  2. 安装依赖项:
    npm install
    
  3. 构建项目:
    npm run build
    

配置

环境变量

使用环境变量配置服务器。对于本地开发,这些可以在项目根目录中的.env文件或直接在您的环境中设置。否则,您可以在上面所示的MCP客户端配置中设置它们。

变量描述默认值
MCP_TRANSPORT_TYPE传输机制:stdiohttpstdio
MCP_HTTP_PORTHTTP服务器端口(如果MCP_TRANSPORT_TYPE=http)。3017
MCP_HTTP_HOSTHTTP服务器的主机地址(如果MCP_TRANSPORT_TYPE=http)。127.0.0.1
MCP_ALLOWED_ORIGINSCORS允许的来源列表(逗号分隔,如果MCP_TRANSPORT_TYPE=http)。(无)
MCP_LOG_LEVEL日志级别(debuginfonoticewarningerrorcritalertemerg)。debug
MCP_AUTH_MODEHTTP的身份验证模式:jwtoauthjwt
MCP_AUTH_SECRET_KEY对于jwt认证是必需的。 最小32个字符的JWT认证密钥。(无)
NCBI_API_KEY建议。 您的NCBI API密钥,用于更高的速率限制和可靠的访问。(无)
LOGS_DIR日志文件存储目录。logs/
NODE_ENV运行时环境(developmentproduction)。development

项目结构

代码库在src/目录内遵循模块化结构:

src/
├── index.ts              # 入口点:初始化并启动服务器
├── config/               # 配置加载(环境变量、包信息)
│   └── index.ts
├── mcp-server/           # 核心MCP服务器逻辑和功能注册
│   ├── server.ts         # 服务器设置,功能注册
│   ├── transports/       # 传输处理(stdio,http)
│   └── tools/            # MCP工具实现(每个工具子目录)
├── services/             # 外部服务集成
│   └── NCBI/             # NCBI E-utilities API客户端和解析
├── types-global/         # 共享的TypeScript类型定义
└── utils/                # 常用工具函数(日志记录器,错误处理器等)

要查看详细的文件树,请运行npm run tree或参见docs/tree.md

工具

PubMed MCP服务器提供了一整套工具,用于生物医学文献研究,可通过模型上下文协议调用。

工具名称描述关键参数
pubmed_search_articles使用查询、过滤器和日期范围在PubMed中搜索文章。queryTermmaxResults?sortBy?dateRange?filterByPublicationTypes?fetchBriefSummaries?
pubmed_fetch_contents使用PMID或搜索历史获取详细的文章信息。pmids?queryKey?webEnv?detailLevel?includeMeshTerms?includeGrantInfo?
pubmed_article_connections查找给定PMID的相关文章、引用和参考文献。sourcePmidrelationshipType?maxRelatedResults?citationStyles?
pubmed_research_agent生成具有文献搜索策略的结构化研究计划。project_title_suggestionprimary_research_goalresearch_keywordsorganism_focus?p1_*
pubmed_generate_chart从结构化的出版物数据创建可定制的PNG图表。chartTypedataValuesxFieldyFieldtitle?seriesField?sizeField?

注意:所有工具都支持全面的错误处理,并返回结构化的JSON响应。

示例

每个工具的综合使用示例可在examples/目录中找到。

开发与测试

开发脚本

# 构建项目(编译TS到JS并在dist/中生成可执行文件)
npm run build

# 清理构建工件
npm run clean

# 清理构建工件并重新构建项目
npm run rebuild

# 检查代码库
npm run lint

# 使用Prettier格式化代码
npm run format

# 为文档生成文件树表示
npm run tree

启动服务器

# 使用stdio(默认)启动服务器
npm start
# 或显式:
npm run start:stdio

# 使用HTTP传输启动服务器
npm run start:http

# 使用MCP检查工具(stdio传输)在本地测试服务器
npm run inspector

# 使用MCP检查工具(http传输)在本地测试服务器
npm run inspector:http

许可证

本项目根据Apache License 2.0许可 - 详情请参阅LICENSE文件。


<div align="center"> 由<a href="https://modelcontextprotocol.io/">模型上下文协议</a>构建 </div>