mcpField
P
PubMed MCP Server

PubMed MCP Server

本地服务
github.com/chrismannina数据与分析1071 周前更新

关于 PubMed MCP Server

PubMed MCP Server 让研究和医疗领域用户通过 MCP 搜索并分析 PubMed 文献。它结合细化筛选、文章查询、引文导出、相关文章发现和趋势分析。

主要功能

  1. 01按日期、作者、期刊和 MeSH 筛选搜索
  2. 02获取文章详情与摘要
  3. 03以多种格式导出引文
  4. 04查找相关文章和作者论文
  5. 05分析发表趋势
  6. 06缓存结果并限制请求速率

适用场景

  1. 01查找符合研究问题的文献
  2. 02按 PMID 获取文章元数据和摘要
  3. 03为研究文档准备引文
  4. 04查看主题的发表趋势

MCP 相关

它向 MCP 客户端提供 PubMed 搜索、文章查询、引文、作者、相关文章、MeSH 和趋势分析工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

PubMed MCP 服务

CI

用于 PubMed 文献搜索和管理的综合性模型上下文协议(MCP)服务。此服务通过 MCP 协议提供高级搜索功能、引文格式化和研究分析工具。

PubMed MCP 服务

功能

  • 高级 PubMed 搜索:使用复杂筛选条件进行搜索,包括日期范围、文章类型、作者、期刊和 MeSH 术语
  • 文章详情:获取特定 PMID 的详细信息,包括摘要、作者和元数据
  • 引文导出:以多种格式导出引文(BibTeX、APA、MLA、Chicago、Vancouver、EndNote、RIS)
  • 作者搜索:查找特定作者的文章及其合著者信息
  • 相关文章:发现与特定 PMID 相关的文章
  • MeSH 术语搜索:搜索和浏览医学主题词
  • 期刊分析:获取特定期刊的指标和近期文章
  • 研究趋势:分析随时间变化的出版趋势
  • 文章比较:并排比较多篇文章
  • 缓存:内置缓存,提升性能
  • 速率限制:通过可配置的速率限制,规范地使用 API

安装

前置条件
  • Python 3.8 或更高版本
  • NCBI API 密钥(需免费注册)
  • 用于 NCBI API 身份验证的有效电子邮件地址
快速开始
  1. 克隆仓库:

    git clone https://github.com/your-org/pubmed-mcp.git
    cd pubmed-mcp
    
  2. 安装依赖项:

    pip install -r requirements.txt
    
  3. 设置环境变量:

    cp env.example .env
    # Edit .env with your NCBI API key and email
    
  4. 运行服务:

    python -m src.main
    
开发环境安装

安装开发所需的其他工具:

make install-dev

或手动安装:

pip install -r requirements.txt
pip install -e .
pip install black isort mypy flake8

配置

在项目根目录中创建 .env 文件,并添加以下变量:

# Required
PUBMED_API_KEY=your_ncbi_api_key_here
[email protected]

# Optional
CACHE_TTL=300
CACHE_MAX_SIZE=1000
RATE_LIMIT=3.0
LOG_LEVEL=info
获取 NCBI API 密钥
  1. 访问 NCBI 账户设置
  2. 登录或创建账户
  3. 前往“API 密钥管理”
  4. 创建新的 API 密钥
  5. 将密钥复制到 .env 文件

用法

可用工具

此服务提供以下 MCP 工具:

1. search_pubmed

使用高级筛选选项搜索 PubMed。

{
  "query": "machine learning healthcare",
  "max_results": 20,
  "date_range": "5y",
  "article_types": ["Journal Article", "Review"],
  "has_abstract": true
}
2. get_article_details

获取特定 PMID 的详细信息。

{
  "pmids": ["12345678", "87654321"],
  "include_abstracts": true,
  "include_citations": false
}
3. search_by_author

搜索特定作者发表的文章。

{
  "author_name": "Smith J",
  "max_results": 10,
  "include_coauthors": true
}
4. export_citations

以多种格式导出引文。

{
  "pmids": ["12345678"],
  "format": "bibtex",
  "include_abstracts": false
}
5. find_related_articles

查找与特定 PMID 相关的文章。

{
  "pmid": "12345678",
  "max_results": 10
}
6. search_mesh_terms

使用 MeSH 术语进行搜索。

{
  "term": "Machine Learning",
  "max_results": 20
}
7. analyze_research_trends

分析随时间变化的出版趋势。

{
  "topic": "artificial intelligence",
  "years_back": 5,
  "include_subtopics": false
}
通过 MCP 客户端使用示例
import asyncio
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

async def main():
    server_params = StdioServerParameters(
        command="python",
        args=["-m", "src.main"]
    )

    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            # Initialize the session
            await session.initialize()

            # Search PubMed
            result = await session.call_tool(
                "search_pubmed",
                {
                    "query": "COVID-19 vaccines",
                    "max_results": 5,
                    "date_range": "1y"
                }
            )

            print(result.content[0].text)

if __name__ == "__main__":
    asyncio.run(main())

开发

运行测试
# Run all tests
make test

# Run with coverage
make test-coverage

# Run specific test types
python run_tests.py unit
python run_tests.py integration
python run_tests.py coverage
代码质量
# Format code
make format

# Run linting
make lint

# Type checking
mypy src/
项目结构
pubmed-mcp/
├── src/
│   ├── __init__.py
│   ├── main.py              # Entry point
│   ├── server.py            # MCP server implementation
│   ├── models.py            # Pydantic models
│   ├── pubmed_client.py     # PubMed API client
│   ├── tool_handler.py      # Tool request handlers
│   ├── citation_formatter.py # Citation formatting
│   ├── tools.py             # Tool definitions
│   └── utils.py             # Utility functions
├── tests/                   # Test suite
├── requirements.txt         # Dependencies
├── setup.py                 # Package setup
├── pyproject.toml          # Modern Python config
├── Makefile                # Development commands
├── Dockerfile              # Container setup
└── README.md               # This file

Docker

构建和运行
# Build Docker image
make docker-build

# Run with environment variables
make docker-run PUBMED_API_KEY=your_key PUBMED_EMAIL=your_email
Docker Compose
version: '3.8'
services:
  pubmed-mcp:
    build: .
    environment:
      - PUBMED_API_KEY=your_key
      - PUBMED_EMAIL=your_email
      - LOG_LEVEL=info
    volumes:
      - ./data:/app/data

API 参考

搜索参数
  • query:使用 PubMed 语法的搜索查询
  • max_results:结果的最大数量(1-200)
  • sort_order:排序顺序(relevance、pub_date、author、journal、title)
  • date_from/date_to:日期范围筛选条件
  • date_range:预定义范围(1y、5y、10y、all)
  • article_types:按出版物类型筛选
  • authors:按作者姓名筛选
  • journals:按期刊名称筛选
  • mesh_terms:按 MeSH 术语筛选
  • language:语言筛选条件(例如,'eng'、'fre')
  • has_abstract:仅包含有摘要的文章
  • has_full_text:仅包含有全文的文章
  • humans_only:仅包含人体研究
引用格式
  • bibtex:BibTeX 格式
  • apa:APA 格式
  • mla:MLA 格式
  • chicago:Chicago 格式
  • vancouver:Vancouver 格式
  • endnote:EndNote 格式
  • ris:RIS 格式

贡献

  1. Fork 此仓库
  2. 创建功能分支
  3. 进行更改
  4. 为新功能添加测试
  5. 运行测试套件
  6. 提交拉取请求
开发指南
  • 遵循 PEP 8 风格指南
  • 为所有函数添加类型提示
  • 编写全面的测试
  • 更新新功能的文档
  • 使用约定式提交消息

许可证

本项目基于 MIT 许可证授权,详情请参阅 LICENSE 文件。

支持

致谢

更新日志

详细的更改历史请参阅 CHANGELOG.md。


注意:此服务需要有效的 NCBI API 密钥,并遵循 NCBI 的使用指南。请遵守 API 速率限制和服务条款。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。