chematic for AI agents

chematic-mcp exposes 20 chemistry tools to AI agents over the Model Context Protocol — parsing and canonicalizing structures, computing physicochemical properties, checking drug-likeness rules, generating fingerprints and similarity scores, matching SMARTS patterns, generating 3D coordinates, and sketching retrosynthetic disconnections. Each tool takes structured JSON in and returns structured JSON out, so an agent doesn't have to parse chemistry out of prose.

What it is — and isn't

This is a local process, not a hosted service. It speaks stdio only: there is no remote HTTP endpoint, no authentication, and no public SLA. If you need chemistry tools available to an agent, you run the process yourself, on your own machine.

name_to_smiles is the only tool of the 20 that makes a network call (PubChem, name → SMILES lookup). The other 19 are pure local computation.

Not supported today:

  • Remote HTTP / Streamable HTTP
  • Authentication / OAuth
  • Tasks extension
  • MCP Apps
  • Resources, Prompts, Sampling, Roots, Logging, Subscriptions

Install

Not published to crates.io — run it from a repository checkout. Clone the repository, then run it from a workspace checkout — there is no cargo install chematic-mcp shortcut yet.

git clone https://github.com/kent-tokyo/chematic
cd chematic
cargo run -p chematic-mcp --release

Add it to an MCP client

For Claude Desktop or Claude Code, point the client at the same command:

{
  "mcpServers": {
    "chematic": {
      "command": "cargo",
      "args": ["run", "-p", "chematic-mcp", "--release", "--quiet"]
    }
  }
}

Available tools (20)

name_to_smilesparse_smiles
canonical_smilescalc_properties
lipinski_checksa_score
pains_checkbrenk_check
admet_profileboiled_egg
ecfp4tanimoto
smarts_matchfind_mcs
generate_3dretrosynthesis
smiles_to_moljsonmoljson_to_smiles
representation_routermolecule_context_pack

Caching

The tool registry is static for the lifetime of one running process — tools/listresults carry a 24-hour cache hint. If the registry ever changes, it changes as part of a newchematic-mcp release; restarting the server always returns the current registry regardless of a client's cached TTL.

See the full protocol details, including the dual legacy/modern dialect support, in thecrate README.