PubMed MCP 服务器作为一座桥梁,让理解模型上下文协议(MCP)的应用程序(MCP 客户端),如先进的人工智能助手(大语言模型)、集成开发环境(IDE)扩展或自定义研究工具,能够直接且高效地与 PubMed 庞大的生物医学文献数据库进行交互。借助该服务器,工具无需进行复杂的 API 集成或手动搜索,即可实现研究工作流程自动化、获取研究见解、将 PubMed 集成到人工智能驱动的研究中以及可视化研究数据等功能。
PubMed MCP 服务器允许理解模型上下文协议(MCP)的应用程序(如高级人工智能助手、IDE 扩展或自定义研究工具)直接与 PubMed 的生物医学文献数据库进行交互。通过该服务器,你的工具可以:
该服务器基于强大的 mcp-ts-template 构建,通过 MCP 标准提供了一种标准化、安全且高效的方式来使用 PubMed 功能。
McpError)和自动日志记录。dotenv 加载环境变量,并进行全面验证。zod 进行模式验证和自定义清理逻辑。AsyncLocalStorage 通过唯一请求 ID 跟踪和关联操作。Dockerfile,用于创建支持原生依赖的小型安全生产镜像。npm install @cyanheads/pubmed-mcp-server
git clone https://github.com/cyanheads/pubmed-mcp-server.git
cd pubmed-mcp-server
npm install
npm run build
# 或者
npm run rebuild
# 示例代码,使用 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 响应。
全面的使用示例可在 目录中找到:
examples/generate_pubmed_chart/ 目录中提供了生成的图表示例(条形图、折线图、散点图、饼图、气泡图、雷达图、极坐标图)。使用环境变量配置服务器。这些环境变量在 MCP 客户端配置/设置中设置(例如,Claude Desktop 的 claude_desktop_config.json)。
| 变量 | 描述 | 默认值 |
|---|---|---|
MCP_TRANSPORT_TYPE |
传输机制:stdio 或 http。 |
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 |
日志记录输出模式:file 或 stdout。 |
file |
MCP_AUTH_MODE |
HTTP 的身份验证模式:jwt 或 oauth。 |
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 客户端的配置文件中(例如,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 文件。