| name | go_term_analysis |
| description | Gene Ontology Analysis - Analyze GO terms: ChEMBL GO slim, STRING functional enrichment, STRING annotation, and Ensembl ontology. Use this skill for functional genomics tasks involving get go slim by id get functional enrichment get functional annotation get ontology name. Combines 4 tools from 3 SCP server(s). |
| i18n | {"zh":{"description":"基因本体分析:功能富集与注释。"}} |
Gene Ontology Analysis
Discipline: Functional Genomics | Tools Used: 4 | Servers: 3
Description
Analyze GO terms: ChEMBL GO slim, STRING functional enrichment, STRING annotation, and Ensembl ontology.
Tools Used
get_go_slim_by_id from chembl-server (streamable-http) - https://scp.intern-ai.org.cn/api/v1/mcp/4/Origene-ChEMBL
get_functional_enrichment from string-server (streamable-http) - https://scp.intern-ai.org.cn/api/v1/mcp/6/Origene-STRING
get_functional_annotation from string-server (streamable-http) - https://scp.intern-ai.org.cn/api/v1/mcp/6/Origene-STRING
get_ontology_name from ensembl-server (streamable-http) - https://scp.intern-ai.org.cn/api/v1/mcp/12/Origene-Ensembl
Workflow
- Get ChEMBL GO slim
- Run STRING enrichment
- Get STRING annotations
- Get Ensembl ontology details
Test Case
Input
{
"go_id": "GO:0005515",
"genes": "TP53",
"species": 9606
}
Expected Steps
- Get ChEMBL GO slim
- Run STRING enrichment
- Get STRING annotations
- Get Ensembl ontology details
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",
"string-server": "https://scp.intern-ai.org.cn/api/v1/mcp/6/Origene-STRING",
"ensembl-server": "https://scp.intern-ai.org.cn/api/v1/mcp/12/Origene-Ensembl"
}
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 (result)
():
sessions = {}
sessions[], _, _ = connect(, )
sessions[], _, _ = connect(, )
sessions[], _, _ = connect(, )
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())