drugsda-compound-retrieve

Retrieve SMILES strings from PubChem using compound names.

157 stars

Best use case

drugsda-compound-retrieve is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Retrieve SMILES strings from PubChem using compound names.

Teams using drugsda-compound-retrieve should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/drugsda-compound-retrieve/SKILL.md --create-dirs "https://raw.githubusercontent.com/InternScience/DrClaw/main/drclaw/agent_hub/templates/pharmacy/skills/drugsda-compound-retrieve/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/drugsda-compound-retrieve/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How drugsda-compound-retrieve Compares

Feature / Agentdrugsda-compound-retrieveStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Retrieve SMILES strings from PubChem using compound names.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# SMILES Retriever

## Usage

### 1. MCP Server Definition

```python
import json
from mcp.client.streamable_http import streamablehttp_client
from mcp import ClientSession

class DrugSDAClient:    
    def __init__(self, server_url: str):
        self.server_url = server_url
        self.session = None
        
    async def connect(self):
        print(f"server url: {self.server_url}")
        try:
            self.transport = streamablehttp_client(
                url=self.server_url,
                headers={"SCP-HUB-API-KEY": "sk-a0033dde-b3cd-413b-adbe-980bc78d6126"}
            )
            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()
            session_id = self.get_session_id()
            
            print(f"✓ connect success")
            return True
            
        except Exception as e:
            print(f"✗ connect failure: {e}")
            import traceback
            traceback.print_exc()
            return False
    
    async 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)
            print("✓ already disconnect")
        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'):
                    return json.loads(content.text)
            return str(result)
        except Exception as e:
            return {"error": f"parse error: {e}", "raw": str(result)}
```

### 2. Tool Usage

The description of tool *retrieve_smiles_by_compoundname*.

```tex
Retrieve SMILES strings from PubChem using compound names.
Args:
    compound_names (List[str]): List of input compound names (e.g., ["aspirin", "caffeine"])
Return:
    status (str): success/partial_success/error
    msg (str): message
    retrieve_smiles (List[dict]): List of dict, each containing the keys 'compound_name' and 'smiles'.
        --compound_name (str): A compound name of compound_names 
        --smiles (str): The retrieved SMILES string, if it exists; otherwise, None.
```

How to use tool *retrieve_smiles_by_compoundname* :

```python
client = DrugSDAClient("https://scp.intern-ai.org.cn/api/v1/mcp/2/DrugSDA-Tool")
if not await client.connect():
    print("connection failed")
    return

response = await client.session.call_tool(
    "retrieve_smiles_by_compoundname",
    arguments={
        "compound_names": compound_names
    }
)
result = client.parse_result(response)
retrieve_smiles = result["retrieve_smiles"]

await client.disconnect() 
```

Related Skills

lead_compound_optimization

157
from InternScience/DrClaw

Lead Compound Optimization - Optimize a lead compound: validate SMILES, compute drug-likeness, predict ADMET properties, and check ChEMBL bioactivity. Use this skill for medicinal chemistry tasks involving is valid smiles calculate mol drug chemistry pred molecule admet search activity. Combines 4 tools from 3 SCP server(s).

disease_compound_pipeline

157
from InternScience/DrClaw

Disease-Specific Compound Screening - Screen compounds for disease: get DLEPS score for disease relevance, predict ADMET, and check drug-likeness. Use this skill for drug discovery tasks involving calculate dleps score pred molecule admet calculate mol drug chemistry get compound by name. Combines 4 tools from 3 SCP server(s).

compound_to_drug_pipeline

157
from InternScience/DrClaw

Compound-to-Drug Analysis Pipeline - Full compound-to-drug pipeline: name-to-SMILES conversion, structure analysis, drug-likeness, and FDA drug lookup. Use this skill for drug development tasks involving NameToSMILES ChemicalStructureAnalyzer calculate mol drug chemistry get drug by name. Combines 4 tools from 4 SCP server(s).

compound_database_crossref

157
from InternScience/DrClaw

Cross-Database Compound Lookup - Cross-reference compound across databases: PubChem, ChEMBL, KEGG, and CAS number lookup. Use this skill for chemical information tasks involving get compound by name get molecule by name kegg find CASToPrice. Combines 4 tools from 4 SCP server(s).

cas_compound_lookup

157
from InternScience/DrClaw

CAS Number Compound Lookup - Look up compounds by CAS: convert CAS to price/availability, get PubChem data, get ChEMBL info, and structure analysis. Use this skill for chemical information tasks involving CASToPrice get compound by name get molecule by name ChemicalStructureAnalyzer. Combines 4 tools from 4 SCP server(s).

drugsda-target-retrieve

157
from InternScience/DrClaw

Search the protein information from the input gene name and downloads the optimal PDB or AlphaFold structures.

drugsda-rgroup-sampling

157
from InternScience/DrClaw

Generate new molecules sampling from the input scaffold.

drugsda-prosst

157
from InternScience/DrClaw

Given a protein sequence and its structure, employ ProSST model to predict mutation effects and obtain the top-k mutated sequences.

drugsda-peptide-sampling

157
from InternScience/DrClaw

Generate new peptide molecules sampling from the input peptide sequence.

drugsda-p2rank

157
from InternScience/DrClaw

No description provided.

drugsda-mol2mol-sampling

157
from InternScience/DrClaw

Generate new molecules sampling from the input molecule.

drugsda-mol-similarity

157
from InternScience/DrClaw

Compute the Tanimoto similarities between a target molecule and a list of candidate molecules using Morgan fingerprints.