Skip to main content
Glama

MolTalk — chemistry tools for AI assistants

Draw, verify and explore molecular structures with ChatGPT, Claude and other MCP clients.

MolTalk is an MCP server that gives AI assistants real chemistry tools. They can resolve compound names, validate structures, draw them inline, rotate them in 3D, analyse stereochemistry and export files for ChemDraw and other software.

MolTalk does not trust structures invented by the model. Every structure is resolved and checked with RDKit, OPSIN and a curated library of 22,000 compounds, and MolTalk fails closed: when a name is ambiguous, or stereochemistry cannot be verified, it says so instead of drawing a guess.

Python 3.11+ MCP RDKit License: MIT

See it in action

Every drawing can be grabbed and rotated in 3D, right in the chat. These animations were recorded from MolTalk's own viewer (how).

Related MCP server: LocalPilot

What MolTalk can do

  • Resolve names. Trivial names ("caffeine", "Wilkinson's catalyst") come from a bundled library of 22,038 compounds with about 200,000 names; systematic IUPAC names are read by OPSIN; PubChem is an optional fallback.

  • Draw clean structures. 2D depictions with wedges and stereo labels, clean even for crowded molecules such as BINAP, Xantphos and porphyrins, shown inline in the chat.

  • Rotate in 3D. Grab the drawing and it lifts into a 3D model that keeps the drawing's style, with lone pairs, charges and stereo labels attached to the geometry.

  • Analyse stereochemistry. R/S and E/Z, atropisomers, allenes, spiro compounds and helicenes, with every descriptor checked against IUPAC's definitions, and specified, unspecified and arbitrary configurations kept apart.

  • Enumerate stereoisomers, including meso forms and enantiomer pairs.

  • Show electrons. Lewis-structure lone pairs, radicals and formal charges, in 2D and 3D.

  • Handle metal complexes. Common catalysts and coordination compounds are assembled from database records and built in their proper geometry: square planar, tetrahedral, octahedral, sandwich.

  • Export. ChemDraw (CDXML), MOL, SDF, PDB, XYZ and SMILES files, and SVG/PNG images of exactly what is on screen.

  • Search substructures with SMARTS, chirality-aware.

Why MolTalk?

Language models can write SMILES, but they misremember structures, drop stereocentres and invent plausible-looking molecules. MolTalk changes what the assistant is allowed to claim:

  • Structures come from data, not memory. Names are resolved by the library, OPSIN or PubChem, never generated.

  • Validation is explicit. Every result reports where the structure came from (library, OPSIN, PubChem; with the PubChem CID) and its stereochemistry status: fully specified, partially specified or unspecified.

  • It fails closed. Unknown names, ambiguous names ("lye": NaOH or KOH), names that do not say which stereoisomer ("glucose"), and stereodescriptors that the structure found cannot support ("(R)-BINAP" when the record has no axial stereo) are all refused, with the reason.

  • Labels are checked. If the assistant draws a SMILES under a compound name, MolTalk checks the name against its library and flags a mismatch.

  • Descriptors are verified, not just computed. Axial, allene and helical descriptors are measured independently on 3D coordinates and must agree with RDKit before they are shown.

Use MolTalk

The public server is

https://moltalk-411294000488.us-central1.run.app/mcp

It is free to use and needs no account or API key. Request logs record which tool was called, never the molecule (privacy policy, terms, support).

ChatGPT. With developer mode on, create an app (connector) for the URL above with No authentication, or upload the plugin package in plugin/. Enable it in a chat and ask, for example, "Using MolTalk, draw aspirin."

Claude. Settings → Connectors → Add custom connector, with the URL above. Then ask Claude to draw a molecule.

Other MCP clients. Connect to the URL with the streamable-HTTP transport, or run MolTalk locally over stdio (see Run it yourself). Clients without UI support receive the full data and can request the SVG.

Examples

Draw caffeine and identify its functional groups.
Draw (2R)-2-chloro-4-methylhexane and verify the stereochemistry.
Show the stereoisomers of BINAP.
Draw nitromethane with lone pairs.
Draw ferrocene.
Draw Wilkinson's catalyst and explain its geometry.
Draw cubane and replace four hydrogens with F, Cl, Br and I.
Export this molecule as a ChemDraw file.

More, with what to expect: examples/.

Chemistry support

Capability

Support

Name → structure

Bundled library (22,038 compounds), OPSIN for systematic names, optional PubChem fallback

Structure → IUPAC name and locants

For compounds in the library or PubChem, checked with OPSIN

2D depiction

Yes, quality-checked; cages and helicenes drawn as views of their 3D shape

Interactive 3D

Yes: one force-field conformer aligned to the drawing

R/S and E/Z

Yes

Atropisomers (biaryl and C–N axes)

Yes, with verified Ra/Sa

Allenes and cumulenes

Yes, M/P (= Ra/Sa)

Spiro stereochemistry

Yes (descriptor withheld for Xabab spiro atoms)

Helicenes

Yes, P/M

Stereoisomer enumeration

Yes, with meso detection and enantiomer pairs

Lone pairs and formal charges

Yes, 2D and 3D

Radicals, carbenes, ylides

Supported; carbene spin state assumed by a stated rule

Coordination complexes

Common mononuclear complexes in standard geometries; porphyrins and corrins

Structure export

CDXML, MOL, SDF, PDB, XYZ, SMILES (CXSMILES where needed)

Image export

SVG, PNG

Details: docs/CHEMISTRY.md.

Export

Ask for a file ("give me a ChemDraw file of that") and the viewer offers a download:

  • CDXML opens directly in ChemDraw.

  • MOL and SDF come in 2D (the drawing's layout) or 3D.

  • PDB and XYZ come in 3D.

  • SMILES is plain SMILES, or CXSMILES when coordinates are needed to state the stereochemistry.

When a format cannot carry some stereochemistry, the export says so instead of silently dropping it. The viewer's SVG and PNG buttons save exactly what is on screen, cropped, with a transparent background.

Known limitations

  • 3D models are single calculated conformers for visualisation, not energy minima or measured structures.

  • Trivial names outside the library need PubChem, which may be slow or busy from cloud servers.

  • Hindered axes are detected by an ortho-substitution rule of thumb, not a rotation-barrier calculation.

  • Multi-metal complexes, bridging ligands and η⁶-arene complexes are shown as stored. Geometry exceptions decided by ligand-field strength (NiCl₂(PPh₃)₂ is really tetrahedral) are not predicted.

  • InChIKeys do not distinguish atropisomers.

  • Up to 256 atoms per molecule.

The full list: docs/LIMITATIONS.md.

Run it yourself

git clone https://github.com/DomFico/moltalk.git && cd moltalk
python3 -m venv .venv && .venv/bin/pip install -e '.[dev]'
scripts/fetch-tools.sh                                  # OPSIN (needs Java 11+)
.venv/bin/moltalk                                        # stdio MCP server
.venv/bin/moltalk --transport streamable-http            # or http://127.0.0.1:8000/mcp

Or with Docker: docker build -t moltalk . && docker run --rm -p 127.0.0.1:8000:8000 -e PORT=8000 moltalk.

Deploying your own public instance on Cloud Run: docs/DEPLOYMENT.md. Development notes: docs/DEVELOPMENT.md.

Architecture

ChatGPT / Claude / MCP client
      │  MCP over HTTPS
      ▼
Cloud Run: MolTalk server (FastMCP)
      │  worker processes with time and memory limits
      ├─ names:    bundled library → OPSIN → PubChem
      ├─ RDKit:    validation, analysis, stereochemistry, 2D layout, 3D models
      └─ export:   CDXML, MOL, SDF, PDB, XYZ, SMILES
      ▼
Viewer (MCP Apps UI in the chat): drawing, 3D rotation, lone pairs, image export

More: docs/ARCHITECTURE.md · docs/MCP_AND_UI.md.

Testing

The test suite, 350+ tests, covers name resolution and validation, stereochemistry (against IUPAC reference examples), 2D layout quality, 3D geometry, metal complexes, exports, MCP behaviour and the viewer in a real browser.

.venv/bin/pip install -e '.[dev,ui-test]' && .venv/bin/pytest -q

See docs/TESTING.md.

Data sources

  • RDKit for all cheminformatics.

  • OPSIN for reading systematic names.

  • PubChem and Wikidata for the bundled library, which is built from compounds that have a Wikipedia article, checked with RDKit and OPSIN.

See docs/DATA_SOURCES.md.

License

MolTalk is open source under the MIT License. It builds on RDKit (BSD 3-Clause) and the MCP Python SDK (MIT); OPSIN (MIT) is downloaded at setup, not included. Chemical data comes from PubChem (see NCBI's policies) and Wikidata (CC0).

Available Tools

8 tools
analyze_moleculeAnalyze MoleculeA
Read-onlyIdempotent

Validate SMILES; return identifiers, properties, CIP R/S, bond stereo, stereo_summary and SMARTS motifs. Indices are zero-based in the input molecule. Does not draw.

Inputs: smiles (required). Returns: object

conformer_3d3D Conformer (viewer)A
Read-onlyIdempotent

Viewer-only: one calculated 3D conformer aligned to the flat drawing, used to rotate the drawing in 3D.

Inputs: smiles (required), hydrogens. Returns: object

draw_moleculeDraw MoleculeA
Read-onlyIdempotent

Render a molecule from SMILES in the interactive MolTalk viewer, shown inline to the user (the drawing can be rotated in 3D). A successful result (rendered: true) is already on screen; its structuredContent holds the molecular analysis, stereochemistry and depicted_stereo_bonds (this drawing's wedges and dashes, each with an explanation). draw_named_molecule resolves a compound name and draws it in one call. label: display caption, such as the compound name; it is checked against MolTalk's library (label_check). numbering: "none" (default; the viewer can switch numbers on), "iupac" (locants from the verified IUPAC name when unambiguous, otherwise atom indices) or "indices". hydrogens=true displays every hydrogen. include_svg=true also returns the SVG, for clients without the viewer. IUPAC naming may query PubChem when the exact structure is not in MolTalk's bundled library.

Inputs: smiles (required), label, width, height, +4 more.

draw_named_moleculeDraw Named MoleculeA
Read-onlyIdempotent

Resolve a molecule name and render the resulting structure inline, in one call (for requests such as "draw cubane" or "show me FAD"). Resolution is the same as resolve_name: MolTalk's bundled library, then OPSIN for systematic names, with an optional PubChem lookup when allow_network=true. Ambiguous or unknown names, and names that do not say which stereoisomer, return an error without drawing a structure. A successful result (rendered: true) is already on screen. numbering and hydrogens are as in draw_molecule.

Inputs: name (required), hydrogens, numbering, allow_network.

enumerate_stereoisomersEnumerate StereoisomersA
Read-onlyIdempotent

Enumerate unspecified stereochemistry (specified elements are preserved): R/S, E/Z, the twist of hindered biaryl and C–N axes, and the configuration of allenes, helicenes and Xabab spiro atoms. Shows the isomers inline as a grid. Each isomer has CIP labels (input atom indices), stereo_units with verified descriptors, an achiral/meso flag and its enantiomer's index. Isomers that plain SMILES cannot state are given as CXSMILES (with coordinates), which draw_molecule accepts unchanged.

Inputs: smiles (required), limit.

export_structureExport StructureA
Read-onlyIdempotent

Write the structure as a file the user can download: format "cdxml" (ChemDraw, default), "mol", "sdf", "pdb", "xyz" or "smiles". coordinates: "2d" (the drawing's layout; default for cdxml/mol/sdf) or "3d" (one calculated conformer with explicit hydrogens; required for pdb/xyz). name: compound name for the file name and title. hydrogens=true adds explicit hydrogens to a 2D file. The file holds the structure as given (charges, stereo, atom order), not drawing-only additions. Shown inline with a Download button.

Inputs: smiles (required), name, format, hydrogens, +1 more.

find_substructureFind SubstructureB
Read-onlyIdempotent

Find chirality-aware SMARTS matches; at most 100 matches.

Inputs: smarts (required), smiles (required). Returns: object

resolve_nameResolve Molecule NameA
Read-onlyIdempotent

Resolve a compound name to a structure. Tried in order: (1) MolTalk's bundled library of thousands of common compounds (trivial names, synonyms, IUPAC names; offline); (2) OPSIN, which reads systematic IUPAC names offline, including stereodescriptors; (3) PubChem, only when allow_network=true (best effort; the name is sent to PubChem). A name shared by different structures is reported as ambiguous, not guessed. A name that states stereochemistry (R/S, E/Z, axial) must resolve to a structure that encodes it, or it is rejected as unverified. The result reports the structure's source, identity and stereo_summary.

Inputs: name (required), allow_network. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 8 tools

    Disambiguation4/5

    Most tools have clearly distinct purposes: resolving names, analyzing SMILES, drawing, exporting, substructure search, and stereoisomer enumeration. The main overlap is that draw_molecule also returns molecular analysis, making it potentially confusable with analyze_molecule; draw_named_molecule is also a convenience combination of resolve_name plus draw_molecule.

    Naming Consistency4/5

    All names use snake_case and most follow a verb_object pattern such as find_substructure, analyze_molecule, draw_molecule, export_structure, and resolve_name. conformer_3d is a minor deviation because it is noun-based rather than verb-led.

    Tool Count5/5

    Eight tools is well within the appropriate range and each covers a distinct part of the molecular drawing/analysis workflow. The set is scoped rather than bloated, with no redundant bulk.

    Completeness4/5

    The surface covers name resolution, SMILES validation/analysis, drawing, 3D conformer handling, export, substructure search, and stereoisomer enumeration, which is strong lifecycle coverage. Minor gaps remain around importing structures from files or editing/modifying an existing molecule.

    Maintenance

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      Turns ChatGPT web into a local coding agent, enabling file edits, shell commands, Git operations, patches, and process management through 40+ MCP tools.
      MIT
    • F
      license
      Not graded
      quality
      C
      maintenance
      Enables ordinary ChatGPT web Chat to work directly on a local machine over a private MCP tunnel — reading and editing project files, running shell commands and tests, loading local skills, manipulating images, and driving Chrome — without spinning up a separate coding agent or additional model-generation API calls. It also supports multi-step task plans with persisted execution receipts and acceptance checks so results from real runs are returned to the conversation.
      -
    • F
      license
      Not graded
      quality
      A
      maintenance
      Enables ChatGPT to use reviewed local Codex-backed tools for project files, Git, bounded terminal commands, Chrome/Edge browsing, and live Excel/document control from normal Chat. It calls the Codex model explicitly only when a task actually needs it.
      -
    • F
      license
      Not graded
      quality
      A
      maintenance
      Enables ChatGPT to use the local Codex toolbox on your machine — inspecting projects, editing files, running bounded commands, automating Chrome or Edge, and controlling an already-connected Excel workbook — from within a normal chat, calling the Codex model only when a task actually needs it.
      -