DECIMER MCP Server

io.github.DocMinusPublished by GitHub account DocMinusv0.1.4Updated Oct 24, 2026

MCP server for DECIMER image-to-SMILES chemical structure recognition

VerifiedSTDIODesktop onlyMedia & DesignAI & ML

Overview

AI-generated overview

Lets an assistant convert images of chemical structures into SMILES strings through a DECIMER recognition API.

What you can do
This local MCP server exposes DECIMER image-to-SMILES chemical structure recognition as tool calls. It provides server_health, which checks whether the DECIMER FastAPI server is reachable, and analyze_chemical_image, which sends a base64-encoded image to the image2smiles endpoint and returns structured output including the SMILES string, API status, and classifier score and decision. It is a thin adapter and does not run DECIMER models itself.
When to use it
Use it when an assistant needs to read chemical structure diagrams from images and obtain machine-readable SMILES, for example in chemistry or cheminformatics workflows. It is only useful if you already run or can run the separate DECIMER API server it calls.
Requirements
Python 3.10+ and a running DECIMER API server, by default at The package is installed and run with uv/uvx over stdio. Optional environment variables: DECIMER_API_BASE_URL, DECIMER_API_TIMEOUT_SECONDS, DECIMER_MAX_IMAGE_BYTES, DECIMER_MCP_LOG_LEVEL. No authentication is declared.
Before you install
Images submitted for analysis are sent to the configured DECIMER API endpoint, which may be remote, so avoid sending confidential structures to an untrusted server. The adapter itself does not write, send, or delete data beyond that API call. Verify the endpoint and timeout settings before use.

Installation

In SourceWeft

  1. Open DECIMER MCP Server 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

DecimerMCPServer

mcp-name: io.github.DocMinus/decimer-mcp-server

MCP server that exposes DECIMER image-to-SMILES functionality as tool calls.

This project is a thin adapter over the existing FastAPI service in DecimerServerAPI. It does not run DECIMER models directly. The adapter sends JSON requests by default, with automatic fallback to form payloads for compatibility.

Tools

  • server_health: Checks whether the DECIMER FastAPI server is reachable.
  • analyze_chemical_image: Sends a base64-encoded image to /image2smiles/ and returns structured output.

Requirements

  • Python 3.10+
  • Running DECIMER API server (default: http://localhost:8099)

find it at either of these two versions:

Install

bash
cd /Users/a/dev/DecimerMCPServeruv venvuv sync

Configuration

Copy .env.example values into your environment:

  • DECIMER_API_BASE_URL (default http://localhost:8099)
  • DECIMER_API_TIMEOUT_SECONDS (default 60)
  • DECIMER_MAX_IMAGE_BYTES (default 10000000)
  • DECIMER_MCP_LOG_LEVEL (default INFO)

Run (stdio transport)

bash
uv run decimer-mcp-server

or

bash
uv run python -m decimer_mcp_server

Example MCP client config

json
{  "mcpServers": {    "decimer": {      "command": "uv",      "args": ["run", "python", "-m", "decimer_mcp_server"],      "env": {        "DECIMER_API_BASE_URL": "http://localhost:8099"      }    }  }}

Output shape

analyze_chemical_image returns:

json
{  "ok": true,  "smiles": "CCO",  "reason": null,  "api_status_code": 200,  "api_message": null,  "classifier_score": 0.0000012,  "classifier_threshold": 0.3,  "classifier_decision": "structure_like"}

When no SMILES is returned by API classifier behavior:

json
{  "ok": true,  "smiles": null,  "reason": "not_chemical_structure",  "api_status_code": 200,  "api_message": "No SMILES returned by API",  "classifier_score": 0.99999,  "classifier_threshold": 0.3,  "classifier_decision": "not_structure_like"}

Development tests

bash
uv sync --extra devuv run pytest

Make targets:

bash
make syncmake test

Smoke test helper

Run one health check + one inference call against your DECIMER API:

bash
cd /Users/a/dev/DecimerMCPServerDECIMER_API_BASE_URL=http://chitchat:8099 uv run decimer-mcp-smoke-test --image /Users/a/dev/DecimerServerAPI/example_usage/structure.png

If you keep settings in .env, load it with:

bash
uv run --env-file .env decimer-mcp-smoke-test --image /Users/a/dev/DecimerServerAPI/example_usage/structure.png

or use make:

bash
make smoke

Override the image path if needed:

bash
make smoke SMOKE_IMAGE=/absolute/path/to/image.png
## MCP Registry publishing
Tags matching `v*` trigger `.github/workflows/publish-mcp.yml`.
Workflow steps:- installs `mcp-publisher`- validates `server.json`- calls registry publish using secret `MCP_REGISTRY_TOKEN`- publishes slug `io.github.DocMinus/decimer-mcp-server` (case sensitive; must match registry grant)
Before tagging:1. Update `pyproject.toml` + `server.json` versions2. Ensure `server.json` stays valid (`uv pip install jsonschema && python validate snippet from AGENTS.md`)3. Add GitHub repo secret `MCP_REGISTRY_TOKEN` (GitHub PAT with `repo`, `workflow` scopes)
Release flow:```bashgit tag v0.1.1git push origin v0.1.1

Monitor Actions tab. If publish fails, rerun using workflow dispatch after fixing issues.


## ContributionThis project was built by DocMinus with AI-assisted coding support (OpenCode/Copilot-style tooling), then reviewed and tested by the author.
## AI usage policy
- AI assistance was used for scaffolding, implementation drafts, and documentation edits.- Final technical decisions, validation runs, and acceptance were performed by the maintainer.- Runtime behavior should be validated with local tests (`make test`) and smoke tests (`make smoke`) before release.

Source: README.md at commit 375df14

Tools

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

Version history

1
  1. v0.1.4LatestSep 16, 2026

Score

50% 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