mcpField
T
tooluniverse-small-molecule-discovery

tooluniverse-small-molecule-discovery

github.com/mims-harvardデータ・データベース1.8k235 回インストール2 日前に更新
リポジトリ

tooluniverse-small-molecule-discovery について

化合物の同定、構造、生物活性、ADMET 特性、商業調達を調べる創薬研究者向けのスキルです。化合物名や構造から活性情報や購入先の手掛かりまで、ToolUniverse での検索手順をまとめています。

主な機能

  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 の Rule of 5 は、経口投与され、受動吸収される薬剤を対象に導出されたもので、よく知られた例外が数多くあります。天然物、マクロサイクル、PROTAC、そして承認済み薬剤の多くは、1 つ以上のルールに違反します。重要なのは「この化合物は 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 阻害剤の結合親和性を示して」
  • 「イマチニブに類似した化合物を検索して」
  • 「この化合物は市販されていますか?」
  • 「この分子の ADMET 特性は何ですか?」
  • 「標的 Y に対する ChEMBL の活性データを探して」
  • 「この低分子化合物の標的を予測して」

主なツール

ツール目的主なパラメーター
PubChem_get_CID_by_compound_name化合物名からCIDを検索compound_name
PubChem_get_CID_by_SMILESSMILESからCIDを検索smiles
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でChEMBLを検索query
ChEMBL_get_moleculeChEMBLの分子レコード全体chembl_id
ChEMBL_search_similar_moleculesChEMBLで類似性を検索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_catalogEnamineのスクリーニングライブラリを検索query
Enamine_search_smiles構造からEnamineを検索smiles
Enamine_get_librariesEnamineの化合物ライブラリを一覧表示(必須項目なし)

ワークフロー

フェーズ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. 構造ベースの検索とADMETには標準SMILESを使用します
フェーズ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(MLベース。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の5の法則(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_nameCID のリストを返します。最初のもの、または最も関連性の高いものを選択してください
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完全な形式を使用します:「941」ではなく「CHEMBL941」
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_compoundsmilesSMILES に基づく標的検索

よく使われるパターン

パターン 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_admeml 依存関係がインストールされていない場合
Enamine_search_catalogURL のみを返しますAPI が 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」のような形式は使用しないでください

コメント