开放目标MCP服务器
     
一个模型上下文协议(MCP)服务器,将开放目标平台GraphQL API公开为一组工具,用于Claude Desktop和其他兼容MCP的客户端。
快速安装
选项1:运行一次 uvx (不安装)
uvx --from git+https://github.com/nickzren/opentargets-mcp opentargets-mcp选项2:克劳德桌面(MCPM)
# Install mcpm package manager
pip install mcpm
# Install the server
mcpm install opentargets选项3:本地安装(开发或自主机)
git clone https://github.com/nickzren/opentargets-mcp
cd opentargets-mcp
pip install uv
uv sync
# Run (stdio transport by default)
uv run python -m opentargets_mcp.server选项4:Docker
git clone https://github.com/nickzren/opentargets-mcp
cd opentargets-mcp
# Build and run with Docker Compose
docker-compose up -d --build注意:默认传输方式为 http 用于docker部署。
有关详细信息以及如何设置端口和其他环境变量,请参阅下面的配置部分。
Claude桌面手动导入(可选)
mcpm import stdio opentargets \
--command "$(uv run which python)" \
--args "-m opentargets_mcp.server --transport stdio"然后重新启动Claude Desktop以开始使用Open Targets工具。
特性
核心能力
- 目标分析:按Ensembl ID或符号搜索基因/蛋白质。访问表达数据、遗传约束、途径、蛋白质相互作用、安全性特征和小鼠表型
- 疾病分析:按EFO ID查询疾病。查找相关靶点、表型(HPO)和研究项目
- 药物发现:按ChEMBL ID搜索药物。访问安全数据、不良事件、适应症和作用机制
- 证据挖掘:利用来自多个来源的评分证据探索目标疾病关联
- 变体分析:查询遗传变异、GWAS可信集和药物基因组学数据
- 学习探索:通过L2G预测和精细定位位点访问GWAS研究
- 智能搜索:具有同义词处理、自动补全和ID映射的实体解析
- 跨实体工作流:多跳工具,将疾病、靶点和药物证据链接起来,以确定优先级
- 原始GraphQL电动工具:使用结构化状态信封运行单个和批处理原始GraphQL操作
为什么选择此服务器
此实现专为实用的Open Targets工作流而设计:
- 精心策划的广度65个精选工具加上3个高级GraphQL工具(共68个),涵盖目标、疾病、药物、证据、变体、研究、元数据和跨实体工作流任务。
- 更安全的自动化:严格的ID解析、类型化参数处理和弹性重试行为。
- 降低代币开销:可选
fields核心域工具上的过滤器,只返回您需要的内容。 - 灵活的电源模式:原始GraphQL工具可用于边缘情况。
数据源
开放目标平台整合了来自22个以上主要数据源的证据:
- 遗传学:开放靶点遗传学,ClinVar,英国生物库,FinnGen,Gene2Phenotype,孤儿,COSMIC
- 功能的:CRISPR屏幕、DepMap、GeneBass
- 药物:ChEMBL、FDA/EMA批准、化学探针
- 表达:GTEx,人类蛋白图谱,表达图谱
- 路径:Reactome、Signor、IntAct
- 文学:欧洲PMC文本挖掘
- 安全:FAERS,药物基因组学数据
- 模型:小鼠(MGI、IMPC)表型
建筑
graph LR
subgraph "Clients"
A[Claude Desktop]
B[Python Scripts]
C[AI Agents]
end
subgraph "MCP Server"
D[Open Targets
MCP Server]
E[Tool Categories
Target • Disease • Drug
Evidence • Search • Variant • Study]
end
subgraph "Open Targets"
F[GraphQL API]
G[22+ Data Sources]
end
A |MCP Protocol| D
B |Direct API| D
C |Function Calls| D
D |GraphQL| F
F G
E --> D
style D fill:#e1f5fe
style F fill:#fff3e0MCP服务器充当客户端应用程序和开放目标平台之间的桥梁。它将工具调用转换为GraphQL查询,并提供对来自22个以上集成源的生物医学数据的结构化访问。
先决条件
- Python 3.10+带pip
用法
独立运行服务器
# Using the convenience script (installs uv if missing, then syncs dependencies)
./run.sh
# Or run directly with uv (stdio transport by default)
uv run python -m opentargets_mcp.server
# Installed entrypoints
opentargets-mcp --help
# Specify transport explicitly
uv run python -m opentargets_mcp.server --transport [stdio|sse|http]配置
- 环境变量:运输/捆绑使用
MCP_TRANSPORT,FASTMCP_SERVER_HOST,以及FASTMCP_SERVER_PORT(默认值:stdio,0.0.0.0,8000).API端点使用OPEN_TARGETS_API_URL(默认值:https://api.platform.opentargets.org/api/v4/graphql).对于仅限本地开发,首选FASTMCP_SERVER_HOST=127.0.0.1. - 已验证的设置:启动时使用类型化的设置模型解析环境配置(
src/opentargets_mcp/settings.py),因此无效值会很快失败。 - 名称解析:严格;未解析的名称会引发明显的错误(使用
search_entities查找规范ID)。 - 刀具选择指南:服务器向客户端发送一个简短的策略,以选择精心策划的工具,使用
fields以修剪输出,并为边缘情况保留原始GraphQL。 - 分页护栏:工具包装器强制执行
page_index >= 0,page_size >= 1,全球page_size提供灵活的传输和端点选择。 - 详细日志:添加
--verbose在故障排除时将全局日志级别提升到DEBUG。 - CLI帮助程序:
--list-tools打印所有已注册的工具,以及--version打印包版本。 - 速率限制:
OPEN_TARGETS_RATE_LIMIT_RPS和OPEN_TARGETS_RATE_LIMIT_BURST可以启用全局服务器端速率限制。--rate-limiting和OPEN_TARGETS_RATE_LIMIT_ENABLED=true也得到了支持。
运输方式
服务器支持由FastMCP支持的多种传输协议:
stdio传输 (默认)
# For Claude Desktop (via mcpm) and local CLI tools
opentargets-mcp --transport stdioSSE运输
# For web-based MCP clients with Server-Sent Events
opentargets-mcp --transport sse --host 0.0.0.0 --port 8000HTTP传输
# For streamable HTTP MCP clients
opentargets-mcp --transport http --host 0.0.0.0 --port 8000与MCP客户端一起使用
- 克劳德桌面版:使用mcpm安装(stdio)或直接服务器连接(sse)
- Web MCP客户端:使用带有公共URL的SSE或HTTP传输(需要隧道)
- 自定义集成:取决于您的客户端实现的任何传输模式
示例脚本
uv run python examples/target_validation_profile.py EGFR
uv run python examples/disease_to_drug.py "schizophrenia"
uv run python examples/drug_safety_profile.py "osimertinib"
uv run python examples/genetic_target_prioritization.py "inflammatory bowel disease"AI代理示例
ReAct Agent提供了一个交互式终端界面,用于探索开放目标数据:
# Copy the example .env file and add your OpenAI API key
cp .env.example .env
# Then edit .env and set your OPENAI_API_KEY
# Run agent
uv run python examples/react_agent.py该代理使用ReAct(推理和代理)模式将复杂的生物医学查询分解为步骤,从而可以轻松探索药物靶点、疾病及其关系。
可用工具
服务器包装 68 操作从 开放目标平台: 65个精选工具 加 3个高级GraphQL工具。每个工具都返回反映Open Targets GraphQL模式的结构化JSON,您可以使用MCP检查完整的机器可读列表 list_tools 请求。
大多数域工具接受规范标识符(例如。, ENSG..., EFO_..., CHEMBL...)或人类可读的名称/符号。提供名称后,服务器会自动将其解析为最匹配的Open Targets ID。 许多核心工具接受可选 fields 列表(点路径)以过滤响应有效载荷。 search_entities 也返回 search.triples 用于紧凑型 {id, entity, name} 消费。 对于边缘情况,更喜欢精心策划的工具+ fields 第一;仅当没有合适的工具时才使用原始GraphQL。
快速启动快捷方式
get_target_info–核心靶标身份记录(Ensembl ID、同义词、基因组坐标)get_disease_info–疾病/EFO总结及治疗区域背景get_drug_info–ChEMBL支持的药物概况和机制数据search_entities–具有同义词处理的统一实体搜索get_target_associated_diseases–高置信度目标疾病与分数之间的联系get_disease_associated_targets–EFO疾病的优先目标列表get_target_known_drugs–目标药物的批准和试验药物get_target_disease_evidence–遗传学、表达和文献方面的证据细节get_drug_repurposing_candidates–多跳疾病->靶点->候选药物优先级graphql_batch_query–跨多个变量集运行一个GraphQL查询
按类别列出的完整目录
- 目标识别与生物学(20种工具) —
get_target_info,get_target_class,get_target_alternative_genes,get_target_associated_diseases,get_target_known_drugs,get_target_literature_occurrences,get_target_expression,get_target_pathways_and_go_terms,get_target_homologues,get_target_subcellular_locations,get_target_genetic_constraint,get_target_mouse_phenotypes,get_target_hallmarks,get_target_depmap_essentiality,get_target_interactions,get_target_safety_information,get_target_tractability,get_target_chemical_probes,get_target_tep,get_target_prioritization. - 疾病分析(8种工具) —
get_disease_info,get_disease_associated_targets,get_disease_phenotypes,get_disease_otar_projects,get_disease_known_drugs,get_disease_ontology,get_disease_literature_occurrences,get_disease_similar_entities. - 药物分析(10种工具) —
get_drug_info,get_drug_cross_references,get_drug_linked_diseases,get_drug_linked_targets,get_drug_adverse_events,get_drug_pharmacovigilance,get_drug_warnings,get_drug_pharmacogenomics,get_drug_literature_occurrences,get_drug_similar_entities. - 证据综合(2个工具) —
get_target_disease_evidence,get_target_disease_biomarkers. - 搜索和发现(4个工具) —
search_entities,search_suggestions,get_similar_targets,search_facets. - 元数据和本体实用程序(5个工具) —
get_api_metadata,get_association_datasources,get_gene_ontology_terms,get_interaction_resources,map_ids. - 工作流工具(1个工具) —
get_drug_repurposing_candidates. - 批量查找(3个工具) —
get_targets_batch,get_diseases_batch,get_drugs_batch. - 变体解释(6种工具) —
get_variant_info,get_variant_credible_sets,get_variant_pharmacogenomics,get_variant_evidences,get_variant_intervals,get_variant_protein_coordinates. - 研究探索(6个工具) —
get_study_info,get_studies_by_disease,get_study_credible_sets,get_credible_set_by_id,get_credible_set_colocalisation,get_credible_sets. - 高级GraphQL(3个工具) —
graphql_schema,graphql_query,graphql_batch_query.
每个分组都与开放目标文档中描述的数据域(目标、疾病、药物、证据、变体和研究)相匹配。对于高容量工作负载,请遵守开放目标API常见问题解答中的平台节流指南,并在可能的情况下缓存下游。
发展
# Run lint checks (same as CI/release)
uv run ruff check src tests
# Run tests
uv run pytest tests/ -v
# Inspect registered tools from CLI
uv run opentargets-mcp --list-tools