PubTator-MCP平台
🔍 基于PubTator3的生物医学文献标注与关系挖掘服务器,通过MCP接口提供便捷访问。
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"pubtator": {
"args": [
"-c",
"source /home/YOUR/PATH/mcp-server-pubtator/.venv/bin/activate \u0026\u0026 python /home/YOUR/PATH/pubtator_server.py"
],
"autoApprove": [],
"command": "bash",
"disabled": false,
"env": {
"MCP_HOST": "127.0.0.1",
"MCP_PORT": "8888",
"MCP_TRANSPORT": "tcp"
}
}
}
}
服务介绍
PubTator MCP 服务器
🔍 基于 PubTator3 的生物医学文献注释和关系挖掘服务器,通过 MCP 接口提供便捷的访问方式。
PubTator MCP 服务器通过 Model Context Protocol (MCP) 提供对 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
在设置 → 光标设置 → MCP → 添加新服务器中粘贴:
- 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
这将启动一个包含 PubTator MCP 服务器的 Docker 容器,并将其暴露在 8080 端口上。
故障排除
如果您在启动服务器时遇到任何问题:
- 检查控制台输出中的错误信息。
- 确保安装了所有必需的依赖项(请参阅“要求”部分)。
- 确认环境变量设置正确。
- 如果服务器无法启动,尝试以增加详细程度的方式运行它:
python -v pubtator_server.py
这将提供更详细的日志信息,帮助识别任何问题的来源。
在使用 Docker 时,您可以使用以下命令检查日志:
docker logs <container_id>
配置
Claude 桌面配置
添加到 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", # Supported: pubtator, biocxml, biocjson
full_text=False # Whether to include full text
)
2. 实体 ID 查找 (find_entity_id)
通过自由文本查询生物概念的标准标识符:
result = await find_entity_id(
query="COVID-19",
concept="disease", # Optional: gene, disease, chemical, species, mutation
limit=5 # Optional: limit number of results
)
3. 关系查询 (find_related_entities)
查找与指定实体相关的其他实体:
result = await find_related_entities(
entity_id="@DISEASE_COVID_19",
relation_type="treat", # Optional: treat, cause, interact, etc.
target_entity_type="chemical", # Optional: gene, disease, chemical
max_results=5 # Optional: limit number of results
)
4. 文献搜索 (search_pubtator)
搜索 PubTator 数据库:
results = await search_pubtator(
query="COVID-19",
max_pages=1 # Optional: maximum number of pages to retrieve
)
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 的服务条款,并负责任地使用此工具。