PubTator-MCP-Server
🔍 一个基于 PubTator3 的生物医学文献标注和关系挖掘服务器,通过 MCP 接口提供便捷访问。
README
PubTator MCP 服务器
🔍 一个基于 PubTator3 的生物医学文献注释和关系挖掘服务器,通过 MCP 接口提供便捷访问。
PubTator MCP 服务器通过模型上下文协议 (MCP) 为 AI 助手提供对 PubTator3 生物医学文献注释系统的访问。它允许 AI 模型以编程方式搜索科学文献、获取注释信息并分析实体关系。
🤝 贡献 • 📝 报告问题
✨ 核心功能
- 🔎 文献注释导出:支持以多种格式导出 PubTator 注释结果 ✅
- 🚀 实体 ID 查找:通过自由文本查询生物学概念的标准标识符 ✅
- 📊 关系挖掘:发现实体之间的生物医学关系 ✅
- 📄 文献搜索:支持通过关键词和实体 ID 检索文献 ✅
- 🧠 批量处理:支持从搜索结果批量导出注释信息 ✅
🚀 快速开始
要求
- Python 3.10+
- FastMCP 库
安装
通过 Smithery
使用 Smithery 自动安装 PubTator 服务器:
Claude
npx -y @smithery/cli@latest install @JackKuo666/pubtator-mcp-server --client claude --config "{}"
Cursor
粘贴到 Settings → Cursor Settings → MCP → Add new server:
- Mac/Linux
npx -y @smithery/cli@latest run @JackKuo666/pubtator-mcp-server --client cursor --config "{}"
Windsurf
npx -y @smithery/cli@latest install @JackKuo666/pubtator-mcp-server --client windsurf --config "{}"
CLine
npx -y @smithery/cli@latest install @JackKuo666/pubtator-mcp-server --client cline --config "{}"
手动安装
-
克隆存储库:
git clone https://github.com/JackKuo666/PubTator-MCP-Server.git cd PubTator-MCP-Server -
安装依赖项:
pip install -r requirements.txt
📊 使用
直接运行服务器
启动 MCP 服务器:
python pubtator_server.py
该服务器现在支持 stdio 和 TCP 传输。 默认情况下,它使用 TCP 传输。 您可以配置以下环境变量:
MCP_TRANSPORT:设置为 "tcp" 以进行 TCP 传输,或设置为 "stdio" 以进行 stdio 传输(默认为 "tcp")MCP_HOST:要绑定的主机(默认为 "0.0.0.0")MCP_PORT:要监听的端口(默认为 8080)
使用自定义设置启动服务器的示例:
MCP_TRANSPORT=tcp MCP_HOST=127.0.0.1 MCP_PORT=8888 python pubtator_server.py
该服务器实现了延迟初始化和适当的错误处理。 它将优雅地处理关闭信号(SIGINT 和 SIGTERM)并记录启动或运行期间发生的任何错误。
使用 Docker
我们提供了一个 Dockerfile 以方便部署。 要使用 Docker 容器:
-
构建 Docker 镜像:
docker build -t pubtator-mcp-server . -
运行 Docker 容器:
docker run -p 8080:8080 pubtator-mcp-server
这将在 Docker 容器内启动 PubTator MCP 服务器,并将其暴露在端口 8080 上。
故障排除
如果您在启动服务器时遇到任何问题:
- 检查控制台输出中的错误消息。
- 确保已安装所有必需的依赖项(请参阅“要求”部分)。
- 验证环境变量是否已正确设置。
- 如果服务器无法启动,请尝试以更高的详细程度运行它:
python -v pubtator_server.py
这将提供更详细的日志记录信息,以帮助识别任何问题的来源。
使用 Docker 时,您可以使用以下命令检查日志:
docker logs <container_id>
配置
Claude Desktop 配置
添加到 claude_desktop_config.json:
(Mac OS)
{
"mcpServers": {
"pubtator": {
"command": "python",
"args": ["-m", "pubtator-mcp-server"]
}
}
}
(Windows)
{
"mcpServers": {
"pubtator": {
"command": "C:\\Users\\YOUR\\PATH\\miniconda3\\envs\\mcp_server\\python.exe",
"args": [
"D:\\code\\YOUR\\PATH\\PubTator-MCP-Server\\pubtator_server.py"
],
"env": {},
"disabled": false,
"autoApprove": []
}
}
}
CLine 配置
{
"mcpServers": {
"pubtator": {
"command": "bash",
"args": [
"-c",
"source /home/YOUR/PATH/mcp-server-pubtator/.venv/bin/activate && python /home/YOUR/PATH/pubtator_server.py"
],
"env": {
"MCP_TRANSPORT": "stdio"
},
"disabled": false,
"autoApprove": []
}
}
}
要使用 TCP 传输,请按如下方式修改配置:
{
"mcpServers": {
"pubtator": {
"command": "bash",
"args": [
"-c",
"source /home/YOUR/PATH/mcp-server-pubtator/.venv/bin/activate && python /home/YOUR/PATH/pubtator_server.py"
],
"env": {
"MCP_TRANSPORT": "tcp",
"MCP_HOST": "127.0.0.1",
"MCP_PORT": "8888"
},
"disabled": false,
"autoApprove": []
}
}
}
🛠 API 功能
PubTator MCP 服务器提供以下核心功能:
1. 导出出版物 (export_publications)
导出指定 PMID 文献的 PubTator 注释结果:
result = await export_publications(
ids=["32133824", "34170578"],
id_type="pmid",
format="biocjson", # 支持:pubtator, biocxml, biocjson
full_text=False # 是否包含全文
)
2. 实体 ID 查找 (find_entity_id)
通过自由文本查询生物学概念的标准标识符:
result = await find_entity_id(
query="COVID-19",
concept="disease", # 可选:gene, disease, chemical, species, mutation
limit=5 # 可选:限制结果数量
)
3. 关系查询 (find_related_entities)
查找与指定实体相关的其他实体:
result = await find_related_entities(
entity_id="@DISEASE_COVID_19",
relation_type="treat", # 可选:treat, cause, interact 等
target_entity_type="chemical", # 可选:gene, disease, chemical
max_results=5 # 可选:限制结果数量
)
4. 文献搜索 (search_pubtator)
搜索 PubTator 数据库:
results = await search_pubtator(
query="COVID-19",
max_pages=1 # 可选:要检索的最大页数
)
5. 批量导出 (batch_export_from_search)
搜索并批量导出文献注释:
results = await batch_export_from_search(
query="COVID-19",
format="biocjson",
max_pages=1,
full_text=False,
batch_size=5
)
注意:实际的函数调用可能因您的实现而异。 这些示例基于我们最近的测试,可能需要进行调整以匹配您的确切 API。
⚠️ 使用限制
- API 请求速率限制:每秒最多 3 个请求
- 批量导出时,使用合理的 batch_size 以避免请求超时
- 对于关系查询,实体 ID 必须以 "@" 开头,例如 "@DISEASE_COVID-19"
📄 许可证
本项目采用 MIT 许可证。
⚠️ 免责声明
此工具仅用于研究目的。 请遵守 PubTator 的服务条款并负责任地使用此工具。
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。