mcpField
T
tooluniverse-disease-research

tooluniverse-disease-research

github.com/mims-harvard生产力1.8k438 次安装2 天前更新
代码仓库

关于 tooluniverse-disease-research

用于生成结构化疾病研究报告的 ToolUniverse 技能,面向需要全面研究疾病和医疗状况的场景,覆盖分类、遗传、治疗、通路、流行病学及安全性。

主要功能

  1. 01研究疾病的十个维度
  2. 02将自由文本映射至本体术语
  3. 03梳理遗传和分子机制
  4. 04为发现标注证据等级和来源
  5. 05逐步更新结构化报告

适用场景

  1. 01生成全面的疾病研究报告
  2. 02审查疾病遗传学与治疗方案
  3. 03比较多个疾病数据库的证据

MCP 相关

该技能指导 Agent 使用 ToolUniverse 工具开展疾病研究;输入未说明 MCP 服务接口。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mims-harvard/tooluniverse --skill tooluniverse-disease-research

安装后在 Claude Code 中输入/tooluniverse-disease-research确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

EXAMPLES.md
REPORT_TEMPLATE.md
RESEARCH_PROTOCOL.md
tool_usage_details.md
TOOLS_REFERENCE.md

详细介绍

ToolUniverse 疾病研究

生成一份全面的疾病研究报告,并附上完整的来源引用。报告以 Markdown 文件形式创建,并在研究过程中逐步更新。

重要:在工具调用中始终使用英文疾病名称和搜索词。用用户所用的语言回复。


查询,不要猜测

有人询问某种疾病时,先查询 Orphanet/OMIM/DisGeNET。不要凭记忆判断患病率、遗传学或治疗方案——这些信息会随时间变化。对某项事实不确定时,应首先使用工具搜索,而不是更努力地凭记忆推理。


适用场景

  • 用户询问任何疾病、综合征或病症
  • 需要全面的疾病信息或详细的研究报告
  • 询问“我们对 [疾病] 了解多少?”

核心工作流:报告优先

不要向用户展示搜索过程。应当:

  1. 先创建报告文件 - 初始化 {disease_name}_research_report.md
  2. 研究各个维度 - 使用所有相关工具
  3. 逐步更新报告 - 每完成一个维度后写入研究发现
  4. 添加引用 - 每项事实都必须标明其来源工具

疾病机制推理

综合分析疾病病因时,追溯完整的致病过程:

  1. 遗传基础 - 哪些变异(罕见或常见)会带来风险?涉及哪些基因?
  2. 分子机制 - 这些变异如何改变蛋白质功能、表达或调控?
  3. 细胞效应 - 哪些下游细胞过程受到干扰(信号传导、代谢、应激反应)?
  4. 组织/器官表现 - 细胞功能障碍如何表现为器官层面的病理变化?

这一链条将用于组织“遗传与分子基础”(第 3 节)和“生物学通路”(第 5 节)。


10 个研究维度

维度章节关键工具
1身份与分类OSL_get_efo_id_by_disease_name, ols_search_efo_terms, ols_get_efo_term, umls_search_concepts, icd_search_codes, snomed_search_concepts
2临床表现OpenTargets 表型、HPO 查询、MedlinePlus
3遗传与分子基础OpenTargets 靶点、ClinVar 变异、GWAS 关联、gnomAD
4治疗现状OpenTargets 药物、临床试验、GtoPdb
5生物学通路Reactome 通路、humanbase_ppi_analysis、GTEx 表达、HPA
6流行病学与文献PubMed、OpenAlex、Europe PMC、Semantic Scholar
7相似疾病OpenTargets 相似实体
8癌症专属(如适用)CIViC 基因/变异/疗法
9药理学GtoPdb 靶点/相互作用/配体
10药物安全性OpenTargets 警示、临床试验不良事件、FAERS

各章节的完整工具调用详见:tool_usage_details.md。

将自由文本规范化为本体 ID(维度 1)

当输入是杂乱的自由文本(例如样本属性、同义词、组织/生物标签),而不是规范的疾病名称时,使用 ZOOMA_annotate_text 将其映射到标准化的本体术语(EFO/MONDO/UBERON 等),然后再进行查询。该工具会将每个匹配项作为带有置信度评级(HIGH/GOOD/MEDIUM/LOW)的本体 IRI 返回,因此可以仅保留高置信度匹配项,并将解析后的 ID 输入 OLS / OpenTargets。

tu.run_tool("ZOOMA_annotate_text", {
    "property_value": "asthma",        # free text to resolve
    "property_type": "disease",         # optional context hint
    "min_confidence": "HIGH",           # drop fuzzy matches
    "max_results": 3,
})
# -> [{"semantic_tags": ["http://purl.obolibrary.org/obo/MONDO_0004979"],
#      "curies": ["MONDO:0004979"], "confidence": "HIGH", "source": "zooma", ...}]

# Restrict to one ontology source (e.g. EFO) when you need a specific namespace:
tu.run_tool("ZOOMA_annotate_text", {"property_value": "diabetes", "ontologies": "efo"})

# Inspect which curated datasources back ZOOMA annotations (for provenance):
tu.run_tool("ZOOMA_list_datasources", {})
# -> [{"name": "eva-clinvar", "type": "DATABASE", "uri": "https://www.ebi.ac.uk/eva"}, ...]

每个匹配项还包含可直接使用的 curies 字段(例如 MONDO:0004979),因此无需解析 IRI,即可将解析后的 ID 直接输入 OLS / OpenTargets。ZOOMA 是已停用的 OxO 交叉引用服务的实时替代方案;将它与 ols_get_efo_term 配合使用,可根据解析后的 IRI 扩展标签、同义词和层级关系。


报告模板

开始时创建以下文件结构:

# Disease Research Report: {Disease Name}

**Report Generated**: {date}
**Disease Identifiers**: (to be filled)

---

## Executive Summary
(Brief 3-5 sentence overview - fill after all research complete)

---

## 1. Disease Identity & Classification
### Ontology Identifiers
| System | ID | Source |

### Synonyms & Alternative Names
### Disease Hierarchy

---

## 2. Clinical Presentation
### Phenotypes (HPO)
| HPO ID | Phenotype | Description | Source |

### Symptoms & Signs
### Diagnostic Criteria

---

## 3. Genetic & Molecular Basis
### Associated Genes
| Gene | Score | Ensembl ID | Evidence | Source |

### GWAS Associations
| SNP | P-value | Odds Ratio | Study | Source |

### Pathogenic Variants (ClinVar)

---

## 4. Treatment Landscape
### Approved Drugs
| Drug | ChEMBL ID | Mechanism | Phase | Target | Source |

### Clinical Trials
| NCT ID | Title | Phase | Status | Source |

---

## 5. Biological Pathways & Mechanisms

## 6. Epidemiology & Risk Factors

## 7. Literature & Research Activity

## 8. Similar Diseases & Comorbidities

## 9. Cancer-Specific Information (if applicable)

## 10. Drug Safety & Adverse Events

---

## References
### Tools Used
| # | Tool | Parameters | Section | Items Retrieved |

引用格式

每条数据都必须包含来源:

在表格中:添加一个 Source 列,并填写工具名称
在列表中:- 发现 [Source: tool_name]
在正文中:(Source: tool_name, query: "...")
参考资料部分:完整记录工具使用情况及参数


渐进式更新模式

# After each dimension's research:
# 1. Read current report
# 2. Replace placeholder with formatted content
# 3. Write back immediately
# 4. Continue to next dimension

证据分级与解读

报告中的每项发现都应进行分级:

等级标准示例
T1(强)可重复的遗传学证据(GWAS、罕见变异)、FDA 批准的疗法BRCA1 → 乳腺癌;针对 HER2+ 的曲妥珠单抗
T2(中等)单项遗传学研究、II 期及以上试验数据、强生物学证据FOXO3 → 长寿(百岁老人研究)
T3(关联)观察性数据、基因表达变化、通路成员关系阿尔茨海默病脑脊液中的 IL-6 升高
T4(计算)网络邻近性、文本挖掘、预测性关联DisGeNET 通过文本挖掘得到的基因-疾病关联
综合分析问题(在执行摘要中回答)

收集完所有 10 个维度的数据后,报告必须回答:

  1. 这种疾病由什么引起? 总结遗传架构(单基因还是多基因、关键位点、外显率)
  2. 有哪些治疗方案? 按证据等级和批准状态排序
  3. 有哪些生物标志物? 用于诊断、预后和治疗选择的生物标志物
  4. 尚未满足的需求是什么? 哪些方面缺乏有效治疗或尚未得到充分理解?
  5. 当前活跃的研究前沿有哪些? 基于临床试验和近期发表的文献
解读跨数据库一致性

当多个数据库针对同一种疾病提供不同数据时:

  • OpenTargets + DisGeNET + OMIM 对某个基因结论一致:T1 证据——置信度高
  • 只有 OpenTargets 报告关联:检查数据源评分——genetic_association > literature > animal_model
  • DisGeNET 评分 > 0.5,但 OpenTargets 中没有该结果:可能是通过文本挖掘得出的;请用 PubMed 核实
  • 基因出现在 GWAS 中,但不在 OMIM 中:可能是复杂疾病易感位点,而非孟德尔遗传位点
处理相互矛盾的数据
冲突解决方法
不同来源给出的患病率估计不同报告范围;注明最新或规模最大的研究
药物在一个国家获批,但在另一个国家未获批注明各地区的监管状态
某数据库中存在基因-疾病关联,但另一个数据库中没有按证据类型分级;仅靠文本挖掘的证据属于 T4
临床试验结果与药品标签中的适应症相矛盾临床试验结果属于较新的证据;两者都应注明

最终报告质量检查清单

  • 所有 10 个部分都有内容(或标注“无可用数据”)
  • 每项数据都有来源引用
  • 执行摘要反映关键发现
  • 参考资料部分列出所有使用的工具
  • 表格格式正确
  • 没有遗留占位文本

预期输出规模

对于研究充分的疾病(例如阿尔茨海默病),最终报告应包含:

  • 5 个以上本体 ID、10 个以上同义词、疾病层级结构
  • 20 个以上带有 HPO ID 的表型
  • 50 个以上基因、30 个以上 GWAS 关联、100 个以上 ClinVar 变异
  • 20 种以上药物、50 项以上临床试验
  • 10 条以上通路、PPI 网络、表达数据
  • 100 篇以上出版物
  • 15 种以上相似疾病
  • 药物警告和不良事件

总计:500 条以上单独数据,每条都附有来源引用。


跨技能参考

对于罕见病鉴别诊断,运行:python3 skills/tooluniverse-rare-disease-diagnosis/scripts/clinical_patterns.py --type differential --symptoms 'symptom1,symptom2'


参考文件

评论

支持 Markdown