| name | protein_engineering |
| description | Protein Engineering Workflow - Engineer a protein: predict structure, identify functional residues, predict beneficial mutations, and calculate properties. Use this skill for protein engineering tasks involving Protein structure prediction ESMFold predict functional residue zero shot sequence prediction calculate protein sequence properties. Combines 4 tools from 2 SCP server(s). |
Protein Engineering Workflow
Discipline: Protein Engineering | Tools Used: 4 | Servers: 2
Description
Engineer a protein: predict structure, identify functional residues, predict beneficial mutations, and calculate properties.
Tools Used
Protein_structure_prediction_ESMFold from server-1 (sse) - https://scp.intern-ai.org.cn/api/v1/mcp/1/VenusFactory
predict_functional_residue from server-1 (sse) - https://scp.intern-ai.org.cn/api/v1/mcp/1/VenusFactory
zero_shot_sequence_prediction from server-1 (sse) - https://scp.intern-ai.org.cn/api/v1/mcp/1/VenusFactory
calculate_protein_sequence_properties from server-2 (streamable-http) - https://scp.intern-ai.org.cn/api/v1/mcp/2/DrugSDA-Tool
Workflow
- Predict 3D structure with ESMFold
- Identify functional residues
- Predict beneficial mutations
- Calculate physicochemical properties
Test Case
Input
{
"sequence": "MKTIIALSYIFCLVFAGKRDEFPSTWYV"
}
Expected Steps
- Predict 3D structure with ESMFold
- Identify functional residues
- Predict beneficial mutations
- Calculate physicochemical properties
Usage Example
Note: Replace sk-b04409a1-b32b-4511-9aeb-22980abdc05c with your own SCP Hub API Key. You can obtain one from the SCP Platform.
import asyncio
import json
from contextlib import AsyncExitStack
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
from mcp.client.sse import sse_client
SERVERS = {
"server-1": "https://scp.intern-ai.org.cn/api/v1/mcp/1/VenusFactory",
"server-2": "https://scp.intern-ai.org.cn/api/v1/mcp/2/DrugSDA-Tool"
}
async def connect(url, stack):
transport = streamablehttp_client(url=url, headers={"SCP-HUB-API-KEY": "sk-b04409a1-b32b-4511-9aeb-22980abdc05c"})
read, write, _ = await stack.enter_async_context(transport)
ctx = ClientSession(read, write)
session = await stack.enter_async_context(ctx)
await session.initialize()
return session
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)
():
AsyncExitStack() stack:
sessions = {}
sessions[] = connect(, stack)
sessions[] = connect(, stack)
result_1 = sessions[].call_tool(, arguments={})
data_1 = parse(result_1)
()
result_2 = sessions[].call_tool(, arguments={})
data_2 = parse(result_2)
()
result_3 = sessions[].call_tool(, arguments={})
data_3 = parse(result_3)
()
result_4 = sessions[].call_tool(, arguments={})
data_4 = parse(result_4)
()
()
__name__ == :
asyncio.run(main())