Drug Warning Intelligence Report - Generate drug warning report: ChEMBL drug warnings, FDA boxed warnings, adverse reactions, and environmental warnings. Use this skill for pharmacovigilance tasks involving get drug warning by id get boxed warning info by drug name get adverse reactions by drug name get environmental warning by drug name. Combines 4 tools from 2 SCP server(s).
Discipline: Pharmacovigilance | Tools Used: 4 | Servers: 2
Generate drug warning report: ChEMBL drug warnings, FDA boxed warnings, adverse reactions, and environmental warnings.
get_drug_warning_by_id from chembl-server (streamable-http) - https://scp.intern-ai.org.cn/api/v1/mcp/4/Origene-ChEMBLget_boxed_warning_info_by_drug_name from fda-drug-server (streamable-http) - https://scp.intern-ai.org.cn/api/v1/mcp/14/Origene-FDADrugget_adverse_reactions_by_drug_name from fda-drug-server (streamable-http) - https://scp.intern-ai.org.cn/api/v1/mcp/14/Origene-FDADrugget_environmental_warning_by_drug_namefda-drug-serverhttps://scp.intern-ai.org.cn/api/v1/mcp/14/Origene-FDADrug{
"drug_name": "rosiglitazone",
"warning_id": 1
}
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",
"fda-drug-server": "https://scp.intern-ai.org.cn/api/v1/mcp/14/Origene-FDADrug"
}
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():
# Connect to required servers
sessions = {}
sessions["chembl-server"], _, _ = await connect("https://scp.intern-ai.org.cn/api/v1/mcp/4/Origene-ChEMBL", "streamable-http")
sessions["fda-drug-server"], _, _ = await connect("https://scp.intern-ai.org.cn/api/v1/mcp/14/Origene-FDADrug", "streamable-http")
# Execute workflow steps
# Step 1: Get ChEMBL drug warnings
result_1 = await sessions["chembl-server"].call_tool("get_drug_warning_by_id", arguments={})
data_1 = parse(result_1)
print(f"Step 1 result: {json.dumps(data_1, indent=2, ensure_ascii=False)[:500]}")
# Step 2: Get FDA boxed warnings
result_2 = await sessions["fda-drug-server"].call_tool("get_boxed_warning_info_by_drug_name", arguments={})
data_2 = parse(result_2)
print(f"Step 2 result: {json.dumps(data_2, indent=2, ensure_ascii=False)[:500]}")
# Step 3: Get adverse reactions
result_3 = await sessions["fda-drug-server"].call_tool("get_adverse_reactions_by_drug_name", arguments={})
data_3 = parse(result_3)
print(f"Step 3 result: {json.dumps(data_3, indent=2, ensure_ascii=False)[:500]}")
# Step 4: Get environmental warnings
result_4 = await sessions["fda-drug-server"].call_tool("get_environmental_warning_by_drug_name", arguments={})
data_4 = parse(result_4)
print(f"Step 4 result: {json.dumps(data_4, indent=2, ensure_ascii=False)[:500]}")
# Cleanup
print("Workflow complete!")
if __name__ == "__main__":
asyncio.run(main())