An MCP server that lets AI assistants drive Kratos Multiphysics 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, tutorial).
- 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
vizextra. - Interoperate: explain an existing ProjectParameters.json, and convert cases to/from the Kratos FlowGraph visual node editor (lossless round-trip).
52 tools, 15 resources (10 worked examples) and 5 guided prompts. See the full documentation in
docs/ (VitePress).
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:
claude mcp add kratos -- uvx kratos-mcp-serverFrom a local checkout (current state, before the first PyPI release):
git clone https://github.com/loumalouomega/Kratos-MCP-Server
cd Kratos-MCP-Server
uv sync
claude mcp add kratos -- uv --directory "$PWD" run kratos-mcpThen 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.
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: 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: 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 summingREACTIONover the airfoil surface, and renders/animates the pressure field cropped to the airfoil with the newercrop_boundsoption.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: 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: multi-stage orchestration —create_multistage_projectchaining two load steps,explain_project_parameters, and a lossless round-trip to/from a Kratos FlowGraph node graph.docs/tutorials/potential-flow.md: a runnable NACA0012 perturbation potential-flow benchmark with upstream reference values.
- Python ≥ 3.10, 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: thevizextra (uv sync --extra vizorpip install 'kratos-mcp-server[viz]') and a working OpenGL context (on headless machines: Xvfb or OSMesa VTK wheels — see docs/tools/visualization.md)
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.
See the roadmap for planned work and the changelog for release history.
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