| name | antibody_target_analysis |
| description | Antibody-Target Analysis - Analyze an antibody target: UniProt protein info, InterPro domains, protein properties, and biotherapeutic data from ChEMBL. Use this skill for immunology tasks involving get uniprotkb entry by accession query interpro ComputeProtPara get biotherapeutic by name. Combines 4 tools from 4 SCP server(s). |
Antibody-Target Analysis
Discipline: Immunology | Tools Used: 4 | Servers: 4
Description
Analyze an antibody target: UniProt protein info, InterPro domains, protein properties, and biotherapeutic data from ChEMBL.
Tools Used
get_uniprotkb_entry_by_accession from uniprot-server (streamable-http) - https://scp.intern-ai.org.cn/api/v1/mcp/10/Origene-UniProt
query_interpro from server-1 (sse) - https://scp.intern-ai.org.cn/api/v1/mcp/1/VenusFactory
ComputeProtPara from server-29 (sse) - https://scp.intern-ai.org.cn/api/v1/mcp/29/SciToolAgent-Bio
get_biotherapeutic_by_name from chembl-server (streamable-http) - https://scp.intern-ai.org.cn/api/v1/mcp/4/Origene-ChEMBL
Workflow
- Get full UniProt entry
- Get domain annotations
- Compute protein parameters
- Search ChEMBL biotherapeutics
Test Case
Input
{
"uniprot_accession": "P04637",
"protein_sequence": "MEEPQSDPSVEPPLSQETFS"
}
Expected Steps
- Get full UniProt entry
- Get domain annotations
- Compute protein parameters
- Search ChEMBL biotherapeutics
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 = {
"uniprot-server": "https://scp.intern-ai.org.cn/api/v1/mcp/10/Origene-UniProt",
"server-1": "https://scp.intern-ai.org.cn/api/v1/mcp/1/VenusFactory",
"server-29": "https://scp.intern-ai.org.cn/api/v1/mcp/29/SciToolAgent-Bio",
"chembl-server": "https://scp.intern-ai.org.cn/api/v1/mcp/4/Origene-ChEMBL"
}
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["uniprot-server"], _, _ = await connect("https://scp.intern-ai.org.cn/api/v1/mcp/10/Origene-UniProt", "streamable-http")
sessions["server-1"], _, _ = await connect("https://scp.intern-ai.org.cn/api/v1/mcp/1/VenusFactory", "sse")
sessions["server-29"], _, _ = await connect("https://scp.intern-ai.org.cn/api/v1/mcp/29/SciToolAgent-Bio", "sse")
sessions["chembl-server"], _, _ = await connect("https://scp.intern-ai.org.cn/api/v1/mcp/4/Origene-ChEMBL", "streamable-http")
result_1 = await sessions["uniprot-server"].call_tool("get_uniprotkb_entry_by_accession", 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-1"].call_tool("query_interpro", 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-29"].call_tool("ComputeProtPara", 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["chembl-server"].call_tool("get_biotherapeutic_by_name", 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())