返回市场
开放目标-mcp

开放目标-mcp

作者:nickzren12 星标更新:2025-10-25

项目介绍

Open Targets MCP 服务器

CI Tests Python MCP MCP Registry Open Targets Docs License: MIT

这是一个模型上下文协议(MCP)服务器,它公开了Open Targets平台的GraphQL API作为一组工具,用于与Claude Desktop和其他兼容MCP的客户端一起使用。

<!-- mcp-name: io.github.nickzren/opentargets -->

快速安装

对于Claude Desktop

方案1:使用MCPM(推荐)

# 安装mcpm包管理器
pip install mcpm

# 安装服务器
mcpm install opentargets

方案2:手动设置

# 克隆并设置
git clone https://github.com/nickzren/opentargets-mcp
cd opentargets-mcp
pip install uv
uv sync

# 导入到Claude Desktop(stdio传输)
mcpm import stdio opentargets \
  --command "$(uv run which python)" \
  --args "-m opentargets_mcp.server --transport stdio"

然后重启Claude Desktop以开始使用Open Targets工具。

对于其他MCP客户端

git clone https://github.com/nickzren/opentargets-mcp
cd opentargets-mcp
pip install uv
uv sync

# 方案1:使用简单的运行脚本(围绕uv run的薄包装)
./run.sh

# 方案2:直接运行
uv run python -m opentargets_mcp.server

功能

核心能力

  • 目标分析:通过Ensembl ID或符号搜索基因/蛋白质。访问表达数据、遗传约束、通路、蛋白质相互作用、安全概况和小鼠表型
  • 疾病分析:通过EFO ID查询疾病。查找相关的目标、表型(HPO)和研究项目
  • 药物发现:通过ChEMBL ID搜索药物。访问安全数据、不良事件、适应症和作用机制
  • 证据挖掘:探索来自多个来源的评分证据的目标-疾病关联
  • 变异分析:查询遗传变异、GWAS可信集和药理基因组学数据
  • 研究探索:访问具有L2G预测和精细定位位点的GWAS研究
  • 智能搜索:实体解析,处理同义词、自动完成和ID映射

数据源

Open Targets平台整合了来自22个以上主要数据源的证据:

  • 遗传学:Open Targets Genetics、ClinVar、UK Biobank、FinnGen、Gene2Phenotype、Orphanet、COSMIC
  • 功能性:CRISPR筛选、DepMap、GeneBass
  • 药物:ChEMBL、FDA/EMA批准、化学探针
  • 表达:GTEx、人类蛋白质图谱、表达图谱
  • 通路:Reactome、Signor、IntAct
  • 文献:Europe PMC文本挖掘
  • 安全:FAERS、药理基因组学数据
  • 模型:小鼠(MGI、IMPC)表型

架构

graph LR
    subgraph "客户端"
        A[Claude Desktop]
        B[Python 脚本]
        C[AI 代理]
    end
    
    subgraph "MCP 服务器"
        D[Open Targets<br/>MCP 服务器]
        E[工具类别<br/>目标 • 疾病 • 药物<br/>证据 • 搜索 • 变异 • 研究]
    end
    
    subgraph "Open Targets"
        F[GraphQL API]
        G[22+ 数据源]
    end
    
    A <-->|MCP 协议| D
    B <-->|直接API| D
    C <-->|函数调用| D
    D <-->|GraphQL| F
    F <--> G
    
    E --> D
    
    style D fill:#e1f5fe
    style F fill:#fff3e0

MCP服务器充当客户端应用程序和Open Targets平台之间的桥梁。它将工具调用转换为GraphQL查询,并提供对来自22个以上集成数据源的生物医学数据的结构化访问。

预备条件

  • Python 3.12+ 和 pip

使用方法

单独运行服务器

# 使用方便脚本(自动处理uv设置)
./run.sh

# 或直接使用uv运行(默认stdio传输)
uv run python -m opentargets_mcp.server

# 显式指定传输方式
uv run python -m opentargets_mcp.server --transport [stdio|sse|http]

配置

  • 环境变量MCP_TRANSPORT (stdiossehttp)、FASTMCP_SERVER_HOSTFASTMCP_SERVER_PORT 控制传输和绑定地址。默认值分别为 stdio0.0.0.08000
  • 命令行opentargets-mcp --transport [stdio|sse|http] --host 0.0.0.0 --port 8000 提供灵活的传输选择。
  • 详细日志:添加 --verbose 将全局日志级别提升到DEBUG,以便在故障排除时使用。

传输模式

服务器支持由FastMCP驱动的多种传输协议:

stdio传输(默认)

# 对于Claude Desktop(通过mcpm)和本地CLI工具
opentargets-mcp --transport stdio

SSE传输

# 对于基于web的MCP客户端,使用Server-Sent Events
opentargets-mcp --transport sse --host 0.0.0.0 --port 8000

HTTP传输

# 对于可流式传输的HTTP MCP客户端
opentargets-mcp --transport http --host 0.0.0.0 --port 8000

与MCP客户端一起使用

  • Claude Desktop:使用mcpm安装(stdio)或直接服务器连接(sse)
  • Web MCP客户端:使用SSE或HTTP传输,带有公共URL(需要隧道)
  • 自定义集成:根据您的客户端实现,任何传输模式均可

示例脚本

uv run python examples/target_validation_profile.py EGFR
uv run python examples/disease_to_drug.py "精神分裂症"
uv run python examples/drug_safety_profile.py "奥希替尼"
uv run python examples/genetic_target_prioritization.py "炎症性肠病"

AI代理示例

ReAct代理提供了一个交互式的终端界面,用于探索Open Targets数据:

Open Targets React代理演示

# 复制示例.env文件并添加您的OpenAI API密钥
cp .env.example .env
# 然后编辑.env并设置您的OPENAI_API_KEY

# 运行代理
uv run python examples/react_agent.py

该代理使用ReAct(推理和行动)模式,将复杂的生物医学查询分解成步骤,使其易于探索药物靶标、疾病及其关系。

可用工具

服务器封装了来自Open Targets平台45个GraphQL操作。每个工具返回的结构化JSON都反映了官方模式,您可以使用MCP list_tools请求检查完整的机器可读列表。

快速启动快捷方式

  • 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 – 跨遗传学、表达和文献的证据详情

按类别完整目录

  • 目标身份与生物学(20个工具)get_target_infoget_target_classget_target_alternative_genesget_target_associated_diseasesget_target_known_drugsget_target_literature_occurrencesget_target_expressionget_target_pathways_and_go_termsget_target_homologuesget_target_subcellular_locationsget_target_genetic_constraintget_target_mouse_phenotypesget_target_hallmarksget_target_depmap_essentialityget_target_interactionsget_target_safety_informationget_target_tractabilityget_target_chemical_probesget_target_tepget_target_prioritization
  • 疾病分析(4个工具)get_disease_infoget_disease_associated_targetsget_disease_phenotypesget_disease_otar_projects
  • 药物概况(7个工具)get_drug_infoget_drug_cross_referencesget_drug_linked_diseasesget_drug_linked_targetsget_drug_adverse_eventsget_drug_pharmacovigilanceget_drug_warnings
  • 证据合成(2个工具)get_target_disease_evidenceget_target_disease_biomarkers
  • 搜索与发现(4个工具)search_entitiessearch_suggestionsget_similar_targetssearch_facets
  • 变异解释(4个工具)get_variant_infoget_variant_credible_setsget_variant_pharmacogenomicsget_variant_evidences
  • 研究探索(4个工具)get_study_infoget_studies_by_diseaseget_study_credible_setsget_credible_set_by_id

每个分组匹配Open Targets文档中描述的数据域(目标、疾病、药物、证据、变异和研究)。对于高负载工作量,请参考官方API FAQ中的平台节流指导,并尽可能地缓存下游。

开发

# 运行测试
uv run pytest tests/ -v