Kratos MCP Server
# Kratos MCP Server
[](https://github.com/loumalouomega/Kratos-MCP-Server/actions/workflows/ci.yml)
[](https://loumalouomega.github.io/Kratos-MCP-Server/)
[](https://github.com/loumalouomega/Kratos-MCP-Server/releases)
[](https://pypi.org/project/kratos-mcp-server/)
[](https://www.python.org/)
[](LICENSE)
An [MCP](https://modelcontextprotocol.io) server that lets AI assistants drive
[Kratos Multiphysics](https://github.com/KratosMultiphysics/Kratos) finite
element simulations end to end:
- **Introspect** the installation: applications, elements, conditions,
constitutive laws, variables, solvers and processes and their default
parameters (process defaults are parsed from the Kratos source, no build
needed).
- **Scaffold** simulation cases from templates: structural
(static/dynamic/modal), thermal (transient/stationary), fluid (monolithic
or fractional-step incompressible) and potential flow — plus **multi-stage
orchestrated** cases that chain analyses. Curated material and linear-solver
presets included. ProjectParameters.json, Materials.json and structured MDPA
meshes with named boundary regions.
- **Study** parameter sweeps and structured mesh convergence with isolated
variants, a bounded background queue, and physical-location probe responses
([tools](docs/tools/studies.md), [tutorial](docs/tutorials/studies.md)).
- **Run** simulations (single- or multi-stage) as managed background jobs
(status, live logs, progress, cancel) that survive server restarts, with
optional immutable input snapshots, reproducible reruns, checkpoint resume
for isolated serial single-stage jobs, and local MPI launch (`mpi_ranks`,
`omp_threads`) with per-rank logs and whole-group cancellation.
- **Post-process** VTK results: summaries, point probes, convergence
analysis, physical-time histories, CSV export, and reference comparisons.
- **Preview** results without ParaView: PNG screenshots and GIF animations
(deformed shapes, field contours) rendered with pyvista and shown inline
in the conversation — optional `viz` extra.
- **Interoperate**: explain an existing ProjectParameters.json, and convert
cases to/from the [Kratos FlowGraph](https://github.com/KratosMultiphysics/Flowgraph)
visual node editor (lossless round-trip).
52 tools, 15 resources (10 worked examples) and 5 guided prompts. See the full documentation in
[`docs/`](docs/) (VitePress).
## Quick start
A local Kratos build is **not required** — the server can pip-install
Kratos itself on first use.
**Once published to PyPI**, no clone needed — `uvx` fetches and runs it:
```bash
claude mcp add kratos -- uvx kratos-mcp-server
```
**From a local checkout** (current state, before the first PyPI release):
```bash
git clone https://github.com/loumalouomega/Kratos-MCP-Server
cd Kratos-MCP-Server
uv sync
claude mcp add kratos -- uv --directory "$PWD" run kratos-mcp
```
Then ask your assistant something like:
> Check the Kratos installation — install it if it's missing — then set up
> a cantilever plate 1 m × 0.2 m fixed on the left with a 1 MN/m downward
> load on the right edge, run it, and report the tip deflection.
The assistant calls `kratos_install` the first time and reuses it afterwards.
If you already have a compiled Kratos checkout, skip that and point
`KRATOS_ROOT` at it instead (`-e KRATOS_ROOT=/path/to/Kratos` on the `claude
mcp add` line) — see [Installation](docs/guide/installation.md).
## Notebooks
Five notebooks drive the server interactively as an MCP *client* — no AI
assistant involved — each touching most of the relevant tools, resources
and prompts in one sitting. Run any with `uv sync --extra viz --group
dev` (adds `ipykernel` + pyvista) and open it in Jupyter/VS Code against
that `.venv`.
- [`notebooks/cantilever.ipynb`](notebooks/cantilever.ipynb): the structural
cantilever case — installation introspection, mesh generation,
scaffolding, a background job you poll while it runs, VTK
post-processing, a rendered PNG and an animated GIF, and cancelling a job
in flight.
- [`notebooks/naca_airfoil.ipynb`](notebooks/naca_airfoil.ipynb): a NACA0012
airfoil in incompressible laminar flow — reuses a real ~21k-node airfoil
mesh from Kratos's own examples repo (simplified physics; see the
notebook/tutorial for what and why), computes lift/drag by summing
`REACTION` over the airfoil surface, and renders/animates the pressure
field cropped to the airfoil with the newer `crop_bounds` option.
- [`notebooks/fluid_cavity.ipynb`](notebooks/fluid_cavity.ipynb): the
lid-driven cavity CFD benchmark — introspect the fluid solver, run the
shipped example, probe the velocity field, and render an inline PNG and GIF
of the recirculating vortex.
- [`notebooks/materials.ipynb`](notebooks/materials.ipynb): the materials
surface — material & linear-solver presets, process-defaults introspection,
and a single-element von Mises plasticity run showing the elastic→plastic
transition.
- [`notebooks/multistage.ipynb`](notebooks/multistage.ipynb): multi-stage
orchestration — `create_multistage_project` chaining two load steps,
`explain_project_parameters`, and a lossless round-trip to/from a
[Kratos FlowGraph](https://github.com/KratosMultiphysics/Flowgraph) node graph.
- [`docs/tutorials/potential-flow.md`](docs/tutorials/potential-flow.md): a
runnable NACA0012 perturbation potential-flow benchmark with upstream
reference values.
## Requirements
- Python ≥ 3.10, [uv](https://docs.astral.sh/uv/)
- Kratos Multiphysics, either pip-installed via `kratos_install`
(Linux/Windows x86_64 only — no macOS wheels) or a compiled build (tested
with 10.4, StructuralMechanics / ConvectionDiffusion / FluidDynamics /
LinearSolvers applications)
- Optional, for `results_render`/`results_animate`: the `viz` extra
(`uv sync --extra viz` or `pip install 'kratos-mcp-server[viz]'`) and a
working OpenGL context (on headless machines: Xvfb or OSMesa VTK wheels —
see [docs/tools/visualization.md](docs/tools/visualization.md))
## Architecture in one paragraph
Kratos is never imported in the server process — it prints a banner on import
(which would corrupt the stdio JSON-RPC stream) and can abort the process on
solver errors. Short operations run in a **worker** subprocess that returns
JSON through a result file; simulations run **detached** with per-job
directories under `~/.kratos-mcp/jobs/`. See
[docs/guide/architecture.md](docs/guide/architecture.md).
## Development
See the [roadmap](docs/roadmap.md) for planned work and the
[changelog](CHANGELOG.md) for release history.
```bash
uv run pytest -m "not kratos" # unit tests (no Kratos needed)
uv run pytest -m kratos # integration tests against the real build
npm install && npm run docs:dev # documentation site
```
## License
[MIT](LICENSE)
TDQS
Scored across 52 tools
Tools are mostly separated by clear resource+action pairs, and the kratos_/mdpa_/job_/results_/study_ prefixes help grouping. A few boundaries could still blur, e.g. validate_project_parameters vs validate_case or create_project_parameters vs create_project, but descriptions make the intended scope reasonably distinguishable.
All names are snake_case with recognizable verb/noun elements, and prefix families are used consistently within job_, results_, study_, mdpa_, and kratos_ groups. Minor inconsistency comes from mixing prefixed and unprefixed tools plus mixed verb/resource ordering, but nothing is chaotic.
52 tools is very heavy for a single MCP server and goes well beyond the comfortable 3-15 range; several list/get/scaffold operations could plausibly be consolidated. The broad CAE domain justifies more tools than usual, but the surface is still too large and increases selection and maintenance burden.
Coverage is strong across the simulation lifecycle: installation, introspection, mesh creation/validation, project and material scaffolding, job execution/control, results analysis, studies, and flowgraph import/export. Gaps remain around editing or deleting existing artifacts (e.g. removing processes, deleting jobs/studies, updating materials), but agents can work around most of these.