| name | alphafold_structure_pipeline |
| description | AlphaFold Structure Analysis Pipeline - AlphaFold pipeline: download predicted structure, predict pockets, extract sequence, and compute properties. Use this skill for computational biology tasks involving download alphafold structure run fpocket extract pdb sequence calculate pdb basic info. Combines 4 tools from 3 SCP server(s). |
AlphaFold Structure Analysis Pipeline
Discipline: Computational Biology | Tools Used: 4 | Servers: 3
Description
AlphaFold pipeline: download predicted structure, predict pockets, extract sequence, and compute properties.
Tools Used
download_alphafold_structure from server-2 (streamable-http) - https://scp.intern-ai.org.cn/api/v1/mcp/2/DrugSDA-Tool
run_fpocket from server-3 (streamable-http) - https://scp.intern-ai.org.cn/api/v1/mcp/3/DrugSDA-Model
extract_pdb_sequence from server-1 (sse) - https://scp.intern-ai.org.cn/api/v1/mcp/1/VenusFactory
calculate_pdb_basic_info from server-2 (streamable-http) - https://scp.intern-ai.org.cn/api/v1/mcp/2/DrugSDA-Tool
Workflow
- Download AlphaFold structure
- Predict binding pockets
- Extract protein sequence
- Calculate structure statistics
Test Case
Input
{
"uniprot_id": "P04637"
}
Expected Steps
- Download AlphaFold structure
- Predict binding pockets
- Extract protein sequence
- Calculate structure statistics
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 = {
"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",
"server-1": "https://scp.intern-ai.org.cn/api/v1/mcp/1/VenusFactory"
}
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():
sessions = {}
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")
sessions["server-1"], _, _ = await connect("https://scp.intern-ai.org.cn/api/v1/mcp/1/VenusFactory", "sse")
result_1 = await sessions["server-2"].call_tool("download_alphafold_structure", arguments={})
data_1 = parse(result_1)
print(f"Step 1 result: {json.dumps(data_1, indent=2, ensure_ascii=False)[:500]}")
result_2 = await sessions["server-3"].call_tool("run_fpocket", arguments={})
data_2 = parse(result_2)
print(f"Step 2 result: {json.dumps(data_2, indent=2, ensure_ascii=False)[:500]}")
result_3 = await sessions["server-1"].call_tool("extract_pdb_sequence", arguments={})
data_3 = parse(result_3)
print(f"Step 3 result: {json.dumps(data_3, indent=2, ensure_ascii=False)[:500]}")
result_4 = await sessions["server-2"].call_tool("calculate_pdb_basic_info", arguments={})
data_4 = parse(result_4)
print(f"Step 4 result: {json.dumps(data_4, indent=2, ensure_ascii=False)[:500]}")
print("Workflow complete!")
if __name__ == "__main__":
asyncio.run(main())