<< All versions
Skill v1.0.0
currentAutomated scan100/100internscience/scp/chembl-molecule-search
──Details
PublishedJune 17, 2026 at 10:41 AM
Content Hashsha256:160bc7a44d8026c4...
Git SHAcea539856403
──Files
Files (1 file, 3.0 KB)
SKILL.md3.0 KBactive
SKILL.md · 113 lines · 3.0 KB
version: "1.0.0" name: chembl-molecule-search description: Search ChEMBL database for molecule information by name to retrieve bioactivity data and chemical structures. license: MIT license metadata: skill-author: PJLab
ChEMBL Molecule Search
Usage
1. MCP Server Definition
python
import asyncioimport jsonfrom mcp.client.streamable_http import streamablehttp_clientfrom mcp import ClientSessionclass OrigeneClient:"""Origene-ChEMBL MCP Client"""def __init__(self, server_url: str, api_key: str):self.server_url = server_urlself.api_key = api_keyself.session = Noneasync def connect(self):try:self.transport = streamablehttp_client(url=self.server_url,headers={"SCP-HUB-API-KEY": self.api_key})self.read, self.write, self.get_session_id = await self.transport.__aenter__()self.session_ctx = ClientSession(self.read, self.write)self.session = await self.session_ctx.__aenter__()await self.session.initialize()return Trueexcept Exception as e:print(f"✗ connect failure: {e}")return Falseasync def disconnect(self):try:if self.session:await self.session_ctx.__aexit__(None, None, None)if hasattr(self, 'transport'):await self.transport.__aexit__(None, None, None)except Exception as e:print(f"✗ disconnect error: {e}")def parse_result(self, result):if isinstance(result, dict):content_list = result.get("content") or []else:content_list = getattr(result, "content", []) or []texts = []for item in content_list:if isinstance(item, dict):if item.get("type") == "text":texts.append(item.get("text") or "")else:if getattr(item, "type", None) == "text":texts.append(getattr(item, "text", "") or "")return "".join(texts)
2. ChEMBL Molecule Search Workflow
Implementation:
python
## Initialize clientclient = OrigeneClient("https://scp.intern-ai.org.cn/api/v1/mcp/4/Origene-ChEMBL","<your-api-key>")if not await client.connect():print("connection failed")exit()## Search for molecule by nameresult = await client.session.call_tool("get_molecule_by_name",arguments={"molecule_name": "aspirin"})result_data = client.parse_result(result)print(result_data)await client.disconnect()
Tool Descriptions
Origene-ChEMBL Server:
get_molecule_by_name: Search ChEMBL for molecule information- Args:
molecule_name(str): Molecule name to search- Returns: ChEMBL molecule data including structure and bioactivity
Use Cases
- Drug discovery research
- Bioactivity data retrieval
- Chemical structure lookup
- Target-based screening