Model Context Protocol server that drives a local GROMACS installation — build, solvate, ionize, run simulations in the background, and analyse trajectories from any MCP client.
Project description
🧬 gromacs-mcp
Drive GROMACS from any MCP client, in natural language.
Build topologies, solvate, add ions, preprocess, run simulations in the background, and post-process trajectories — all through the Model Context Protocol.
Why
Setting up and running a molecular-dynamics simulation is a long, error-prone chain of
gmx sub-commands. gromacs-mcp exposes that pipeline as clean MCP tools so an LLM agent
(Claude Code, Claude Desktop, or any MCP client) can plan and run the whole workflow while
you supervise — without the agent ever blocking on a multi-hour mdrun.
Features
- Hybrid tool design — typed helpers for every common pipeline step plus a generic
run_gmxescape hatch for any othergmxsub-command. - Non-blocking simulations —
mdrun_startlaunches in the background and returns a job id; poll progress (step / time / ns·day⁻¹ / ETA) withmdrun_status. - Actionable errors — GROMACS
Fatal error:blocks are extracted into a dedicatederror_summaryfield, so the real cause survives output truncation. - Project-scoped work dirs — each system lives in its own directory under a configurable root.
- Sandboxed file access — tool file paths stay inside the selected work directory by default.
- Zero-config discovery — finds
gmxonPATHautomatically (override withGMX_BIN).
Tools
| Category | Tool | Purpose |
|---|---|---|
| Introspect | gmx_info |
GROMACS version / build / binary path |
list_files |
List files in a work directory | |
read_text_file |
Read an .mdp / .top / .log (clipped) |
|
write_mdp |
Write an .mdp (or any text) file |
|
| MDP templates | write_em_mdp |
Write a safe energy-minimisation template |
write_nvt_mdp |
Write a safe NVT equilibration template | |
write_npt_mdp |
Write a safe NPT equilibration template | |
write_md_mdp |
Write a safe production-MD template | |
validate_mdp |
Check syntax and common MDP issues | |
| Pipeline | pdb2gmx |
Structure → topology + coordinates |
editconf |
Define the simulation box | |
solvate |
Fill the box with solvent | |
grompp |
Preprocess → run input (.tpr) |
|
genion |
Add neutralising / salt ions | |
trjconv |
Trajectory PBC / centering / conversion | |
| Analysis | make_ndx |
Create/edit GROMACS index files |
energy |
Extract energy terms from .edr |
|
rms |
RMSD analysis | |
rmsf |
RMSF analysis | |
gyrate |
Radius-of-gyration analysis | |
hbond |
Hydrogen-bond analysis | |
sasa |
Solvent-accessible surface area | |
check |
Validate GROMACS binary/text artefacts | |
| Simulation | mdrun_start |
Start a simulation in the background |
mdrun_status |
Poll progress + log tail | |
mdrun_list |
List all background jobs | |
mdrun_stop |
Terminate a job (writes checkpoint) | |
mdrun_logs |
Read captured background-job logs | |
mdrun_cleanup |
Remove finished job records | |
mdrun_forget |
Remove one job record | |
| Escape hatch | run_gmx |
Any other gmx sub-command |
Requirements
- GROMACS installed and
gmxrunnable (brew install gromacs, conda, or a source build). - Python ≥ 3.10.
- An MCP client (e.g. Claude Code or Claude Desktop).
Install & run
The recommended way is uv — no global install needed:
# Run straight from GitHub (or a local checkout)
uvx --from git+https://github.com/Alierkn/gromacs-mcp gromacs-mcp
Alternative: pip / pipx
pipx install git+https://github.com/Alierkn/gromacs-mcp # isolated, on PATH
# or
pip install git+https://github.com/Alierkn/gromacs-mcp
gromacs-mcp # starts the stdio server
Connect it to your MCP client
Claude Code
claude mcp add gromacs --scope user -- \
uvx --from git+https://github.com/Alierkn/gromacs-mcp gromacs-mcp
Then check: claude mcp list → gromacs: … ✔ Connected.
Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"gromacs": {
"command": "uvx",
"args": ["--from", "git+https://github.com/Alierkn/gromacs-mcp", "gromacs-mcp"],
"env": { "GMX_BIN": "/opt/homebrew/bin/gmx" }
}
}
}
Configuration
| Env var | Default | Meaning |
|---|---|---|
GMX_BIN |
auto (which gmx) |
Path to the gmx executable |
GROMACS_MCP_ROOT |
~/gromacs-mcp/projects |
Base dir for work directories |
GROMACS_MCP_ALLOW_ABSOLUTE_WORKDIRS |
unset | Set to 1 to allow absolute workdir values |
Relative workdir arguments resolve under GROMACS_MCP_ROOT; each subdirectory is one
"project" (system) holding its .gro / .top / .tpr / .log files.
By default, absolute work directories and file arguments that escape a work directory are
rejected. Tool file paths must be relative to the selected workdir; hidden files, common
secret files, and binary trajectory/run files are blocked by read_text_file and write_mdp.
Example prompt
"In workdir
lyso, build a topology from1aki.pdbwith amber99sb-ildn / tip3p, put it in a 1.0 nm cubic box, solvate it, neutralise with ions, then run a short energy minimisation in the background and tell me when it's done."
The agent chains:
pdb2gmx → editconf → solvate → grompp (ions) → genion → grompp (em) → mdrun_start → mdrun_status.
How it works
Each tool shells out to the local gmx binary via subprocess, captures stdout/stderr
(GROMACS writes almost everything to stderr), and returns a structured result. Long
simulations are detached with start_new_session=True; their metadata is persisted to a
JSON registry so mdrun_status can report progress parsed from the live md.log. The
registry is written atomically with a file lock, and job metadata records the process group
and command hash to reduce stale-PID mistakes after server restarts.
The server also exposes MCP resources and prompts:
- Resources:
gromacs://projects,gromacs://jobs,gromacs://templates/{name} - Prompts:
prepare_protein_md,debug_grompp_failure,basic_trajectory_analysis
Development
git clone https://github.com/Alierkn/gromacs-mcp && cd gromacs-mcp
uv sync --extra dev
uv run pytest # tests that need gmx auto-skip if it is absent
uv run ruff check .
RUN_GROMACS_INTEGRATION=1 uv run pytest -m integration # real GROMACS smoke test
See CONTRIBUTING.md. For implementation boundaries and release steps, see docs/ARCHITECTURE.md and docs/RELEASE.md.
Related
- vmd-mcp — companion MCP server for headless VMD analysis & rendering. Pair them: simulate with GROMACS, visualise with VMD.
License
MIT © Ali Erkan Ocaklı
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gromacs_mcp-0.2.0.tar.gz.
File metadata
- Download URL: gromacs_mcp-0.2.0.tar.gz
- Upload date:
- Size: 279.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e055ff1f22cb78ccb813012bf336ae47c743d5d8f241ee6f28e84d0de194166
|
|
| MD5 |
14c2d0aff726169d0732ade277a36774
|
|
| BLAKE2b-256 |
f3ea10cae10b8b0bba8ae0bc357088531d141be5d9c66c899c162bca455d76ff
|
Provenance
The following attestation bundles were made for gromacs_mcp-0.2.0.tar.gz:
Publisher:
release.yml on Alierkn/gromacs-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gromacs_mcp-0.2.0.tar.gz -
Subject digest:
1e055ff1f22cb78ccb813012bf336ae47c743d5d8f241ee6f28e84d0de194166 - Sigstore transparency entry: 2113615252
- Sigstore integration time:
-
Permalink:
Alierkn/gromacs-mcp@2c5c957c3f2c047888b63ae258ace3df34cb8773 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/Alierkn
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@2c5c957c3f2c047888b63ae258ace3df34cb8773 -
Trigger Event:
release
-
Statement type:
File details
Details for the file gromacs_mcp-0.2.0-py3-none-any.whl.
File metadata
- Download URL: gromacs_mcp-0.2.0-py3-none-any.whl
- Upload date:
- Size: 18.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
924c4f33aa96fbee82ed0389fbbfcb79a00f9a676b1e571644a1d5debf390d32
|
|
| MD5 |
c242433412404d86b586d30289ddff85
|
|
| BLAKE2b-256 |
7bcdbdff498ee551979ad2fc51fcd3da02b767fd6b08b5b450f2bc092dba5925
|
Provenance
The following attestation bundles were made for gromacs_mcp-0.2.0-py3-none-any.whl:
Publisher:
release.yml on Alierkn/gromacs-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gromacs_mcp-0.2.0-py3-none-any.whl -
Subject digest:
924c4f33aa96fbee82ed0389fbbfcb79a00f9a676b1e571644a1d5debf390d32 - Sigstore transparency entry: 2113615335
- Sigstore integration time:
-
Permalink:
Alierkn/gromacs-mcp@2c5c957c3f2c047888b63ae258ace3df34cb8773 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/Alierkn
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@2c5c957c3f2c047888b63ae258ace3df34cb8773 -
Trigger Event:
release
-
Statement type: