Drug-Target Structural Biology

SkillProductivity

Drug-Target Structural Biology - Integrate drug and target structure: get drug from ChEMBL, target structure from PDB, dock them, and predict ADMET. Use this skill for structural pharmacology tasks involving get drug by name retrieve protein data by pdbcode quick molecule docking pred molecule admet. Combines 4 tools from 3 SCP server(s).

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Drug-Target Structural Biology skill

What this skill tells your AI

The instructions your AI receives, as published by internscience/scp in skills/drug_target_structure/SKILL.md and read by ahel’s review.

Discipline: Structural Pharmacology | Tools Used: 4 | Servers: 3

Description

Integrate drug and target structure: get drug from ChEMBL, target structure from PDB, dock them, and predict ADMET.

Tools Used

  • get_drug_by_name from chembl-server (streamable-http) - https://scp.intern-ai.org.cn/api/v1/mcp/4/Origene-ChEMBL
  • retrieve_protein_data_by_pdbcode from server-2 (streamable-http) - https://scp.intern-ai.org.cn/api/v1/mcp/2/DrugSDA-Tool
  • quick_molecule_docking from server-3 (streamable-http) - https://scp.intern-ai.org.cn/api/v1/mcp/3/DrugSDA-Model
  • pred_molecule_admet from server-3 (streamable-http) - https://scp.intern-ai.org.cn/api/v1/mcp/3/DrugSDA-Model

Workflow

  1. Get drug data from ChEMBL
  2. Download target structure
  3. Perform molecular docking
  4. Predict ADMET for drug

Test Case

Input

{
    "drug": "imatinib",
    "pdb_code": "1IEP"
}

Expected Steps

  1. Get drug data from ChEMBL
  2. Download target structure
  3. Perform molecular docking
  4. Predict ADMET for drug

Usage Example

Note: Replace <YOUR_SCP_HUB_API_KEY> with your own SCP Hub API Key. You can obtain one from the SCP Platform.

import asyncio
import json
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
from mcp.client.sse import sse_client

SERVERS = {
    "chembl-server": "https://scp.intern-ai.org.cn/api/v1/mcp/4/Origene-ChEMBL",
    "server-2": "https://scp.intern-ai.org.cn/api/v1/mcp/2/DrugSDA-Tool",
    "server-3": "https://scp.intern-ai.org.cn/api/v1/mcp/3/DrugSDA-Model"
}

async def connect(url, transport_type):
    transport = streamablehttp_client(url=url, headers={"SCP-HUB-API-KEY": "<YOUR_SCP_HUB_API_KEY>"})
    read, write, _ = await transport.__aenter__()
    ctx = ClientSession(read, write)
    session = await ctx.__aenter__()
    await session.initialize()
    return session, ctx, transport

def parse(result):
    try:
        if hasattr(result, 'content') and result.content:
            c = result.content[0]
            if hasattr(c, 'text'):
                try: return json.loads(c.text)
                except: return c.text
        return str(result)
    except: return str(result)

async def main():
    # Connect to required servers
    sessions = {}
    sessions["chembl-server"], _, _ = await connect("https://scp.intern-ai.org.cn/api/v1/mcp/4/Origene-ChEMBL", "streamable-http")
    sessions["server-2"], _, _ = await connect("https://scp.intern-ai.org.cn/api/v1/mcp/2/DrugSDA-Tool", "streamable-http")
    sessions["server-3"], _, _ = await connect("https://scp.intern-ai.org.cn/api/v1/mcp/3/DrugSDA-Model", "streamable-http")

    # Execute workflow steps
    # Step 1: Get drug data from ChEMBL
    result_1 = await sessions["chembl-server"].call_tool("get_drug_by_name", arguments={})
    data_1 = parse(result_1)
    print(f"Step 1 result: {json.dumps(data_1, indent=2, ensure_ascii=False)[:500]}")

    # Step 2: Download target structure
    result_2 = await sessions["server-2"].call_tool("retrieve_protein_data_by_pdbcode", arguments={})
    data_2 = parse(result_2)
    print(f"Step 2 result: {json.dumps(data_2, indent=2, ensure_ascii=False)[:500]}")

    # Step 3: Perform molecular docking
    result_3 = await sessions["server-3"].call_tool("quick_molecule_docking", arguments={})
    data_3 = parse(result_3)
    print(f"Step 3 result: {json.dumps(data_3, indent=2, ensure_ascii=False)[:500]}")

    # Step 4: Predict ADMET for drug
    result_4 = await sessions["server-3"].call_tool("pred_molecule_admet", arguments={})
    data_4 = parse(result_4)
    print(f"Step 4 result: {json.dumps(data_4, indent=2, ensure_ascii=False)[:500]}")

    # Cleanup
    print("Workflow complete!")

if __name__ == "__main__":
    asyncio.run(main())

Signals

GitHub stars
167
Forks
9
Last commit
Jun 2026
Advanced
Catalog kind
skill
Gateway key
drug-target-structure
Source
github.com/internscience/scp