关于 PubMed MCP Server
PubMed MCP Server 让研究和医疗领域用户通过 MCP 搜索并分析 PubMed 文献。它结合细化筛选、文章查询、引文导出、相关文章发现和趋势分析。
主要功能
- 01按日期、作者、期刊和 MeSH 筛选搜索
- 02获取文章详情与摘要
- 03以多种格式导出引文
- 04查找相关文章和作者论文
- 05分析发表趋势
- 06缓存结果并限制请求速率
适用场景
- 01查找符合研究问题的文献
- 02按 PMID 获取文章元数据和摘要
- 03为研究文档准备引文
- 04查看主题的发表趋势
MCP 相关
它向 MCP 客户端提供 PubMed 搜索、文章查询、引文、作者、相关文章、MeSH 和趋势分析工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
暂未收录安装方式
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
PubMed MCP 服务
用于 PubMed 文献搜索和管理的综合性模型上下文协议(MCP)服务。此服务通过 MCP 协议提供高级搜索功能、引文格式化和研究分析工具。
功能
- 高级 PubMed 搜索:使用复杂筛选条件进行搜索,包括日期范围、文章类型、作者、期刊和 MeSH 术语
- 文章详情:获取特定 PMID 的详细信息,包括摘要、作者和元数据
- 引文导出:以多种格式导出引文(BibTeX、APA、MLA、Chicago、Vancouver、EndNote、RIS)
- 作者搜索:查找特定作者的文章及其合著者信息
- 相关文章:发现与特定 PMID 相关的文章
- MeSH 术语搜索:搜索和浏览医学主题词
- 期刊分析:获取特定期刊的指标和近期文章
- 研究趋势:分析随时间变化的出版趋势
- 文章比较:并排比较多篇文章
- 缓存:内置缓存,提升性能
- 速率限制:通过可配置的速率限制,规范地使用 API
安装
前置条件
- Python 3.8 或更高版本
- NCBI API 密钥(需免费注册)
- 用于 NCBI API 身份验证的有效电子邮件地址
快速开始
-
克隆仓库:
git clone https://github.com/your-org/pubmed-mcp.git cd pubmed-mcp -
安装依赖项:
pip install -r requirements.txt -
设置环境变量:
cp env.example .env # Edit .env with your NCBI API key and email -
运行服务:
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 密钥
- 访问 NCBI 账户设置
- 登录或创建账户
- 前往“API 密钥管理”
- 创建新的 API 密钥
- 将密钥复制到
.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 格式
贡献
- Fork 此仓库
- 创建功能分支
- 进行更改
- 为新功能添加测试
- 运行测试套件
- 提交拉取请求
开发指南
- 遵循 PEP 8 风格指南
- 为所有函数添加类型提示
- 编写全面的测试
- 更新新功能的文档
- 使用约定式提交消息
许可证
本项目基于 MIT 许可证授权,详情请参阅 LICENSE 文件。
支持
致谢
- 感谢 NCBI E-utilities 提供 PubMed API 访问
- 感谢 Model Context Protocol 提供 MCP 规范
- 感谢 Anthropic 对 MCP 开发的支持
更新日志
详细的更改历史请参阅 CHANGELOG.md。
注意:此服务需要有效的 NCBI API 密钥,并遵循 NCBI 的使用指南。请遵守 API 速率限制和服务条款。
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。