Converts chemical structure images into SMILES strings using the DECIMER API.
Also known as DocMinus/DecimerMCPServer, decimermcpserver, decimer-mcp-server
- Stars
- 0
- Tools
- 2
- Downloads, 30 days
- 163
- Latest version
- 0.1.4
- Last commit
- Oct 22, 2026
- License
- MIT
What is DECIMER MCP?
DECIMER converts chemical structure images into SMILES strings using the DECIMER API. It exposes 2 tools, such as server_health, analyze_chemical_image.
Summary generated from the project's README
About DECIMER MCP server
Converting chemical structure images into SMILES strings is the primary function of this tool. It acts as a thin adapter for the DECIMER FastAPI service, allowing AI clients to interact with chemical image recognition capabilities through standard tool calls. Users must have a running DECIMER API server, which defaults to localhost on port 8099, to use this server.
Developers can manage the connection using the analyze_chemical_image tool to send base64-encoded images for processing. The server also includes a server_health tool to verify that the remote FastAPI service is reachable. Configuration is handled through environment variables, including settings for the API base URL, request timeouts, and maximum image byte sizes. This setup is designed for local integration via stdio transport using Python 3.10 or higher.
Written from the project's README. Every use case is checked against a quote from it.
How to install DECIMER MCP
Formats verified 10 Nov 2026Add to CursorAdd to GooseInstall DECIMER MCP in Claude Code
$ claude mcp add decimermcpserver -- uvx decimer-mcp-serverInstall DECIMER MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"decimermcpserver": {
"command": "uvx",
"args": [
"decimer-mcp-server"
]
}
}
}Install DECIMER MCP in VS Code
.vscode/mcp.json
{
"servers": {
"decimermcpserver": {
"type": "stdio",
"command": "uvx",
"args": [
"decimer-mcp-server"
]
}
}
}Install DECIMER MCP in VS Code CLI
$ code --add-mcp '{"name":"decimermcpserver","type":"stdio","command":"uvx","args":["decimer-mcp-server"]}'Install DECIMER MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"decimermcpserver": {
"command": "uvx",
"args": [
"decimer-mcp-server"
]
}
}
}Install DECIMER MCP in Codex
$ codex mcp add decimermcpserver -- uvx decimer-mcp-serverInstall DECIMER MCP in Codex config.toml
~/.codex/config.toml
[mcp_servers.decimermcpserver] command = "uvx" args = ["decimer-mcp-server"]
Install DECIMER MCP in Gemini CLI
$ gemini mcp add -s user decimermcpserver uvx -- decimer-mcp-serverInstall DECIMER MCP in Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"decimermcpserver": {
"command": "uvx",
"args": [
"decimer-mcp-server"
]
}
}
}DECIMER MCP tools 2
Detected from the READMEserver_healthanalyze_chemical_image
| server_health | — | |
| analyze_chemical_image | — |
Configuration
DECIMER_API_BASE_URL
| Name | Description | |
|---|---|---|
| DECIMER_API_BASE_URL | — |
Automated checks
Ran Nov 12, 2026Full report →Passed our automated checks. That is not a security audit: read the code and give the server the narrowest access it needs. How checks work
- Source repository linked and reachablePass
- Open source license (OSI)Pass
- Commit or release in the last yearPass
- Package name not close to a popular packagePass
- Remote endpoint uses HTTPSNot checked
- Destructive tools are labelledPass
- No hidden instructions to the modelPass
- No critical advisory in the package or its dependenciesPass
README
View on GitHubDecimerMCPServer
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:
- GitHub: https://github.com/DocMinus/DecimerServerAPI
- Dockerhub: https://hub.docker.com/r/docminus/decimer_api
Install
cd /Users/a/dev/DecimerMCPServer
uv venv
uv sync
Configuration
Copy .env.example values into your environment:
DECIMER_API_BASE_URL(defaulthttp://localhost:8099)DECIMER_API_TIMEOUT_SECONDS(default60)DECIMER_MAX_IMAGE_BYTES(default10000000)DECIMER_MCP_LOG_LEVEL(defaultINFO)
Run (stdio transport)
uv run decimer-mcp-server
or
uv run python -m decimer_mcp_server
Example MCP client config
{
"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:
{
"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:
{
"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
uv sync --extra dev
uv run pytest
Make targets:
make sync
make test
Smoke test helper
Run one health check + one inference call against your DECIMER API:
cd /Users/a/dev/DecimerMCPServer
DECIMER_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:
uv run --env-file .env decimer-mcp-smoke-test --image /Users/a/dev/DecimerServerAPI/example_usage/structure.png
or use make:
make smoke
Override the image path if needed:
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` versions
2. 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:
```bash
git tag v0.1.1
git push origin v0.1.1
Monitor Actions tab. If publish fails, rerun using workflow dispatch after fixing issues.
## Contribution
This 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.
DECIMER MCP questions
How do I add DECIMER MCP to Claude Code?
Run claude mcp add decimermcpserver -- uvx decimer-mcp-server in your terminal. Add --scope user to make it available in every project.
How do I add DECIMER MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
What tools does DECIMER MCP provide?
It exposes 2 tools, including server_health, analyze_chemical_image.
Does this server run the DECIMER models directly?
No, this server acts as a thin adapter over an existing FastAPI service and does not run the models itself.
What are the requirements to run this server?
You need Python 3.10 or higher and a running DECIMER API server.