ChemCP

io.github.scottmreedPublished by GitHub account scottmreedv1.1.0Updated Oct 24, 2026

MCP App that renders 2D molecular structures from SMILES using RDKit.js

VerifiedSTDIODesktop onlyMedia & DesignAI & ML

Overview

AI-generated overview

A local MCP app that renders interactive 2D molecular structures from SMILES strings and shows computed molecular properties inside the chat.

What you can do
Render a molecule: turn a SMILES string into a 2D structure diagram in an interactive viewer inside the conversation, with example molecules and a field to type your own SMILES. Show computed properties: molecular weight, LogP, H-bond donors and acceptors, TPSA, rotatable bonds and rings, calculated in the browser with RDKit.js. Compare molecules by rendering several structures side by side. In hosts without MCP Apps support, the tool returns the SMILES data as text without the visual rendering.
When to use it
Useful when you want to see or explain chemical structures while chatting, for example showing aspirin, caffeine or benzene, comparing molecules, or checking basic descriptors without a separate cheminformatics tool.
Requirements
Node.js 18 or higher and a local install of the npm package, configured as a stdio server in the client. The interactive viewer needs a host that supports MCP Apps, such as Claude Desktop; the web connector route is experimental and needs a paid Claude plan plus a public tunnel. RDKit.js loads from a CDN, so internet access is needed on first load.
Before you install
The web setup exposes your local server through a public tunnel, so anyone with the URL can reach it while it runs. RDKit.js is fetched from a third-party CDN at load time, which may be blocked by network or CSP rules. Rendering is client-side in a sandboxed iframe; no credentials or accounts are requested.

Installation

In SourceWeft

  1. Open ChemCP in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

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

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

bash
npm install -g chemcp

Verify it installed:

bash
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:

OSPath
macOS~/Library/Application Support/Claude/claude_desktop_config.json
Windows%APPDATA%\Claude\claude_desktop_config.json

Add ChemCP to the mcpServers section:

json
{  "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

bash
npm install -g chemcp

Start in HTTP mode:

bash
chemcp --http

This 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:

bash
npx cloudflared tunnel --url http://localhost:3001

Copy the generated URL (e.g., https://random-name.trycloudflare.com).

Step 3: Add as a custom connector in Claude.ai

  1. Go to claude.ai
  2. Click your profile picture (bottom-left)
  3. Go to Settings > Connectors
  4. Click Add custom connector
  5. Paste your tunnel URL + /mcp (e.g., https://random-name.trycloudflare.com/mcp)
  6. Give it a name like "ChemCP"
  7. 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:

PromptWhat 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

MoleculeSMILES
EthanolCCO
Benzenec1ccccc1
AspirinCC(=O)Oc1ccccc1C(=O)O
CaffeineCN1C=NC2=C1C(=O)N(C(=O)N2C)C
TestosteroneCC12CCC3C(C1CCC2O)CCC4=CC(=O)CCC34C
GlucoseOC[C@H]1OC(O)[C@H](O)[C@@H](O)[C@@H]1O

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 chemcp works 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:

bash
node --version

For developers

Local development

bash
git clone https://github.com/scottmreed/ChemCP.gitcd ChemCPnpm installnpm run buildnpm run serve:http    # HTTP mode for testing

Project structure

FilePurpose
server.tsMCP server — registers render_molecule tool and serves the UI resource
src/mcp-app.htmlHTML entry point, loads RDKit.js from CDN
src/mcp-app.tsxReact UI — initializes RDKit WASM, renders SVG from SMILES, computes descriptors
bin/chemcp.jsnpm bin entry point
dist/Built output (compiled server + bundled single-file HTML)

How it works

  1. Claude calls the render_molecule tool with a SMILES string
  2. The server returns the SMILES to the MCP App UI
  3. The UI loads RDKit.js (WebAssembly) in the browser
  4. RDKit parses the SMILES and renders a 2D SVG structure diagram
  5. Molecular descriptors (MW, LogP, TPSA, etc.) are computed client-side
  6. 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:

bash
# Terminal 1 — run ChemCP in HTTP modenpm run serve:http
# Terminal 2 — run the test hostgit clone https://github.com/modelcontextprotocol/ext-apps.gitcd ext-apps/examples/basic-hostnpm installSERVERS='["http://localhost:3001/mcp"]' npm start# Open http://localhost:8080

Links

Source: README.md at commit fb1c28e

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v1.1.0LatestSep 16, 2026

Score

40% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.