PubMed论文搜索服务

基于Python和FastAPI构建的PubMed论文搜索服务,支持通过NCBI E-utilities进行论文检索和元数据获取。

  • by CellCS
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 CellCS/pubmed-mcp

使用说明

PubMed MCP服务器

PubMed MCP服务器使用Python、FastAPI和FastMCP构建,用于使用NCBI电子实用程序搜索PubMed论文。

特性

  • MCP工具 search_pubmed(query, max_results, retstart, sort) 用于纸张搜索
  • MCP工具 get_pubmed_article(pmid) 获取完整元数据和摘要
  • MCP工具 get_pubmed_abstract(pmid) 仅用于摘要检索
  • MCP HTTP端点的可选承载令牌保护
  • 可配置的MCP路由路径和NCBI请求速率限制

项目结构

  • main.py:仅限最小入口点
  • app/server.py:FastAPI/MCP应用程序组装和接线
  • app/tools.py:MCP工具处理程序
  • app/config.py:环境设置和承载认证中间件
  • app/models.py:响应数据模型
  • app/pubmed_client.py:PubMed电子实用程序客户端和XML解析

环境变量

复制并填写 .env.example 作为 .env:

  • PUBMED_EMAIL:NCBI要求
  • PUBMED_API_KEY:可选,提高吞吐量
  • PUBMED_EUTILS_LIMIT:每秒请求数限制(默认值 10)
  • MCP_HTTP_PATH:安装MCP的路径(默认 /pubmed-mcp)
  • MCP_BEARER_TOKENS:逗号分隔的有效承载令牌

如果 MCP_BEARER_TOKENS 为空,身份验证已禁用。

跑

sh deploy-container.sh

健康检查

curl http://localhost:8001/health

MCP端点: <host>/pubmed-mcp 喜欢 http://127.0.0.1:8001/pubmed-mcp

安全扫描

安装所有依赖项,包括开发工具:

uv sync --dev

运行安全扫描:

bash security-scan.sh

工件生成于 security-scan-results/.

MCP配置

对于 开源代码

"pubmed-mcp": {
    "type": "remote",
    "url": "http://127.0.0.1:8001/pubmed-mcp",
    "oauth": false,
    "headers": {
        "Authorization": "Bearer your-mcp-token-1"
    }
}

对于 克莱恩:

"pubmed-mcp": {
    "autoApprove": [],
    "disabled": false,
    "timeout": 60,
    "type": "streamableHttp",
    "url": "http://127.0.0.1:8001/pubmed-mcp",
    "headers": {
    "Authorization": "Bearer your-mcp-token-1"
    }
}

备注

  • 此服务器使用NCBI E-utility API终结点(esearch, esummary, efetch).
  • 保持你的 PUBMED_EMAIL 有效并遵循NCBI使用指南:https://www.ncbi.nlm.nih.gov/books/NBK25497/
  • 检查 E-utilities Quick Start 有关NCBI使用指南:https://www.ncbi.nlm.nih.gov/books/NBK25500/#chapter1.For_More_Information_8
  • 检查 A General Introduction to the E-utilities 有关NCBI使用指南:https://www.ncbi.nlm.nih.gov/books/NBK25497/

安全扫描摘要

扫描 状态
依赖关系扫描 通过
静态安全扫描 PASS
秘密扫描 通过
集装箱扫描 通过
SBOM 通行证

安全详细信息

示例

临床试验