Chemdraw Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Chemdraw Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<!-- mcp-name: io.github.jurimaxam-dotcom/chemdraw-mcp -->
Chat → chemical structure. An MCP server for Claude Desktop that turns molecule names or SMILES into publication-style 2D structure drawings — "draw aspirin" produces a print-ready PNG/SVG, rendered fully offline with RDKit. No ChemDraw required; ChemDraw CDXML is available as an optional extra format for users who want to keep editing there.
Built for pharmacy/chemistry students who spend too much time clicking hexagons: structures, full reaction schemes, step-by-step mechanisms, substance data sheets and Ph.Eur. assay calculations — straight from the chat, with an interactive preview panel rendered inline.
<p align="center"><img src="https://raw.githubusercontent.com/jurimaxam-dotcom/chemdraw-mcp/main/assets/demo.gif" alt="Live demo: 'Draw Caffein' renders an interactive structure panel in Claude Desktop" width="560"></p>
"Draw caffeine" — print-ready PNG, generated by generate_molecule:
<p align="center"><img src="https://raw.githubusercontent.com/jurimaxam-dotcom/chemdraw-mcp/main/assets/caffeine.png" alt="Caffeine structure, rendered by generate_molecule" width="420"></p>
"Show the Fischer esterification of ethanol with acetic acid" — generate_reaction renders the scheme with conditions above the arrow, live in the chat panel:
<p align="center"><img src="https://raw.githubusercontent.com/jurimaxam-dotcom/chemdraw-mcp/main/assets/reaction-demo.gif" alt="Reaction scheme with conditions appearing live in the chat panel" width="640"></p>
"Show the Fischer esterification mechanism step by step" — generate_mechanism renders curved electron-flow arrows in the interactive panel:
<p align="center"><img src="https://raw.githubusercontent.com/jurimaxam-dotcom/chemdraw-mcp/main/assets/mechanism-demo.gif" alt="Step-by-step Fischer esterification mechanism with curved arrows in the chat panel" width="560"></p>
"Sketch the IR spectrum of ethyl acetate" — generate_spectrum (draws the peaks it is given, with per-type axis conventions):
<p align="center"><img src="https://raw.githubusercontent.com/jurimaxam-dotcom/chemdraw-mcp/main/assets/ethyl-acetate-ir.png" alt="Schematic IR spectrum of ethyl acetate with labeled bands" width="560"></p>
"Show caffeine in 3D" — generate_3d embeds the molecule (ETKDG + force field) and opens a drag-to-rotate ball-and-stick viewer in the chat panel:
<p align="center"><img src="https://raw.githubusercontent.com/jurimaxam-dotcom/chemdraw-mcp/main/assets/3d-demo.gif" alt="Rotating 3D ball-and-stick caffeine model inside the concave viewer" width="560"></p>
"What distinguishes ibuprofen from naproxen and ketoprofen?" — compare_molecules keeps the shared scaffold (MCS) neutral and highlights everything that differs:
<p align="center"><img src="https://raw.githubusercontent.com/jurimaxam-dotcom/chemdraw-mcp/main/assets/compare-profens.png" alt="Ibuprofen, naproxen and ketoprofen side by side with differences highlighted" width="680"></p>
"Titration curve of phosphoric acid with NaOH, phenolphthalein as indicator" — generate_titration_curve computes pH from the exact charge balance, with equivalence points, buffer points (pH = pKa) and the indicator band; its sibling generate_species_distribution shows which protonation species dominates at every pH:
<p align="center"> <img src="https://raw.githubusercontent.com/jurimaxam-dotcom/chemdraw-mcp/main/assets/titration-phosphoric.png" alt="Titration curve of phosphoric acid with three equivalence points and phenolphthalein band" width="420"> <img src="https://raw.githubusercontent.com/jurimaxam-dotcom/chemdraw-mcp/main/assets/species-phosphoric.png" alt="Species distribution of phosphoric acid over pH with pKa crossovers" width="420"> </p>
"Create an Anki deck with important molecules and open it in Anki" — export_anki_deck / export_curated_deck build a ready-to-import .apkg with rendered structures embedded; with the optional AnkiConnect add-on the cards land straight in the running Anki, no clicks:
<p align="center"><img src="https://raw.githubusercontent.com/jurimaxam-dotcom/chemdraw-mcp/main/assets/anki-demo.gif" alt="Split screen: asking Claude for an Anki deck, cards appear in Anki via AnkiConnect" width="760"></p>
(optionally CDXML), with properties, functional-group detection and a Lipinski rule-of-five check
esterification) step by step
Raman, UV/Vis, fluorescence, ORD, CD, ¹H/¹³C NMR, MS) with per-type axis conventions — draws given peaks, does not predict spectra
Anki .apkg: structure↔name drills (optionally reversed: one note, both directions), cloze/fill-in-the-blank cards, identity/detection reactions, spectrum band assignment — with rendered images embedded, per-card tags, Parent::Child subdecks; re-exporting a deck updates cards instead of duplicating them. Optional delivery straight into the running Anki via the AnkiConnect add-on
(classic analgesics, Ph.Eur. identity reactions)
charge balance, with equivalence points, buffer points (pH = pKa) and indicator transition band
over pH (Henderson-Hasselbalch) with pKa crossovers marked
highlighted, shared scaffold (MCS) neutral
panel (ETKDG + force field) plus SDF export; stereo descriptors (R/S, E/Z) available on 2D drawings via annotate_stereo
(properties, GHS safety, pathways)
calculation steps, t-test/F-test statistics
groups, export PNG with one click
in ChemDraw via open_chemdraw_file
Option 1 — straight from PyPI (needs uv): add this to your Claude Desktop config (claude_desktop_config.json → mcpServers):
"chemdraw": {
"command": "uvx",
"args": ["chemdraw-mcp"]
}Option 2 — one-command installer (clones the repo and registers the server in Claude Desktop automatically):
git clone https://github.com/jurimaxam-dotcom/chemdraw-mcp.git
cd chemdraw-mcp && ./install.shBoth are idempotent and leave existing MCP servers untouched. Restart Claude Desktop, then ask: "draw caffeine".
Optional: with a Java runtime installed (e.g. brew install openjdk), systematic IUPAC names — including ones no database indexes — are parsed offline via OPSIN. Without Java the server falls back to the PubChem/NCI online lookup.
name / SMILES
│
▼
resolver ──► OPSIN (systematic IUPAC names, offline) ──► PubChem / NCI (names) · direct parse (SMILES)
│
▼
RDKit 2D coordinates ──► validation (sanity, round-trip)
│
├──► image_export → PNG + SVG files (primary, offline)
├──► svg_renderer → interactive chat preview (MCP App resource)
└──► cdxml_writer → ChemDraw CDXML (optional, on request)uv sync # backend deps
cd chemdraw_tool/ui && npm install && npx playwright install chromium # frontend, once
./test.sh # the gate: pytest + JS unit + headless-Chromium e2e~400 tests, written test-first. The e2e test rasters a real RDKit SVG in headless Chromium and compares it against an exact pixel snapshot.
Apache-2.0 — see LICENSE. Copyright 2026 jurimaxam-dotcom.
Disclaimer: This is an unofficial, independent project, not affiliated with or endorsed by Revvity. ChemDraw is a trademark of Revvity Signals Software, Inc. This tool does not include or require ChemDraw; it can optionally export files in the open CDXML format.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.