使用说明
PubMed MCP
一种模型上下文协议(MCP)服务器,提供使用NCBI Entrez API搜索PubMed文章的工具。
作者 埃米利奥·德尔加多·穆尼奥斯
特性
- 根据查询在PubMed上搜索文章
- 检索详细信息,包括标题、作者、摘要、期刊和出版日期
- 以JSON格式返回结果
- 可配置的最大结果数
建筑
graph TB
A[User] --> B[MCP Server<br/>pubmed_server.py]
B --> C[search_pubmed function]
C --> D[Entrez.esearch<br/>Search in PubMed]
D --> E[PubMed database<br/>NCBI]
E --> F[List of PMIDs]
F --> G[Entrez.efetch<br/>Fetch details]
G --> E
G --> H[Article XML records]
H --> I[Data processing]
I --> J[Extraction of:<br/>- Title<br/>- Authors<br/>- Abstract<br/>- Journal<br/>- Date]
J --> K[List of articles<br/>in JSON format]
K --> L[Response to user]
subgraph "Dependencies"
M[BioPython<br/>requirements.txt]
N[FastMCP<br/>requirements.txt]
end
B -.-> M
B -.-> N
subgraph "Configuration"
O[Entrez.email<br/>Configured in code]
end
C -.-> O
style A fill:#e1f5fe
style L fill:#c8e6c9
style E fill:#fff3e0
安装
-
克隆此存储库:
git clone <repository-url> cd PubMed-MCP -
安装依赖项:
uv sync -
在中配置您的电子邮件
pubmed_server.py:Entrez.email = 'your-email@example.com' # Replace with your actual email
VS代码配置
要在VS Code中本地使用此MCP服务器,该项目包括一个预配置的 .vscode/mcp.json 文件。这个文件告诉VS Code如何运行MCP服务器。
配置已设置为使用 uv 运行服务器:
{
"servers": {
"pubmed-mcp": {
"command": "uv",
"args": ["run", "${workspaceFolder}/pubmed_server.py"]
}
}
}
VS代码集成要求
- 支持MCP扩展的VS代码
uv已安装包管理器- Python虚拟环境设置
替代配置
如果你更喜欢使用 pip 而不是 uv,您可以修改 .vscode/mcp.json 文件:
{
"servers": {
"pubmed-mcp": {
"command": "python",
"args": ["${workspaceFolder}/pubmed_server.py"]
}
}
}
使用此配置时,请确保您的虚拟环境已激活。
需求
- Python 3.11+
- 生物Python
- FastMCP
用法
运行MCP服务器:
python pubmed_server.py
服务器将启动并监听stdin/stdout上的MCP协议消息。
可用工具
搜索已提交
在PubMed中搜索与给定查询匹配的文章。
参数:
query(string):搜索查询max_results(整数,可选):返回的最大结果数(默认值:10)title(bool,可选):如果为true(默认),则在标题字段中搜索abstract(bool,可选):如果为true(默认),则在抽象字段中搜索keywords(bool,可选):如果为true(默认),则使用作者关键字展开搜索([ot])和MeSH标题([mh])
字段逻辑:
title=True和abstract=True->查询应用为(your terms)[tiab]- 仅
title=True->(your terms)[ti] - 仅
abstract=True->(your terms)[ab] - 均为false->无字段标签(所有字段)
keywords=True->或扩展为(your terms)[ot] OR (your terms)[mh]
优化查询示例:
query = "breast cancer metastasis"
title=True, abstract=True, keywords=True -> (breast cancer metastasis)[tiab] OR ((breast cancer metastasis)[ot] OR (breast cancer metastasis)[mh])
title=True, abstract=False, keywords=False -> (breast cancer metastasis)[ti]
title=False, abstract=False, keywords=True -> (breast cancer metastasis) OR ((breast cancer metastasis)[ot] OR (breast cancer metastasis)[mh])
退货: 包含以下内容的文章对象列表:
pmid:PubMed IDtitle:文章标题authors:作者姓名列表abstract:文章摘要journal:日志名称publication_year:出版年份publication_month:出版月份url:PubMed URL
配置
在使用该工具之前,您必须在 Entrez.email 变量。这是NCBI的Entrez API所要求的。
许可证
这个项目是开源的。请检查许可证文件以了解详细信息。
贡献
欢迎投稿!请随时提交拉取请求。