drug-target-structure

star 147

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).

InternScience By InternScience schedule Updated 3/3/2026

name: drug_target_structure description: "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)."

Drug-Target Structural Biology

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())
Install via CLI
npx skills add https://github.com/InternScience/scp --skill drug-target-structure
Repository Details
star Stars 147
call_split Forks 10
navigation Branch main
article Path SKILL.md
More from Creator
InternScience
InternScience Explore all skills →