哈佛PrimeKG的MCP服务器
用于查询的模型上下文协议(MCP)服务器 哈佛 PrimeKG 精准医学知识图谱。
✨ 主要功能:自动更新 -此服务器会自动下载并使用来自哈佛大学的PrimeKG数据的最新版本,确保您始终查询当前版本。
关于PrimeKG
PrimeKG是一个全面的精准医学知识图谱,包含:
- 129375个节点 代表基因、药物、疾病、生物过程等
- 8+百万关系 整合20多个生物医学数据库
- 数据来自DrugBank、PRIMEKG、CTD、DisGeNET、GO、Reactome、SIDER等
特性
此MCP服务器提供以下工具:
- 自动下载最新PrimeKG数据 (默认情况下每周检查一次)
- 按名称或ID搜索节点(基因、药物、疾病)
- 查找实体之间的关系
- 发现药物靶点和疾病相关基因
- 探索药物与疾病的联系
- 查询知识图结构
安装
先决条件
- Python 3.10或更高版本
- 紫外线 包管理器
从PyPI安装(发布时)
uvx mcp-primekg从源码安装
- 克隆此存储库:
git clone https://github.com/asaravia-butler/MCP_Harvard_PrimeKG.git
cd MCP_Harvard_PrimeKG- 安装依赖项:
uv sync数据设置
自动模式(推荐-始终为最新模式)
服务器将 自动下载最新的PrimeKG数据 首次运行时,每周检查更新。
无需手动下载数据! 只需配置并运行:
{
"mcpServers": {
"primekg": {
"command": "uvx",
"args": ["mcp-primekg"],
"env": {
"PRIMEKG_DATA_PATH": "/Users/yourusername/primekg_data",
"PRIMEKG_AUTO_UPDATE": "true",
"PRIMEKG_UPDATE_INTERVAL_DAYS": "7",
"INSTRUCTIONS": "Query the PrimeKG knowledge graph for precision medicine insights."
}
}
}
}服务器将:
- 如果数据目录不存在,则创建该目录
- 从哈佛大学数据库下载最新的PrimeKG数据(~600MB)
- 每7天检查一次更新(可配置)
- 在更新之间使用缓存数据
手动模式
集 PRIMEKG_AUTO_UPDATE: "false" 并从手动下载数据 哈佛大学.
Neo4j模式(用于复杂查询)
对于高级图遍历和复杂的路径查询,请使用Neo4j:
第一步:下载所需文件
仅从下载这两个文件 哈佛大学:
# Download nodes file (7.5 MB)
curl -LO nodes.tab "https://dataverse.harvard.edu/api/access/datafile/6180617"
# Download edges file (368.6 MB)
curl -LO edges.csv "https://dataverse.harvard.edu/api/access/datafile/6180616"步骤2:修改Neo4j的CSV标头
Neo4j需要特定的头格式。更新标题:
对于nodes.tab:
# Change header from:
# node_index node_id node_type node_name node_source
# To:
sed -i.bak '1s/.*/node_index:ID\tnode_id\t:LABEL\tnode_name\tnode_source/' nodes.tab对于edges.csv:
# Change header from:
# relation,display_relation,x_index,y_index
# To:
sed -i.bak '1s/.*/:TYPE,display_relation,:START_ID,:END_ID/' edges.csv或者手动编辑每个文件的第一行:
- nodes.tab:
node_index:ID node_id :LABEL node_name node_source - edges.csv:
:TYPE,display_relation,:START_ID,:END_ID
步骤3:导入到Neo4j
使用Neo4j桌面:
- 在Neo4j Desktop中创建新的数据库(DBMS)
- 如果数据库正在运行,请停止它
- 在DBMS目录中打开终端(单击⋯→ 打开文件夹→ DBMS)
- 运行import命令:
./bin/neo4j-admin database import full primekg \
--nodes=/full/path/to/nodes.tab \
--relationships=/full/path/to/edges.csv \
--delimiter-nodes=TAB \
--delimiter-relationships=COMMA \
--trim-strings=true使用Neo4j服务器:
neo4j-admin database import full primekg \
--nodes=/full/path/to/nodes.tab \
--relationships=/full/path/to/edges.csv \
--delimiter-nodes=TAB \
--delimiter-relationships=COMMA \
--trim-strings=true注: 替换 /full/path/to/ 使用文件的实际绝对路径。
步骤4:启动数据库并验证
- 在Neo4j Desktop中启动数据库
- 打开Neo4j浏览器
- 验证导入:
// Check node count
MATCH (n) RETURN count(n) as node_count;
// Should return ~129,375 nodes
// Check edge count
MATCH ()-[r]->() RETURN count(r) as edge_count;
// Should return ~4+ million edges
// View node types
MATCH (n) RETURN DISTINCT labels(n) as node_types, count(*) as count;步骤5:与MCP服务器一起使用
导入后,使用 mcp-genelab 通过添加到您的配置中,将服务器与PrimeKG数据库连接起来:
"primekg-neo4j": {
"command": "uvx",
"args": ["mcp-genelab"],
"env": {
"NEO4J_URI": "bolt://localhost:7687",
"NEO4J_USERNAME": "neo4j",
"NEO4J_PASSWORD": "your_password",
"NEO4J_DATABASE": "primekg",
"INSTRUCTIONS": "Query the PrimeKG precision medicine knowledge graph for drug-disease-gene relationships and biomedical insights from 20+ integrated databases."
}
}配置
适用于克劳德桌面
添加到您的 claude_desktop_config.json:
自动更新(推荐-始终最新):
本地开发版本(primekg-auto-dev):
{
"mcpServers": {
"primekg-auto-dev": {
"command": "uv",
"args": ["run", "--directory", "/absolute/path/to/MCP_Harvard_PrimeKG", "mcp-primekg"],
"env": {
"PRIMEKG_DATA_PATH": "/Users/yourusername/primekg_data",
"PRIMEKG_AUTO_UPDATE": "true",
"PRIMEKG_UPDATE_INTERVAL_DAYS": "7",
"INSTRUCTIONS": "Query the latest PrimeKG knowledge graph for precision medicine insights, drug-disease-gene relationships, and biomedical knowledge."
}
}
}
}生产版本-发布到PyPI(primekg-auto)后:
{
"mcpServers": {
"primekg-auto": {
"command": "uvx",
"args": ["mcp-primekg"],
"env": {
"PRIMEKG_DATA_PATH": "/Users/yourusername/primekg_data",
"PRIMEKG_AUTO_UPDATE": "true",
"PRIMEKG_UPDATE_INTERVAL_DAYS": "7",
"INSTRUCTIONS": "Query the latest PrimeKG knowledge graph for precision medicine insights."
}
}
}
}配置选项:
PRIMEKG_DATA_PATH:存储PrimeKG数据的目录(默认:~/primekg_data)PRIMEKG_AUTO_UPDATE:启用自动更新(默认值:true)PRIMEKG_UPDATE_INTERVAL_DAYS:更新检查之间的天数(默认值:7)
注:
- 使用
primekg-auto-dev随着--directory在本地开发或发布之前标记 - 使用
primekg-auto发布到PyPI以进行更简单的配置后 - 替换
/absolute/path/to/MCP_Harvard_PrimeKG使用克隆此存储库的实际路径
使用Neo4j(为了在复杂查询中获得更好的性能):
{
"mcpServers": {
"primekg-neo4j": {
"command": "uvx",
"args": ["mcp-genelab"],
"env": {
"NEO4J_URI": "bolt://localhost:7687",
"NEO4J_USERNAME": "neo4j",
"NEO4J_PASSWORD": "your_password",
"NEO4J_DATABASE": "primekg",
"INSTRUCTIONS": "Query the PrimeKG knowledge graph for precision medicine insights."
}
}
}
}可用工具
search_nodes
按名称或ID搜索节点
- 输入:查询(字符串)、节点类型(可选)、限制(默认值:10)
- 示例:搜索“阿司匹林”或“癌症”
get_node_relationships
获取特定节点的所有关系
- 输入:node_id(字符串),relationship_type(可选),限制(默认值:50)
find_drug_targets
寻找药物的基因/蛋白质靶点
- 输入:drug_name(字符串)
- 示例:寻找“二甲双胍”的靶点
find_disease_genes
寻找与疾病相关的基因
- 输入:disease_name(字符串),限制(默认值:50)
- 示例:寻找“阿尔茨海默病”的基因
find_drug_disease_paths
发现药物和疾病之间的联系
- 输入:药物名称、疾病名称、最大路径长度(默认值:3)
get_node_details
获取特定节点的详细信息
- 输入:node_id(字符串)
示例用法
在Claude Desktop中配置后,您可以询问:
- “PrimeKG中阿司匹林的蛋白质靶点是什么?”
- “在PrimeKG中寻找与帕金森病相关的基因”
- “在PrimeKG中搜索靶向EGFR的药物”
- “PrimeKG中二甲双胍与糖尿病之间的关系是什么?”
- “向我展示PrimeKG中与TP53相关的生物过程”
发展
运行测试
uv run pytest代码格式化
uv run black src/类型检查
uv run mypy src/数据源
PrimeKG整合了来自20多个生物医学资源的数据:
- 中国医药银行(药品)
- DisGeNET、OMIM(疾病)
- STRING,BioGRID(蛋白质相互作用)
- 基因本体论(生物过程)
- 反应组,KEGG(途径)
- SIDER(副作用)
- 还有更多。..
引用
如果您在研究中使用PrimeKG,请引用:
@article{chandak2023building,
title={Building a knowledge graph to enable precision medicine},
author={Chandak, Payal and Huang, Kexin and Zitnik, Marinka},
journal={Scientific Data},
volume={10},
number={1},
pages={67},
year={2023},
publisher={Nature Publishing Group UK London}
}许可证
此MCP服务器根据MIT许可证发布。
PrimeKG数据由哈佛医学院根据CC BY 4.0许可证发布。
链接
贡献
欢迎投稿!请随时提交拉取请求。
支持
对于问题和疑问:
