<< All versions
Skill v1.0.0
currentAutomated scan100/100internscience/scp/smiles-to-cas-conversion
──Details
PublishedJune 16, 2026 at 11:17 PM
Content Hashsha256:549d51ca831636ad...
Git SHAcea539856403
──Files
Files (1 file, 3.1 KB)
SKILL.md3.1 KBactive
SKILL.md · 119 lines · 3.1 KB
version: "1.0.0" name: smiles-to-cas-conversion description: Convert SMILES strings to CAS registry numbers using material informatics tools to identify chemical substances. license: MIT license metadata: skill-author: PJLab
SMILES to CAS Conversion
Usage
1. MCP Server Definition
python
import asyncioimport jsonfrom mcp.client.streamable_http import streamablehttp_clientfrom mcp import ClientSessionclass MaterialToolsClient:"""SciToolAgent-Mat 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):try:if hasattr(result, 'content') and result.content:content = result.content[0]if hasattr(content, 'text'):try:return json.loads(content.text)except:return content.textreturn str(result)except Exception as e:return {"error": f"parse error: {e}", "raw": str(result)}
2. SMILES to CAS Conversion Workflow
Convert SMILES notation to CAS registry numbers.
Implementation:
python
## Initialize clientclient = MaterialToolsClient("https://scp.intern-ai.org.cn/api/v1/mcp/30/SciToolAgent-Mat","<your-api-key>")if not await client.connect():print("connection failed")exit()## Input: SMILES stringssmiles_list = ["CCO", # Ethanol"CC(=O)O", # Acetic acid"c1ccccc1" # Benzene]print("SMILES to CAS Conversion:")for smiles in smiles_list:result = await client.session.call_tool("SMILESToCAS",arguments={"smiles": smiles})result_data = client.parse_result(result)print(f"SMILES: {smiles}")print(f"Result: {result_data}\n")await client.disconnect()
Tool Descriptions
SciToolAgent-Mat Server:
SMILESToCAS: Convert SMILES to CAS registry number- Args:
smiles(str): SMILES notation- Returns: CAS registry number
Use Cases
- Chemical substance identification
- Regulatory compliance checking
- Material safety data sheet lookup
- Chemical inventory management