| name | gene_disease_association |
| description | Gene-Disease Association Analysis - Analyze gene-disease associations: NCBI gene metadata, OpenTargets disease associations, TCGA expression, and Monarch phenotypes. Use this skill for medical genetics tasks involving get gene metadata by gene name get associated targets by disease efoId get gene expression across cancers get joint associated diseases by HPO ID list. Combines 4 tools from 4 SCP server(s). |
Gene-Disease Association Analysis
Discipline: Medical Genetics | Tools Used: 4 | Servers: 4
Description
Analyze gene-disease associations: NCBI gene metadata, OpenTargets disease associations, TCGA expression, and Monarch phenotypes.
Tools Used
get_gene_metadata_by_gene_name from ncbi-server (streamable-http) - https://scp.intern-ai.org.cn/api/v1/mcp/9/Origene-NCBI
get_associated_targets_by_disease_efoId from opentargets-server (streamable-http) - https://scp.intern-ai.org.cn/api/v1/mcp/15/Origene-OpenTargets
get_gene_expression_across_cancers from tcga-server (streamable-http) - https://scp.intern-ai.org.cn/api/v1/mcp/11/Origene-TCGA
get_joint_associated_diseases_by_HPO_ID_list from monarch-server (streamable-http) - https://scp.intern-ai.org.cn/api/v1/mcp/16/Origene-Monarch
Workflow
- Get gene metadata from NCBI
- Get disease-target associations from OpenTargets
- Analyze TCGA cancer expression
- Check Monarch disease associations
Test Case
Input
{
"gene_name": "TP53",
"disease_efo": "EFO_0000311"
}
Expected Steps
- Get gene metadata from NCBI
- Get disease-target associations from OpenTargets
- Analyze TCGA cancer expression
- Check Monarch disease associations
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 = {
"ncbi-server": "https://scp.intern-ai.org.cn/api/v1/mcp/9/Origene-NCBI",
"opentargets-server": "https://scp.intern-ai.org.cn/api/v1/mcp/15/Origene-OpenTargets",
"tcga-server": "https://scp.intern-ai.org.cn/api/v1/mcp/11/Origene-TCGA",
"monarch-server": "https://scp.intern-ai.org.cn/api/v1/mcp/16/Origene-Monarch"
}
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: c.text
(result)
: (result)
():
AsyncExitStack() stack:
sessions = {}
sessions[] = connect(, stack)
sessions[] = connect(, stack)
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())