🚀 PubMed MCP 服務器
PubMed MCP 服務器作為一座橋樑,讓理解模型上下文協議(MCP)的應用程序(MCP 客戶端),如先進的人工智能助手(大語言模型)、集成開發環境(IDE)擴展或自定義研究工具,能夠直接且高效地與 PubMed 龐大的生物醫學文獻數據庫進行交互。藉助該服務器,工具無需進行復雜的 API 集成或手動搜索,即可實現研究工作流程自動化、獲取研究見解、將 PubMed 集成到人工智能驅動的研究中以及可視化研究數據等功能。
項目徽章
🚀 快速開始
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
從源代碼安裝
- 克隆倉庫:
git clone https://github.com/cyanheads/pubmed-mcp-server.git
cd pubmed-mcp-server
- 安裝依賴:
npm install
- 構建項目:
npm run build
npm run rebuild
💻 使用示例
基礎用法
搜索 PubMed 文章
npx @cyanheads/pubmed-mcp-server search_pubmed_articles --queryTerm "biomedical research"
高級用法
生成研究計劃
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 |
傳輸機制: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 客戶端設置
將以下內容添加到 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。
開發
構建和測試
npm run build
npm run inspector
npm run inspector:http
npm run clean
npm run tree
npm run rebuild
npm run format
npm start
npm run start:stdio
npm run start:http
📄 許可證
本項目採用 Apache 許可證 2.0 版 - 詳情請參閱 LICENSE 文件。