ChemCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ChemCPShow me aspirin"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ChemCP - Molecule Viewer MCP App
An MCP App that renders interactive 2D molecular structure diagrams from SMILES notation using RDKit.js. Ask your AI assistant to show you any molecule, and ChemCP displays the structure with computed properties — right inside the chat.
What you get
2D structure diagrams rendered from any valid SMILES string
Molecular properties — molecular weight, LogP, H-bond donors/acceptors, TPSA, rotatable bonds, rings, and more
Interactive UI — type your own SMILES, click example molecules, all without leaving the conversation
Powered by RDKit (the same cheminformatics toolkit used by pharma and biotech)
For more functionality try: ChemIllusion
Related MCP server: PubChem MCP Server
Prerequisites
Node.js 18+ — download here
Claude Desktop (recommended) or Claude.ai paid plan (Pro/Max/Team) — the interactive molecule viewer requires a host that supports MCP Apps
Note: Claude Desktop has full MCP Apps support. Claude.ai custom connectors are experimental and may have CSP limitations that prevent RDKit.js from loading. If you see "RDKit.js failed to load" in Claude.ai, use Claude Desktop instead.
Setup: Claude Desktop
Claude Desktop supports local MCP servers out of the box. No tunnels or remote hosting needed.
Step 1: Install ChemCP
npm install -g chemcpVerify it installed:
chemcp --help(It will start the MCP server on stdio — you can Ctrl+C to stop it.)
Step 2: Configure Claude Desktop
Open your Claude Desktop config file:
OS | Path |
macOS |
|
Windows |
|
Add ChemCP to the mcpServers section:
{
"mcpServers": {
"chemcp": {
"command": "npx",
"args": ["chemcp"]
}
}
}Tip: If you already have other MCP servers configured, just add the
"chemcp"entry alongside them inside the existing"mcpServers"object.
Step 3: Restart Claude Desktop
Quit and reopen Claude Desktop. You should see ChemCP listed in the MCP tools (click the hammer icon at the bottom of the chat input).
Step 4: Try it out
Type a message like:
"Show me the molecule for aspirin"
"Render the structure of caffeine"
"Display SMILES: CC(=O)Oc1ccccc1C(=O)O"
Claude will call the render_molecule tool, and an interactive molecule viewer will appear in the conversation showing the 2D structure and molecular properties.
Setup: Claude.ai (Web) — Experimental
⚠️ Experimental: Claude.ai custom connectors have experimental MCP Apps support. CSP restrictions may prevent RDKit.js from loading. Use Claude Desktop for the best experience.
Claude.ai supports remote MCP servers via custom connectors. This requires a paid Claude plan (Pro, Max, or Team).
Step 1: Install and start the server
npm install -g chemcpStart in HTTP mode:
chemcp --httpThis starts the server on http://localhost:3001/mcp.
Step 2: Expose with a tunnel
In a separate terminal, create a public tunnel to your local server:
npx cloudflared tunnel --url http://localhost:3001Copy the generated URL (e.g., https://random-name.trycloudflare.com).
Step 3: Add as a custom connector in Claude.ai
Go to claude.ai
Click your profile picture (bottom-left)
Go to Settings > Connectors
Click Add custom connector
Paste your tunnel URL +
/mcp(e.g.,https://random-name.trycloudflare.com/mcp)Give it a name like "ChemCP"
Save
Step 4: Try it out
Start a new chat and ask Claude to show you a molecule:
"Show me the structure of ibuprofen"
"What does benzene look like? Render it for me"
"Render SMILES: CN1C=NC2=C1C(=O)N(C(=O)N2C)C"
The interactive molecule viewer will render directly in the chat.
Example prompts
Once connected, try these:
Prompt | What happens |
"Show me aspirin" | Renders aspirin's 2D structure + properties |
"Render SMILES: CCO" | Renders ethanol from its SMILES code |
"What's the structure of testosterone?" | Claude provides the SMILES and renders it |
"Compare the structures of caffeine and theobromine" | Renders both molecules side by side |
Example SMILES
Molecule | SMILES |
Ethanol |
|
Benzene |
|
Aspirin |
|
Caffeine |
|
Testosterone |
|
Glucose |
|
Troubleshooting
"I don't see the molecule viewer, just text"
The interactive UI only works in hosts that support MCP Apps:
Claude Desktop (latest version)
Claude.ai (web, with custom connector)
If you're using Claude Code (CLI) or another MCP client that doesn't support MCP Apps, the tool will still return the SMILES data as text, but the visual rendering won't appear.
"Tool not found" or ChemCP not listed
Claude Desktop: Make sure you restarted the app after editing the config file. Check that
npx chemcpworks in your terminal.Claude.ai: Make sure the tunnel is still running and the connector URL ends with
/mcp.
"RDKit.js failed to load from CDN"
Claude.ai custom connectors: CSP limitations may prevent RDKit.js from loading when using custom connectors. Solution: Use Claude Desktop instead, which has full MCP Apps support.
Claude Desktop: If RDKit.js fails to load, this usually means:
No internet connection (RDKit.js loads from
unpkg.com, ~8 MB)CDN is blocked by your network firewall
First load timeout — reload the chat and try again
Node.js version
ChemCP requires Node.js 18 or higher. Check with:
node --versionFor developers
Local development
git clone https://github.com/scottmreed/ChemCP.git
cd ChemCP
npm install
npm run build
npm run serve:http # HTTP mode for testingProject structure
File | Purpose |
| MCP server — registers |
| HTML entry point, loads RDKit.js from CDN |
| React UI — initializes RDKit WASM, renders SVG from SMILES, computes descriptors |
| npm bin entry point |
| Built output (compiled server + bundled single-file HTML) |
How it works
Claude calls the
render_moleculetool with a SMILES stringThe server returns the SMILES to the MCP App UI
The UI loads RDKit.js (WebAssembly) in the browser
RDKit parses the SMILES and renders a 2D SVG structure diagram
Molecular descriptors (MW, LogP, TPSA, etc.) are computed client-side
Everything displays in a sandboxed iframe inside the chat
Testing with the basic-host
The ext-apps repository includes a test host for MCP App development:
# Terminal 1 — run ChemCP in HTTP mode
npm run serve:http
# Terminal 2 — run the test host
git clone https://github.com/modelcontextprotocol/ext-apps.git
cd ext-apps/examples/basic-host
npm install
SERVERS='["http://localhost:3001/mcp"]' npm start
# Open http://localhost:8080Links
ChemIllusion — for more complex molecule interactions
Available Tools
1 toolrender_moleculeRender MoleculeA
Renders an interactive 2D structure diagram of a molecule from its SMILES notation. Displays the molecule image along with computed molecular properties (molecular weight, LogP, H-bond donors/acceptors, TPSA, etc.). Use this whenever a user asks to see, visualize, draw, or display a chemical structure.
| Name | Required | Description | Default |
|---|---|---|---|
| smiles | Yes | SMILES notation of the molecule (e.g. 'CCO' for ethanol, 'c1ccccc1' for benzene, 'CC(=O)Oc1ccccc1C(=O)O' for aspirin) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the interactive 2D output and computed properties. It doesn't mention error handling for invalid SMILES, but for a rendering tool this behavior is reasonably implied and covered by the description's output details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states the core function, second embellishes with output details and usage trigger. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema and no annotations, the description is self-sufficient. It explains what is rendered, what properties are shown, and when to invoke it. No critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed examples for the 'smiles' parameter. The description adds contextual meaning by tying SMILES to the rendering purpose, but does not go beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool renders an interactive 2D structure diagram from SMILES, with specific verb (renders) and resource (molecule structure). It also enumerates output properties, making the purpose unambiguous even without siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'whenever a user asks to see, visualize, draw, or display a chemical structure.' Since no sibling tools exist, this provides clear, actionable usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
1 tool update
v1.1.0- First observed
render_molecule
TDQS
Only one tool exists, so there is no possibility of confusion or overlap. The tool's purpose is clearly defined for rendering molecules.
The tool name follows a clear verb_noun pattern ('render_molecule'), which is consistent even with a single tool.
A single tool is borderline; it serves a narrow visualization purpose but the server name 'ChemCP' suggests a broader chemistry scope, making the toolset feel thin.
The tool covers the core visualization use case well, including property display, but lacks additional chemistry operations (e.g., SMILES parsing, 3D rendering, or property-only queries) that would make it a more complete chemistry toolkit.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Link compounds to protein targets, rank bioactivity, and look up drug mechanisms and indications.
Renders interactive Chart.js charts and dashboards inline in AI conversations.
Search PubChem compounds, properties, safety data, bioactivity, and cross-references.
Renders interactive Chart.js charts and dashboards inline in AI conversations. Supports bar, line, area, pie, doughnut, scatter, and radar charts with multi-chart dashboard grids.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables molecular visualization and analysis from SMILES strings using multiple rendering approaches (RDKit, NetworkX, Plotly, matplotlib), providing detailed molecular properties, validation, and batch processing capabilities for chemical structures.-
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to search and retrieve chemical compound information, structures, and physical properties from the PubChem database. It supports querying via compound names, SMILES notation, or CIDs to provide detailed molecular data for chemical analysis.5-
- AlicenseNot gradedqualityBmaintenanceEnables natural language interaction with computational chemistry tools including molecule building, electronic structure calculations, geometry optimization, vibrational spectroscopy, and molecular dynamics, powered by RDKit, PySCF, and ASE.MIT
- AlicenseNot gradedqualityAmaintenanceEnables generation of chemical structures, reactions, spectra, titration curves, 3D models, and more from natural language or SMILES, using RDKit for offline rendering and supporting formats like PNG, SVG, CDXML, and Anki decks.11Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/scottmreed/ChemCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server