| name | organism_classification |
| description | Organism Classification & Database - Classify organism: NCBI taxonomy, Ensembl taxonomy, ChEMBL organisms, and genome info. Use this skill for taxonomy tasks involving get taxonomy get taxonomy id get organism by id get genome dataset report by taxon. Combines 4 tools from 3 SCP server(s). |
| i18n | {"zh":{"description":"生物分类与数据库查询。"}} |
Organism Classification & Database
Discipline: Taxonomy | Tools Used: 4 | Servers: 3
Description
Classify organism: NCBI taxonomy, Ensembl taxonomy, ChEMBL organisms, and genome info.
Tools Used
get_taxonomy from ncbi-server (streamable-http) - https://scp.intern-ai.org.cn/api/v1/mcp/9/Origene-NCBI
get_taxonomy_id from ensembl-server (streamable-http) - https://scp.intern-ai.org.cn/api/v1/mcp/12/Origene-Ensembl
get_organism_by_id from chembl-server (streamable-http) - https://scp.intern-ai.org.cn/api/v1/mcp/4/Origene-ChEMBL
get_genome_dataset_report_by_taxon from ncbi-server (streamable-http) - https://scp.intern-ai.org.cn/api/v1/mcp/9/Origene-NCBI
Workflow
- Get NCBI taxonomy
- Get Ensembl taxonomy
- Get ChEMBL organism info
- Get genome dataset report
Test Case
Input
{
"taxon": "9606",
"species": "homo_sapiens"
}
Expected Steps
- Get NCBI taxonomy
- Get Ensembl taxonomy
- Get ChEMBL organism info
- Get genome dataset report
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 = {
"ncbi-server": "https://scp.intern-ai.org.cn/api/v1/mcp/9/Origene-NCBI",
"ensembl-server": "https://scp.intern-ai.org.cn/api/v1/mcp/12/Origene-Ensembl",
"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 (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())