chemdraw-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CHEMDRAW_APP | No | Absolute path to the ChemDraw .app when automatic discovery is ambiguous. | |
| CHEMDRAW_MCP_WORKSPACE | No | Directory to use for scratch/backup output instead of the default ~/ChemDraw-MCP-Output. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| chemdraw_plan_scope_jobA | Offline standard aromatic scope proposal, explicit candidate selection and category grouping plan. Job needs mapped parent_smiles, handle_atom_map and ordered groups {label,categories}. Building requires selected_candidate_ids or accept_all=true; planning never implicitly accepts. All yields null. |
| chemdraw_build_scope_jobA | Build an explicitly approved scope job in NEW native documents: selected candidates, conserved scaffold, true category rows, headings, optional frame/dividers, editable exports and audit. Single supported physical page; overflow fails without shrinking molecules. Source drawings unchanged; no inferred experimental outcomes. |
| chemdraw_build_reaction_seriesA | Build 1 through 3 explicitly supplied reaction rows on ONE editable ChemDraw page. Steps contain step_id, reactants/products and optional above/below conditions; participants specify compound_id,label,smiles and optional positive coefficient. Supported water/halides and bounded salts. No product inference or balance certificate; native chemistry and measured layout verified separately. |
| chemdraw_build_ownershipA | Snapshot a native document and build explicit sidecar ownership. Each owner {key,fragment_ids,caption_ids}; every fragment exactly once. Existing curves require curve_id and explicit source/target {kind,id}. Returns source-token-bound ownership; does not change manual dragging behavior. |
| chemdraw_move_ownedA | Move explicit owners {owner_key,delta:[dx,dy]} in a NEW native copy, carrying owned captions, symbols and internal curves. Cross-owner curves require equal translation of both owners. Returns remapped ownership sidecar. No automatic manual-drag attachment or collision-free layout claim. |
| chemdraw_suggest_routesA | Suggest bounded cubic electron-flow paths using measured obstacles. Source must be an explicit displayed CircleMinus/LonePair for two electrons, Electron dot for one electron, or donating bond. Atom-label sources are rejected; add a symbol first if needed. Target is an explicit atom or bond ID. No chemistry inference or automatic route selection. Returns snapshot-bound candidate recipes and clearance audit; native arrowhead ink still needs visual review. |
| chemdraw_apply_routeA | Validate and render one explicitly selected suggested route in a NEW native copy. Rejects stale snapshots or modified proposals; preserves source and saves selection audit. This selects a geometric path, not a chemical mechanism. |
| chemdraw_create_lab_styleC | Write a new portable versioned numerical style JSON with content hash. Settings sections grid/reaction/symbols; references are names/hashes/descriptions only. No fonts, proprietary artwork, code or local paths embedded. Does not publish or install anything. |
| chemdraw_inspect_lab_styleA | Read and validate a portable style package, exact supported settings, version and content hash. No native application or network access. |
| chemdraw_run_styled_jobA | Run a native workflow with a locked portable lab style. Conflicting recipe settings rejected, actual package/hash retained beside output. Grid/symbols recipes require input CDXML path. Native exports use ChemDraw; numerical conventions do not replace explicit chemical review. |
| chemdraw_decorate_scopeA | Decorate an existing flat scope in a NEW copy with an optional native rounded shadow frame and dotted group dividers. Explicit groups {label,fragment_ids,caption_ids} must own every source fragment and caption once and form nonoverlapping top-to-bottom bands. Labels can be empty; nonempty labels need measured free space. No automatic chemical classification or molecule reordering. Inspect current IDs/source token first. Native editable CDXML/SVG/PNG with source preservation and layout audit; human visual review still required. New absolute output directory only; uncertain native writes stop without retry. |
| chemdraw_inspect_symbolsB | Snapshot native atom/bond/symbol IDs and measured label bounds, returning a source_token. Supports existing associated circled charges and unassociated graphical electron/lone-pair symbols. A graphical electron dot is not a verified radical state. |
| chemdraw_add_symbolsA | Add native symbols to a NEW copy from explicit {key,kind:charge|lone_pair|electron,atom_id} requests. Charge derives sign from existing +1/-1 formal charge, not a chemical edit. Lone-pair/electron dots are graphical annotations, not radical-state edits. Bounded outward placement checks geometry against labels/bonds/objects; unsupported or colliding placement fails. Inspect current IDs/token first. New absolute output directory, before/after native exports and audit, source unchanged. Visual and chemical review required; no moving attachment or complete mechanism validation promise. |
| chemdraw_resolveA | Resolve an explicit name or CAS query using PubChem ONLY with allow_network=True. Sends the query to PubChem and returns up to 20 candidates, provenance, ambiguity/truncation and graph-validation results. No silent candidate selection, native drawing, retries, provider fallback or CAS Registry certification. Review and select an explicit valid candidate SMILES before drawing. Network denied by default. |
| chemdraw_scan_scopeA | Propose substitutions offline at explicit mapped H-bearing aromatic carbon sites. Supports isolated five/six-membered rings, including heteroaromatics and pre-substituted rings. Curated Me, OMe, CF3, CN, NO2, F, Cl, Br, iPr, tBu; one site at a time, capped at 100 requests before deduplication. Preserves supported parent graph/stereo, retains alternative provenance for duplicates, no invented yields or reaction prediction. Select explicit candidates and use draw_structures for native output. |
| chemdraw_build_reactionA | Create a native reaction with explicit 1..3 reactant and 1..3 product records {compound_id,label,smiles,coefficient?}, single-line above/below conditions and measured spacing. The expanded path supports water, hydroxide, halide/alkali ions, bounded charge-balanced salts and explicit positive coefficients. Connected-only input may use explicit shared-core alignment; expanded input with scaffold alignment is rejected. Actual ChemDraw cleanup and native identity/layout checks; no reaction prediction or balance certificate. New absolute output directory, editable CDXML/SVG/PNG and HTML review. Originals untouched, native uncertainty stops without retry/close. |
| chemdraw_import_styleA | Read a local .cds/.cdx/.cdxml document style without opening ChemDraw or modifying the source. Returns validated preset settings, hash, defaults used and unapplied properties. Pass its preset object to draw/polish/grid/apply_style. Only supported typography and bond settings, not template artwork, page geometry or colour palette. Custom fonts are checked on the rendering Mac before use. |
| chemdraw_identifyA | Inspect an explicit SMILES or canonical Standard InChI entirely offline with optional RDKit. Returns canonical isomeric SMILES, formula, charge, components, isotope/stereo summaries and InChI/Key when available. No ChemDraw call, names/CAS resolution, salt stripping or tautomer conversion. Standard InChI normalization and graph-roundtrip differences are explicit. |
| chemdraw_propose_scopeA | Propose a standard aromatic substrate scope offline, not experimental results. Parent requires a uniquely atom-mapped benzene carbon attached to the existing reaction handle on an isolated monosubstituted ring. Produces deduplicated parent, electronic, halogen, 2/3/4-Me and steric variants with stable graph IDs, SMILES, relative labels, rationale and blank yields. Preserves supported parent graph/stereo. No native drawing or reaction prediction. Review/select candidates, then call draw_structures with explicit compound_id/label/smiles. |
| chemdraw_draw_structuresA | Create a native ChemDraw figure from 1..24 explicit {compound_id,label,smiles} records. Labels are caller supplied, not verified names. Connected supported nonradical structures only. RDKit supplies MOL coordinate seeds; actual ChemDraw imports, runs native Clean Up Structure and renders. Optional scaffold_smiles explicitly selects a common core, rigidly aligned to the first native structure without reflection; poor fits fail, no inferred core. Checks identity after import/cleanup and measured grid after native save. New absolute output directory, editable/vector/PNG preview and audit. Final document stays open, originals untouched. No name lookup or yields. Review stereo and intramolecular collisions visually. Native uncertainty stops without retry/close. |
| chemdraw_inspect_annotationsA | Export a read-only snapshot and list atom/bond IDs, measured label boxes, supported native curves and source_token for electron-flow annotation. Supports existing circled charge graphics. Ownership in an annotation recipe is not a native moving attachment guarantee. |
| chemdraw_annotate_documentA | Add native full or fishhook electron-flow curves to a NEW copy. Inspect annotations first. Each arrow has unique key, electrons 2 or 1, source {kind:symbol,id} for a displayed CircleMinus/LonePair (2 electrons) or Electron dot (1 electron), OR source {kind:bond,id,offset:[dx,dy]} for a donating bond. Atom-label sources and positive-charge donors are rejected; add a symbol first if needed. Target {kind:atom|bond,id,offset:[dx,dy]}; controls:[[dx1,dy1],[dx2,dy2]] relative to start/end; optional fishhook_side left/right only for one electron. Symbol targets rejected. A negative charge may represent a donating lone pair, but this is caller-supplied chemical intent, not inferred for every anion. Existing molecules/symbols retained; no chemical/radical-state edits. New absolute output directory, native CDXML/SVG/PNG before/after, recipe and audit. Source untouched. Visual review required; no whole-path collision or native moving attachment promise. Native errors not retried. |
| chemdraw_batch_exportA | Sequential native batch export of explicit supported CDXML files. Each item: {key: safe-unique-figure-key, source: absolute-file-path, formats: [pdf,cdx]}. Always exports CDXML/SVG/PNG plus requested PDF/CDX, with per-item audit and HTML contact sheet. New absolute output directory only. No style/layout/chemistry edits. Creates private copies and closes only those copies. Input failures reported per item. Any native-operation error is conservatively uncertain: stop later items, do not retry or close the uncertain document. Requires chemistry extra; flat supported drawings plus the annotation verifier's existing circled-charge/full-or-half cubic-curve subset. Unknown annotations rejected. Review all outputs; source metadata and mapped chemistry checks do not certify source correctness or glyph appearance. |
| chemdraw_list_documentsA | List running ChemDraw documents with unique IDs, names, paths and modified flags. |
| chemdraw_inspect_documentA | Inspect 1-based molecule indices/bounds and document settings. Refresh indices after edits. Native molecule IDs are broken in ChemDraw 23. Does not return atom-level chemistry. |
| chemdraw_import_fileA | Open a private working copy of a local CDXML, CDX, MOL or SDF. Never opens the original for editing. |
| chemdraw_create_documentB | Create an editable native document from CDXML. Caller supplies validated chemical structures; no name resolver or chemistry invention is performed. |
| chemdraw_cleanB | Run native Clean Up Structure on the specified molecule or whole document, after a recovery export. This changes depiction and can alter orientation. |
| chemdraw_apply_styleB | Create a styled copy with consistent explicit fonts/strokes. Does not normalize existing coordinates or reposition charges. Cleanup is a separate explicit action. |
| chemdraw_exportA | Export through actual ChemDraw, refusing overwrites. PNG rasterizes unchanged native SVG offline with resvg; pixels controls longest side. Output parent must exist. Unsupported SVG resources fail explicitly; no rasterizer fallback. |
| chemdraw_close_working_documentA | Back up and close a document opened by this server session. Refuses all other documents. |
| chemdraw_list_stylesA | List numeric style presets. These are defaults plus explicit text/bond overrides, not chemistry or automatic layout engines. |
| chemdraw_doctorA | Check the Mac installation, live connection and optional chemistry validator without editing documents. |
| chemdraw_analyze_documentB | Export a recovery snapshot and return molecule IDs, bounds, text, arrows and a top-level source_token for supported drawings. Use that token and explicit object IDs for scope grids. For supported single molecules, editing also includes atom/bond IDs and the same token for analogue edits. Source is not edited. |
| chemdraw_polish_documentA | Create a new normalized native drawing plus editable CDXML, SVG, PNG, before/after HTML, recipe and audit. Never edits the source. Requires chemistry extra. Flat one-page drawings only; queries/groups/abbreviations fail closed. Row layout requires explicit fragment-to-caption and arrow-to-condition ID maps from analyze; unassigned text is rejected. Preserves orientation, charges, isotopes and supported stereo. Does not run native cleanup automatically. Review previews before publication; checks establish preservation, not source correctness. |
| chemdraw_edit_documentA | Make an edited COPY of one molecule with native before/after exports and chemical diff. Analyze first: use editing atom/bond IDs and source_token. Atom op: {kind:atom,id,element:S,hydrogens:1}; element optional, H count required. Bond op: {kind:bond,id,order:2}. Captions must explicitly replace, retain or null-remove every page text ID. Supports neutral main-group atom/H changes and plain nonaromatic bond orders; no insertions/deletions, charged/isotopic target edits, radicals, stereocentre edits or new alkene stereo. Coordinates preserved, no cleanup. Existing source untouched; final mapped chemistry, labels and coordinates verified after ChemDraw export. Visual review required. |
| chemdraw_grid_documentB | Create a native scope grid COPY. Analyze first for source_token and IDs. Cells in requested order: {compound_id:3a,fragment_ids:[ID],caption_id:ID|null,yield_percent:82|null}. Every fragment and existing page caption needs one owner. 0% remains visible; missing yield omitted. Multi-fragment compounds translate together after normalization. Native measured molecular+caption bounds determine uniform cells. Columns auto-fit if omitted; overflow fails, never shrinks individual molecules. Requires chemistry extra. No reactions/page graphics/nested groups/native symbol graphics. Preserves orientation and chemistry, adds caller-supplied compound IDs/yields, verifies native saved page fit and alignment. Yields are not experimentally validated. Visual review required. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 37 tools
Multiple tools have overlapping boundaries: plan_scope_job, propose_scope, and scan_scope all generate scope proposals, while inspect_document, analyze_document, inspect_symbols, and inspect_annotations all provide overlapping inspection snapshots. build_reaction and build_reaction_series also risk confusion despite detailed descriptions.
All tools share the chemdraw_ prefix and mostly follow a verb_noun pattern such as list_documents, create_document, and grid_document. A few exceptions like doctor, resolve, identify, and clean break the pattern, but the overall convention is still readable and predictable.
With 37 tools, this server is well beyond the 25+ threshold for a heavy tool surface. The broad functionality is real, but the set would benefit from consolidation or separation of scope, inspection, styling, and annotation clusters into more focused servers.
The server covers a wide range of workflows: document lifecycle, structure drawing, reactions, scopes, styles, annotations, and export. However, there are notable gaps such as no document deletion/discard, no molecule insertion/deletion, and limited editing of charged, isotopic, radical, or stereochemical structures.