mcpField
T
tooluniverse-small-molecule-discovery

tooluniverse-small-molecule-discovery

github.com/mims-harvard数据与数据库1.8k235 次安装2 天前更新
代码仓库

关于 tooluniverse-small-molecule-discovery

面向药物发现研究者的小分子检索与评估技能,覆盖化合物身份、结构、生物活性、ADMET 性质和商业来源。它通过 PubChem、ChEMBL 等数据工具构建从名称或结构到活性与采购线索的检索流程。

主要功能

  1. 01解析化合物名称、CID 与 SMILES
  2. 02按结构相似性或子结构搜索
  3. 03检索靶点与结合活性
  4. 04预测理化性质和 ADMET
  5. 05搜索商业供应与化合物库

适用场景

  1. 01查找指定化合物的结构和标识符
  2. 02筛选某靶点的活性化合物
  3. 03评估分子的 ADMET 属性
  4. 04查询化合物是否可商业获取

MCP 相关

该技能组织对 PubChem、ChEMBL、SwissADME、ADMET-AI、eMolecules 和 Enamine 等 ToolUniverse 工具的调用,以检索化合物信息、活性、性质和供应线索。

安装

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

$npx skills add https://github.com/mims-harvard/tooluniverse --skill tooluniverse-small-molecule-discovery

安装后在 Claude Code 中输入/tooluniverse-small-molecule-discovery确认已加载。

详细介绍

小分子发现技能

使用 PubChem、ChEMBL、BindingDB、ADMET-AI、SwissADME、eMolecules 和 Enamine,系统地识别、表征和采购小分子。涵盖从化合物名称到结构、活性、ADMET 属性和商业采购的完整流程。

领域推理

药物相似性并非二元属性。Lipinski 五规则源自口服给药且通过被动吸收的药物,并有许多广为人知的例外:天然产物、大环化合物、PROTAC 和许多已获批药物都违反了一条或多条规则。相关的问题不是“该化合物是否符合 Ro5?”,而是“该化合物的理化性质是否符合靶点、预期给药途径和治疗背景的要求?”应关注具体需求,而非僵化规则。

查询,不要猜测

  • 化合物身份(CID、ChEMBL ID、SMILES):调用 PubChem_get_CID_by_compound_name 和 ChEMBL_search_molecules;不要凭记忆推断 ID。
  • ADMET 属性:对实际 SMILES 运行 SwissADME_calculate_adme 或 ADMETAI_predict_*;不要估算 logP、TPSA 或生物利用度。
  • 对靶点的结合亲和力:查询 ChEMBL_search_activities 或 BindingDB_get_ligands_by_uniprot;切勿凭记忆引用 IC50 值。
  • 商业可购性:检查 eMolecules_search 或 Enamine_search_catalog;不要假定有货。

核心原则:

  1. 先确认身份——研究前务必获取 CID 和 ChEMBL ID
  2. 预测属性需要 SMILES——尽早从 PubChem 提取规范 SMILES
  3. 工具中使用英文名称——使用 IUPAC 名称或常见英文名称;在工具调用中避免使用缩写
  4. BindingDB 经常无法使用——如果 BindingDB 超时,则改用 ChEMBL 活性数据
  5. eMolecules/Enamine 返回 URL——这些工具会生成搜索 URL,而非直接返回数据;请向用户说明这一点

计算,不要描述

当分析需要计算(统计、数据处理、评分、富集分析)时,通过 Bash 编写并运行 Python 代码。不要只描述准备如何操作——应实际执行并报告真实结果。使用 ToolUniverse 工具检索数据,再通过 Python(pandas、scipy、statsmodels、matplotlib)进行分析。

适用场景

  • “查找化合物 X 的信息”
  • “这个 SMILES 的药物相似性如何?”
  • “列出 EGFR 抑制剂的结合亲和力”
  • “搜索与 imatinib 相似的化合物”
  • “该化合物是否可以商业购买?”
  • “这个分子的 ADMET 属性是什么?”
  • “查找靶点 Y 的 ChEMBL 活性数据”
  • “预测这个小分子的靶点”

关键工具

工具用途关键参数
PubChem_get_CID_by_compound_name根据名称查询 CIDcompound_name
PubChem_get_CID_by_SMILES根据 SMILES 查询 CIDsmiles
PubChem_get_compound_properties_by_CID分子量、分子式、SMILES、InChIKeycid、properties
PubChem_search_compounds_by_similarity查找结构相似的化合物smiles、threshold(0-100)
PubChem_search_compounds_by_substructure子结构搜索smiles
PubChem_get_compound_synonyms_by_CID所有名称/同义词cid
ChEMBL_search_molecules按名称或 ID 搜索 ChEMBLquery
ChEMBL_get_molecule完整的 ChEMBL 分子记录chembl_id
ChEMBL_search_similar_molecules在 ChEMBL 中搜索相似分子query(SMILES 或 ChEMBL ID)
ChEMBL_search_activities结合亲和力和测定数据molecule_chembl_id、target_chembl_id、pchembl_value__gte
ChEMBL_get_drug_mechanisms已获批药物的作用机制(MOA)drug_chembl_id 或 drug_name
ChEMBL_search_targets按名称查找靶点query、organism
ChEMBL_get_target_activities某个靶点的所有配体target_chembl_id
SwissADME_calculate_adme理化性质和 ADMET 属性operation="calculate_adme"、smiles
SwissADME_check_druglikenessLipinski、Veber、Egan 规则operation="check_druglikeness"、smiles
ADMETAI_predict_physicochemical_properties分子量、logP、TPSA、HBD/HBAsmiles(列表)
ADMETAI_predict_bioavailability口服生物利用度预测smiles(列表)
ADMETAI_predict_BBB_penetrance血脑屏障渗透性smiles(列表)
ADMETAI_predict_toxicityhERG、DILI、致突变性smiles(列表)
ADMETAI_predict_CYP_interactionsCYP450 抑制/底物smiles(列表)
SwissTargetPrediction_predict预测化合物的蛋白质靶点operation="predict"、smiles
eMolecules_search查找市售化合物query(名称或关键词)
eMolecules_search_smiles基于结构搜索市售化合物smiles
eMolecules_get_vendors查找特定化合物的供应商compound_id
Enamine_search_catalog搜索 Enamine 筛选库query
Enamine_search_smiles按结构搜索 Enaminesmiles
Enamine_get_libraries列出 Enamine 化合物库(无需参数)

工作流

阶段 1:化合物识别
# Step 1: Name -> CID (PubChem canonical identity)
PubChem_get_CID_by_compound_name(compound_name="imatinib")
# -> CID: 5291

# Step 2: Get SMILES and properties (needed for all downstream tools)
PubChem_get_compound_properties_by_CID(
    cid="5291",
    properties="MolecularFormula,MolecularWeight,CanonicalSMILES,InChIKey,IUPACName"
)
# -> canonical SMILES, InChIKey (global identifier)

# Step 3: Get ChEMBL ID (for activity data)
ChEMBL_search_molecules(query="imatinib")
# -> ChEMBL ID (e.g., "CHEMBL941")

# Step 4: Get all synonyms (brand names, INN, etc.)
PubChem_get_compound_synonyms_by_CID(cid="5291")

ID 解析优先级:

  1. 从 PubChem CID 开始(通用性最高)
  2. 获取 ChEMBL ID(用于生物活性数据)
  3. 使用规范 SMILES 进行基于结构的搜索和 ADMET 分析
阶段 2:基于结构的搜索

相似性搜索(查找类似物):

PubChem_search_compounds_by_similarity(
    smiles="CANONICAL_SMILES",
    threshold=85   # Tanimoto threshold 0-100; 85 = highly similar
)
# Returns: list of CIDs of similar compounds

ChEMBL_search_similar_molecules(query="CHEMBL941")  # Or SMILES
# Returns: ChEMBL entries sorted by similarity

子结构搜索(查找包含某个骨架的化合物):

PubChem_search_compounds_by_substructure(smiles="SCAFFOLD_SMILES")
# Returns: CIDs of compounds containing the scaffold
阶段 3:生物活性和结合亲和力

获取某个化合物的所有活性数据(涉及所有靶点):

ChEMBL_search_activities(
    molecule_chembl_id="CHEMBL941",
    pchembl_value__gte=6,   # pIC50/Ki >= 6 = IC50/Ki <= 1 µM
    limit=50
)
# Returns: assay_type, target_name, pchembl_value, units

获取某个靶点的所有配体:

# First find target ChEMBL ID
ChEMBL_search_targets(query="EGFR", organism="Homo sapiens")
# -> target_chembl_id, e.g., "CHEMBL203"

ChEMBL_get_target_activities(
    target_chembl_id="CHEMBL203"
)
# Returns: all compounds with binding data against this target

BindingDB(如可用——经常超时):

BindingDB_get_ligands_by_uniprot(uniprot_id="P00533")  # EGFR
# Returns: Ki, IC50, Kd data with literature references
# Note: BindingDB REST API is frequently unavailable; fall back to ChEMBL

pChEMBL 值解读:

pChEMBLIC50 / Ki亲和力
>= 9<= 1 nM极强
>= 7<= 100 nM强
>= 6<= 1 µM中等
>= 5<= 10 µM弱
< 5> 10 µM无活性
阶段 4:类药性和 ADMET

SwissADME(全面分析,需要 SMILES 字符串,而非列表):

SwissADME_calculate_adme(
    operation="calculate_adme",
    smiles="CANONICAL_SMILES"
)
# Returns: physicochemical, lipophilicity, water solubility, pharmacokinetics,
#          drug-likeness scores (Lipinski, Veber, Egan, Muegge), PAINS alerts

SwissADME_check_druglikeness(
    operation="check_druglikeness",
    smiles="CANONICAL_SMILES"
)
# Returns: Lipinski/Veber/Egan pass/fail + lead-likeness

ADMET-AI(基于机器学习,需要将 SMILES 作为列表传入——安装 tooluniverse[ml]):

ADMETAI_predict_physicochemical_properties(smiles=["CANONICAL_SMILES"])
ADMETAI_predict_bioavailability(smiles=["CANONICAL_SMILES"])
ADMETAI_predict_BBB_penetrance(smiles=["CANONICAL_SMILES"])
ADMETAI_predict_toxicity(smiles=["CANONICAL_SMILES"])
ADMETAI_predict_CYP_interactions(smiles=["CANONICAL_SMILES"])

注意:ADMET-AI 需要 pip install tooluniverse[ml]。如果不可用,可使用 SwissADME 作为备用方案。

关键类药性规则:

  • Lipinski 五规则(Ro5):MW <= 500、logP <= 5、HBD <= 5、HBA <= 10(口服药物)
  • Veber 规则:TPSA <= 140 Ų、可旋转键 <= 10(口服生物利用度)
  • 先导化合物样规则:MW <= 350、logP <= 3、HBD <= 3、HBA <= 6(片段/先导化合物)
阶段 5:靶点预测

当你拥有一种新型化合物并想预测其靶点时:

SwissTargetPrediction_predict(
    operation="predict",
    smiles="CANONICAL_SMILES"
)
# Returns: predicted protein targets with probability scores
# Note: SwissTargetPrediction uses structure-similarity to known drug-target pairs
# May time out for complex molecules
第 6 阶段:商业可用性

eMolecules(聚合了 200 多家供应商——返回搜索 URL,而非直接数据):

eMolecules_search(query="compound_name")
# -> Returns search_url to visit on eMolecules.com

eMolecules_search_smiles(smiles="CANONICAL_SMILES")
# -> Returns URL for exact/similar structure search

Enamine(超过 370 亿种按需合成化合物——API 不可用时返回 URL):

Enamine_search_catalog(query="compound_name")
# -> If API available: returns catalog entries with catalog_id, price
# -> If API unavailable: returns search_url for manual search

Enamine_search_smiles(smiles="CANONICAL_SMILES")
# -> Exact or similarity structure search

Enamine_get_libraries()
# -> Lists available Enamine screening collections

注意:eMolecules 和 Enamine API 经常返回搜索 URL,而不是实时数据。请将这些链接作为“在此搜索”链接提供给用户。


工具参数参考

工具必需参数说明
PubChem_get_CID_by_compound_namecompound_name返回 CID 列表;选择第一个或最相关的 CID
PubChem_get_CID_by_SMILESsmiles使用规范 SMILES
PubChem_get_compound_properties_by_CIDcid, propertiescid 为字符串;properties 为逗号分隔
PubChem_search_compounds_by_similaritysmilesthreshold(整数,0-100,默认值为 90)
PubChem_search_compounds_by_substructuresmiles返回与骨架匹配的 CID
ChEMBL_search_moleculesquery名称、ChEMBL ID 或 InChIKey
ChEMBL_get_moleculechembl_id完整格式为 "CHEMBL941",而非 "941"
ChEMBL_search_similar_moleculesquerySMILES 或 ChEMBL ID
ChEMBL_search_activitiesmolecule_chembl_id OR target_chembl_id使用 pchembl_value__gte=6 筛选效力较强的化合物
ChEMBL_get_drug_mechanismsdrug_chembl_id or drug_name仅适用于已获批药物
ChEMBL_search_targetsquery添加 organism="Homo sapiens" 以筛选人类靶点
ChEMBL_get_target_activitiestarget_chembl_id返回该靶点的所有配体
SwissADME_calculate_admeoperation="calculate_adme", smilesSMILES 为字符串(不是列表)
SwissADME_check_druglikenessoperation="check_druglikeness", smilesSMILES 为字符串
ADMETAI_predict_*smiles必须是列表:["SMILES"],而不是 "SMILES"
SwissTargetPrediction_predictoperation="predict", smiles可能超时
eMolecules_searchquery返回搜索 URL(无实时数据)
eMolecules_search_smilessmiles规范 SMILES
eMolecules_get_vendorscompound_ideMolecules 内部 ID
Enamine_search_catalogqueryAPI 不可用时返回 URL
Enamine_search_smilessmilessearch_type:"exact"、"similarity"、"substructure"
Enamine_get_compoundenamine_idEnamine 专用目录 ID
BindingDB_get_ligands_by_uniprotuniprot_id经常不可用——请使用 ChEMBL 作为备用方案
BindingDB_get_targets_by_compoundsmiles基于 SMILES 查询靶点

常见模式

模式 1:完整化合物档案
Input: Compound name (e.g., "imatinib")
Flow:
  1. PubChem_get_CID_by_compound_name -> CID + SMILES
  2. ChEMBL_search_molecules -> ChEMBL ID
  3. PubChem_get_compound_properties_by_CID -> physicochemical props
  4. SwissADME_calculate_adme / ADMETAI_predict_* -> ADMET profile
  5. ChEMBL_search_activities(molecule_chembl_id) -> binding data
  6. ChEMBL_get_drug_mechanisms -> MOA (if approved drug)
Output: Complete compound profile with identity, ADMET, and activity data
模式 2:类似物发现
Input: Reference compound SMILES
Flow:
  1. PubChem_search_compounds_by_similarity(smiles, threshold=85) -> similar CIDs
  2. ChEMBL_search_similar_molecules(query=smiles) -> ChEMBL analogs
  3. For each hit: PubChem_get_compound_properties_by_CID -> properties
  4. SwissADME_check_druglikeness -> filter by drug-likeness
Output: Ranked list of analogs with activity data and drug-likeness scores
模式 3:基于靶点的化合物搜索
Input: Target name (e.g., "EGFR")
Flow:
  1. ChEMBL_search_targets(query="EGFR", organism="Homo sapiens") -> target_chembl_id
  2. ChEMBL_get_target_activities(target_chembl_id) -> all ligands with Ki/IC50
  3. Filter by pchembl_value >= 7 (potent compounds)
  4. For top hits: SwissADME_check_druglikeness -> assess drug-likeness
  5. eMolecules_search(query=compound_name) -> check commercial availability
Output: Prioritized list of potent, drug-like, commercially available compounds
模式 4:ADMET 风险评估
Input: Novel compound SMILES
Flow:
  1. SwissADME_calculate_adme(operation="calculate_adme", smiles) -> full ADMET
  2. ADMETAI_predict_toxicity(smiles=[smiles]) -> hERG, DILI, mutagenicity
  3. ADMETAI_predict_CYP_interactions(smiles=[smiles]) -> drug-drug interaction risk
  4. ADMETAI_predict_BBB_penetrance(smiles=[smiles]) -> CNS penetration
Output: ADMET risk profile with flagged liabilities

备用方案链

首选方案备用方案适用情况
BindingDB_get_ligands_by_uniprotChEMBL_get_target_activitiesBindingDB API 不可用
ADMETAI_predict_*SwissADME_calculate_adme未安装 ml 依赖项
Enamine_search_catalog仅返回 URLAPI 返回 HTTP 500(常见情况)
SwissTargetPrediction_predictChEMBL_search_similar_molecules + 已知靶点预测超时
PubChem_get_CID_by_compound_nameChEMBL_search_molecules(query=name)PubChem 中没有该名称

限制

  • BindingDB:REST API 经常超时;ChEMBL 是获取结合数据的可靠替代方案
  • Enamine API:经常返回 HTTP 500;工具会提供搜索 URL 作为备用方案
  • eMolecules:没有公共 API;工具仅生成搜索 URL
  • ADMET-AI:需要 pip install tooluniverse[ml];基础安装中不一定可用
  • SwissTargetPrediction:基于网页抓取;处理复杂分子时可能超时
  • SMILES 格式:ADMET-AI 要求使用列表 ["SMILES"];SwissADME 要求使用字符串 "SMILES"
  • ChEMBL ID:始终使用完整格式 "CHEMBL941",切勿只写 "941"

评论

支持 Markdown