Atomistic Toolkit MCP Server
XirtamEsrevni/mcp-atomictoolkit · 12 stars · Python · MIT
MCP server An MCP-compatible server providing atomistic simulation capabilities through ASE, pymatgen, etc.
Install
The repo has no one-line install. Follow its README.
Files
MCP Atomic Toolkit
Note
This project is under active development. Interfaces and behavior may evolve.
A FastMCP server for atomistic modeling workflows powered by ASE, pymatgen, and modern ML interatomic potentials.
It gives MCP clients a practical toolkit for:
- building and importing structures,
- editing cells (strain, supercell) and defects (vacancy, substitution, interstitial),
- running geometry optimization + NVE/NVT/NPT molecular dynamics,
- estimating bulk modulus,
- analyzing structures/trajectories,
- and downloading generated artifacts (data + plots).
✨ Why this repo
If you need atomistic workflows exposed as MCP tools (instead of hand-wiring scripts), this project gives you:
- ready-to-call MCP tools for common simulation tasks,
- file-first outputs that are easy to inspect/reuse,
- artifact download URLs so clients don’t need binary blobs in chat context,
- deployment-ready HTTP app with health and server-card endpoints.
🚀 Features
- MCP-native workflows via FastMCP tools
- Structure generation: bulk, surface, molecule, supercell, amorphous, liquid, bicrystal, polycrystal
- Structure import from xyz/cif/POSCAR text
- Edits and defects: rotate, translate, strain, supercell, wrap, vacancy, substitute, interstitial
- Calculators:
autotrieskim→orb→nequix→ ASE EMT (Al/Cu/Ag/Au/Ni/Pd/Pt) - Optimization and single-point energy/forces/stress
- Molecular dynamics: Velocity Verlet, Langevin, NVT Berendsen, NPT Berendsen
- Recipe tool
relax_and_md_workflow(relax then MD) - Isotropic bulk modulus from a 5-point energy-vs-strain fit
- Analysis outputs: RDF + coordination, MSD + thermo trends, VACF + diffusion
- Downloadable artifacts (
xyz,extxyz,cif,traj,png,svg,csv,dat, ...) - Registry-friendly endpoints (
/healthz, server card, Streamable HTTP root)
⚡ Quick Start
1) Requirements
- Python 3.11+
2) Install
Core install does not require the OpenKIM C++ API:
pip install -r requirements.txt
or:
pip install -e .
OpenKIM (kimpy) is optional. It compiles against the system KIM API, so a default install used to fail on machines without libkim-api.
To enable the KIM calculator:
# Debian/Ubuntu sudo apt-get install -y libkim-api-dev pkg-config pip install -e ".[kim]"
macOS (Homebrew): brew install openkim-models kim-api then pip install -e ".[kim]".
Without the extra, use calculator_name='auto', 'emt', 'orb', or 'nequix'. Runtime code already falls back when KIM is missing. EMT covers Al, Cu, Ag, Au, Ni, Pd, and Pt.
3) Run locally
uvicorn mcp_atomictoolkit.http_app:app --host 0.0.0.0 --port 10000
Alternative:
python main.py
STDIO mode (for desktop MCP clients):
python -m mcp_atomictoolkit.mcp_server
Important
STDIO transports must keep stdout clean for JSON-RPC. Avoid
print()or logging to stdout when running the server in STDIO mode.
4) Smoke check
curl -s http://localhost:10000/healthz
Expected response:
{"status":"ok"}
🧰 Tooling Overview
Main MCP tools exposed by the server:
list_workspace_capabilities_workflowbuild_structure_workflowimport_structure_workflowmanipulate_structure_workflowanalyze_structure_workflowwrite_structure_workflowoptimize_structure_workflowsingle_point_workflowestimate_elastic_workflowrun_md_workflowrelax_and_md_workflowanalyze_trajectory_workflowautocorrelation_workflow
Legacy aliases are also registered: build_structure, read_structure_file, write_structure_file, optimize_with_mlip.
Call list_workspace_capabilities_workflow first from an agent. It reports which calculators imported, EMT element support, integrators, structure types, and edit operations.
🌐 Endpoints
POST /— primary MCP Streamable HTTP endpointGET /healthz— health checkGET /docs— lightweight documentation (README)GET /.well-known/mcp/server-card.json— MCP server card metadataGET /artifacts/{artifact_id}/{filename}— artifact download route/sse/— compatibility alias path mounted to the MCP app
📦 Deployment
Render
render.yaml is included and ready to use.
Default start command:
uvicorn mcp_atomictoolkit.http_app:app --host 0.0.0.0 --port $PORT
Docker
The image installs libkim-api-dev and the optional [kim] extra.
docker build -t mcp-atomictoolkit . docker run --rm -p 7860:7860 mcp-atomictoolkit
🗂️ Project Structure
src/mcp_atomictoolkit/
mcp_server.py # FastMCP tool definitions
http_app.py # Starlette app + routing/endpoints
workflows/core.py # High-level workflow orchestration
analysis/ # Structure/trajectory/VACF analysis logic
structure_operations.py
optimizers.py
md_runner.py
artifact_store.py # Download artifact registration + URLs
🧪 Workflow Notes (for MCP clients)
Structure building coverage
build_structure_workflow supports:
- bulk (ASE
bulk) - surface (ASE
surface) - molecule (ASE
molecule) - supercell (multiplication of a base structure)
- amorphous/liquid (random packed structures)
- bicrystal and polycrystal (grain stacking/rotation)
Paste an existing geometry with import_structure_workflow (xyz, cif, or poscar text).
Edits and defects
manipulate_structure_workflow operations:
rotate,translate,strain,supercell,wrapvacancy(operation_kwargs.index)substitute(index,symbol)interstitial(symbol, optionalposition)
Optimization options
optimize_structure_workflow exposes:
max_steps,fmax(convergence)maxstep,alpha(BFGS step/damping controls)constraints(fixed_atoms,fixed_bonds,fixed_cell)
Single-point and elasticity
single_point_workflow computes energy, forces, and stress (if periodic).
estimate_elastic_workflow fits E(strain) at five isotropic strains and returns bulk_modulus_GPa plus calculator_used.
MD integrators / ensembles
run_md_workflow supports:
velocityverlet/nve(NVE)langevin/nvt-langevin(NVT)nvt/nvt-berendsen(NVT)npt/npt-berendsen(NPT;pressure_GPa,taup)
relax_and_md_workflow chains optimization then MD.
Every energy/MD result includes calculator_requested, calculator_used, and calculator_fallbacks so an EMT copper run is not mistaken for an MLIP result.
📈 GitHub Pulse
Star history
🤝 Contributing
- Keep outputs file-based and artifact-friendly.
- When adding tools, usually update both:
workflows/core.pymcp_server.pyhttp_app.pyTOOL_NAMES
- Preserve
http_app.pycompatibility behavior unless intentionally changing deployment contracts.
📄 License
MIT — see LICENSE.
Facts
- Kind
- MCP server
- Group
- Uncategorized
- Stars
- 12
- License
- MIT
- Language
- Python
- Last push
- 2026-10-07
- Forks
- 2
- 1REAio.github.morluto/reaReverse engineer anything from your terminal or agent with one CLI and MCP server.125.3k
- 2com.browser-use/browser-usecom.browser-use/browser-useControl a real Chrome browser to complete any task: fill forms, extract data, book flights.117.7k
- 3World Monitorapp.worldmonitor/mcpLive markets, conflicts, country risk, chokepoints, energy, and China decision signals. 93 tools.88.3k
- 4Scrapling MCP Serverd4vinci/scrapling🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scraplingdev86.9k
- 5Everythingmodelcontextprotocol/serversThis MCP server attempts to exercise all the features of the MCP protocol. It is not intended to be a useful server, but rather a test server for builders of MCP clients. It implements prompts, tools, resources, sampling, and more to showcase MCP capabilities.85.8k
- 6Fetchmodelcontextprotocol/serversA Model Context Protocol server that provides web content fetching capabilities. This server enables LLMs to retrieve and process content from web pages, converting HTML to markdown for easier consumption.85.8k