Pubmed Mcp Server

Pubmed Mcp Server

🚀 PubMed MCP 服务器

PubMed MCP 服务器作为一座桥梁,让理解模型上下文协议(MCP)的应用程序(MCP 客户端),如先进的人工智能助手(大语言模型)、集成开发环境(IDE)扩展或自定义研究工具,能够直接且高效地与 PubMed 庞大的生物医学文献数据库进行交互。借助该服务器,工具无需进行复杂的 API 集成或手动搜索,即可实现研究工作流程自动化、获取研究见解、将 PubMed 集成到人工智能驱动的研究中以及可视化研究数据等功能。

项目徽章

  • TypeScript
  • Model Context Protocol
  • License
  • Status
  • GitHub

🚀 快速开始

PubMed MCP 服务器允许理解模型上下文协议(MCP)的应用程序(如高级人工智能助手、IDE 扩展或自定义研究工具)直接与 PubMed 的生物医学文献数据库进行交互。通过该服务器,你的工具可以:

  • 自动化研究工作流程:自动搜索文献、获取完整文章元数据、跟踪引用并生成研究计划。
  • 获取研究见解:在不离开宿主应用程序的情况下,访问详细的出版物数据、作者信息、期刊详情、医学主题词表(MeSH)术语和引用网络。
  • 将 PubMed 集成到人工智能驱动的研究中:使大语言模型能够进行文献综述、分析研究趋势并支持基于证据的决策。
  • 可视化研究数据:根据出版物元数据和搜索结果生成图表和可视化。

该服务器基于强大的 mcp-ts-template 构建,通过 MCP 标准提供了一种标准化、安全且高效的方式来使用 PubMed 功能。

✨ 主要特性

核心实用工具

  • 日志记录:结构化、可配置的日志记录(文件轮转、标准输出 JSON、MCP 通知),并对敏感数据进行编辑。
  • 错误处理:集中式错误处理、标准化错误类型(McpError)和自动日志记录。
  • 配置管理:使用 dotenv 加载环境变量,并进行全面验证。
  • 输入验证/清理:使用 zod 进行模式验证和自定义清理逻辑。
  • 请求上下文:使用 AsyncLocalStorage 通过唯一请求 ID 跟踪和关联操作。
  • 类型安全:由 TypeScript 和 Zod 模式强制执行强类型。
  • HTTP 传输:使用 Hono 的高性能 HTTP 服务器,具有会话管理、垃圾回收、跨源资源共享(CORS)和基于 IP 的速率限制。
  • 身份验证:强大的身份验证层,支持 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,并支持分页。

📦 安装指南

前提条件

通过 npm 安装(推荐)

npm install @cyanheads/pubmed-mcp-server

从源代码安装

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

💻 使用示例

基础用法

搜索 PubMed 文章

# 示例代码,使用 search_pubmed_articles 工具搜索文章
# 假设已经安装并配置好服务器
# 这里只是示意调用方式,实际使用需根据环境调整
npx @cyanheads/pubmed-mcp-server search_pubmed_articles --queryTerm "biomedical research"

高级用法

生成研究计划

# 使用 pubmed_research_agent 工具生成结构化研究计划
npx @cyanheads/pubmed-mcp-server pubmed_research_agent --project_title_suggestion "New Biomedical Study" --primary_research_goal "Explore new treatment methods" --research_keywords "biomedicine, treatment"

工具使用示例

该服务器为生物医学文献研究提供了一套全面的工具,可通过模型上下文协议调用。

工具名称 描述 关键参数
search_pubmed_articles 使用查询、过滤器和日期范围在 PubMed 中搜索文章。 queryTerm, maxResults?, sortBy?, dateRange?, filterByPublicationTypes?, fetchBriefSummaries?
fetch_pubmed_content 使用 PMID 或搜索历史记录获取详细的文章信息。 pmids?, queryKey?, webEnv?, detailLevel?, includeMeshTerms?, includeGrantInfo?
get_pubmed_article_connections 查找给定 PMID 的相关文章、引用和参考文献。 sourcePmid, relationshipType?, maxRelatedResults?, citationStyles?
pubmed_research_agent 生成具有文献搜索策略的结构化研究计划。 project_title_suggestion, primary_research_goal, research_keywords, organism_focus?, p1_*, 等
generate_pubmed_chart 根据结构化的出版物数据创建可定制的 PNG 图表。 chartType, dataValues, xField, yField, title?, seriesField?, sizeField?

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

详细使用示例

全面的使用示例可在 目录中找到:

  • 搜索 PubMed 文章
  • 获取文章内容
  • 文章关联
  • 研究规划
  • 图表生成 - examples/generate_pubmed_chart/ 目录中提供了生成的图表示例(条形图、折线图、散点图、饼图、气泡图、雷达图、极坐标图)。

📚 详细文档

配置

环境变量

使用环境变量配置服务器。这些环境变量在 MCP 客户端配置/设置中设置(例如,Claude Desktop 的 claude_desktop_config.json)。

变量 描述 默认值
MCP_TRANSPORT_TYPE 传输机制:stdiohttp stdio
MCP_HTTP_PORT HTTP 服务器的端口(如果 MCP_TRANSPORT_TYPE=http)。 3010
MCP_HTTP_HOST HTTP 服务器的主机地址(如果 MCP_TRANSPORT_TYPE=http)。 127.0.0.1
MCP_ALLOWED_ORIGINS 跨源资源共享(CORS)允许的源的逗号分隔列表(如果 MCP_TRANSPORT_TYPE=http)。
MCP_LOG_LEVEL 日志记录级别(debug, info, notice, warning, error, crit, alert, emerg)。 debug
LOG_OUTPUT_MODE 日志记录输出模式:filestdout file
MCP_AUTH_MODE HTTP 的身份验证模式:jwtoauth jwt
MCP_AUTH_SECRET_KEY JWT 身份验证必需。JWT 身份验证的最小 32 字符密钥。
NCBI_API_KEY 建议提供。用于更高速率限制和可靠访问的 NCBI API 密钥。
NCBI_TOOL_IDENTIFIER NCBI E-utility 请求的工具标识符。 @cyanheads/pubmed-mcp-server
LOGS_DIR 日志文件存储目录(如果 LOG_OUTPUT_MODE=file)。 logs/

MCP 客户端设置

将以下内容添加到 MCP 客户端的配置文件中(例如,cline_mcp_settings.json)。此配置使用 npx 运行服务器,如果尚未安装该软件包,将自动进行安装:

{
"mcpServers": {
"pubmed-mcp-server": {
"command": "npx",
"args": ["@cyanheads/pubmed-mcp-server"],
"env": {
"NCBI_API_KEY": "your_ncbi_api_key_here"
},
"disabled": false,
"autoApprove": []
}
}
}

项目结构

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

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

如需详细的文件树,请运行 npm run tree 或查看 docs/tree.md。

开发

构建和测试

# 构建项目(将 TypeScript 编译为 JavaScript 并生成可执行文件)
npm run build

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

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

# 清理构建产物
npm run clean

# 生成用于文档的文件树表示
npm run tree

# 清理构建产物并重新构建项目
npm run rebuild

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

# 使用 stdio 启动服务器(默认)
npm start
# 或者明确指定
npm run start:stdio

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

📄 许可证

本项目采用 Apache 许可证 2.0 版 - 详情请参阅 LICENSE 文件。


使用 模型上下文协议 构建
  • 0 关注
  • 0 收藏,21 浏览
  • system 提出于 2025-09-22 02:00

相似服务问题

相关AI产品