mike-plus
The mike-plus server lets you inspect, edit, run, and analyze MIKE+ hydraulic models entirely headless — no GUI required — using natural language through an AI agent.
Model Inspection (requires MIKE+ license)
mike_model_info— Get an overview of a.sqlitemodel: active simulation/scenario, unit system, simulations, scenarios, and element counts.mike_get_values— Read parameter values from any MIKE+ table (e.g., pipe diameters, Manning roughness), optionally filtered by element MUIDs.
Model Editing (requires MIKE+ license)
mike_set_values— Modify parameter values for specific elements; returns before/after values for audit. Always use on a copy — changes are permanent.
Running Simulations (requires MIKE+ license)
mike_run— Execute a MIKE+ 1D simulation headlessly, returning result file paths (.res1d) and a parsed QA status from the engine log.
Results Analysis (no license needed)
mike_results_list— List contents of a.res1dfile: available quantities, element counts, and simulation time range.mike_results_summary— Get per-quantity peak summaries (value, element, chainage, time); supports skipping warm-up hours.mike_results_read— Extract a single time series for a quantity at a specific element, downsampled to a configurable number of points.
Plotting & Visualization (no license needed)
mike_plot_rain_flow— Stacked rainfall-runoff figure from a.res1d, with optional rainfall from a.dfs0file.mike_plot_timeseries— Single-panel time-series plot for any quantity at any element.mike_plot_network— Network layout map (pipes as lines, nodes as points) for a spatial overview.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mike-plus run the baseline simulation and show the peak flow summary"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Agentic MIKE+
A headless, natural-language-driven, automated modelling workflow for MIKE+. Skills + an MCP server for Claude Code, Codex, Hermes, or OpenClaw: describe a goal in plain language and the agent inspects, edits, runs, reads, and plots a MIKE+ model. Automated modelling and analysis, end to end, without ever opening the GUI.
Need a model to run? SWMMCanada builds one anywhere in Canada. It is the upstream, open-data model builder for this agentic workflow: draw an area on a map and it assembles a ready-to-run stormwater model from Canadian open data (real municipal storm networks for 8 cities, synthesized everywhere else), giving the agent a real network to run, edit, read, and plot. Try the hosted demo with no install at swmm.h2ox.me, or see the project at h2ox.me.
Experimental / pre-release. One MCP server + skills wrapping DHI's Python stack (
mikeplus/mikeio/mikeio1d). Verified end to end on the MIKE+ 2026Sirius_RTCexample. Sibling of agentic-swmm-workflow.
Install: just tell your agent
It is the AI era. You don't wire this up by hand. Paste this to your AI coding agent (Claude Code, Codex, Hermes, OpenClaw):
Install "Agentic MIKE+" for me: an MCP server + skills to drive MIKE+ headless.
1. Clone https://github.com/Zhonghao1995/Agentic-MIKE-Plus and skim its README.
2. With Python 3.11 x64 (mikeplus needs 3.9-3.11, not 3.12+):
py -3.11 -m venv .venv
.venv\Scripts\python.exe -m pip install -r requirements.lock
.venv\Scripts\python.exe -m pip install -e ".[run]"
(read/plot only, no license: drop the lock and use `pip install -e .`)
3. Register with me (Claude Code):
claude mcp add mike-plus -- "<abs-repo>\.venv\Scripts\python.exe" -m mikeplus_mcp.server
(Codex / Hermes / OpenClaw: copy config/mcp.sample.json)
4. Copy skills/* into ~/.claude/skills/, then run scripts/smoke_test.py (should find 18 tools).
5. Tell me the tools and which need a MIKE+ license (run/edit/import do; read/plot/compare don't).Needs Python 3.11 (x64). Two install profiles:
Read & plot. License-free and cross-platform:
pip install -e .(nomikeplus).Run & edit too. Windows + a licensed MIKE+ 2026:
pip install -e ".[run]"(orpip install -r requirements.lockfor the exact pinned environment).
mikeplus is an optional [run] extra, so teammates who only read results or make figures install nothing license-bound.
Related MCP server: ras-commander-mcp
Why it matters
Natural-language-driven. Describe the task in plain words; the agent plans and runs it: no scripting, no GUI clicking. (A sub-agent did this autonomously.)
Fully headless. Runs with no GUI, on a workstation, a server, in CI, or under an agent. Built for batch and scenario automation.
MCP-native and portable. One server speaks the Model Context Protocol; works with Claude Code, Codex, Hermes, or OpenClaw via a single config line, and installs with pip.
Low barrier to share. Reading results and plotting need no MIKE+ license; only running or editing does. Teammates analyse model output with nothing but
pip install.Reproducible & tested. Deterministic tools, structured-JSON output, a pinned lockfile, and a license-free unit-test suite in CI, verified on a real model, not a chat-to-model black box.
Engine-agnostic and extensible. Results use a common schema (ready to sit beside SWMM and LSTM); add a tool or skill by dropping in a file.
How it works
Skills (markdown playbooks) tell the agent when and how; the agent calls MCP tools; each tool runs in an isolated worker subprocess that imports only mikeplus or mikeio*: the two cannot share a process. The server itself imports neither.
agent -> reads skills/*.md -> calls MCP tools -> workers (mikeplus / mikeio1d)Tools (one server, mike-plus)
Tool | Does | License |
| model overview: simulations, scenarios, model type, element counts | yes |
| activate an existing scenario (verified by re-opening the model) | yes |
| read / change parameters (e.g. pipe diameter) | yes |
| run a simulation headless, return | yes |
| import an EPA SWMM (or EPANET) | yes |
| list contents / peaks / one time series | no |
| which nodes flood: peak water level vs ground level, ranked | no |
| baseline vs scenario: delta peak / volume / timing, RMSE, NSE; or every element ranked by change | no |
| stacked hydrograph / series / network map | no |
| overlay of two runs / longitudinal profile (bed, crown, ground, max water level) | no |
| rainfall CSV to a MIKE+ | no |
| provenance manifest: model, inputs, edits, run QA, results, figures, each with sha256 | no |
Ten skills orchestrate them: mike-end-to-end (the SOP: modes, run directory, stop rules, QA gates), mike-model, mike-params, mike-runner, mike-import, mike-results, mike-compare, mike-plot, mike-rain, mike-audit.
Install the skills into any skills-aware agent (Claude Code, Codex, OpenCode, …) in one command, no clone needed:
npx skills add Zhonghao1995/Agentic-MIKE-Plus # all 10; add --list to preview, or --skill <name> for oneDemo: Sirius_RTC (MIKE 1D, 568 nodes, 576 links)
Full evidence (commands, outputs, and the honest license boundary) is in docs/verification.md.
Development
The engine-agnostic core is covered by a license-free test suite (no MIKE+ / mikeplus needed) that also runs in CI:
pip install -e . # read/plot core (add ".[run]" for run/edit)
pip install pytest
pytest # ~0.5 s, no license requiredThe tests pin the result schema, the res1d column matcher, the engine-log QA parser, the compare / rain / manifest / SWMM-inp helpers, and tool discovery, so a change can't silently break them. Add a tool or skill by dropping a file under mikeplus_mcp/tools/ or skills/ (auto-discovered), and ship a test with it.
License
MIT © 2026 Zhonghao Zhang, University of Victoria. Built on DHI's mikeplus / mikeio / mikeio1d and the Model Context Protocol. MIKE+ is a product of DHI; running models requires a valid DHI license.
Available Tools
10 toolsmike_get_valuesA
Read parameter values from a MIKE+ table (e.g. msm_Link, msm_Node, msm_Catchment) for the given columns and optional element MUIDs. Read-only. Needs MIKE+ + license. Use this to identify current parameter values.
Inputs: sqlite (required), table (required), columns, muids.
mike_model_infoA
Open a MIKE+ .sqlite model and report the active simulation/scenario/model, unit system, the list of simulation setups (msm_Project), scenarios, and element counts (nodes/links/catchments). Read-only. Needs MIKE+ + license.
Inputs: sqlite (required).
mike_plot_networkA
Render a network layout map of a MIKE+ model from a .res1d — reaches/pipes as lines, nodes as points, equal-aspect, house style. Good for an overview figure. No license needed.
Inputs: res1d (required), out_png (required).
mike_plot_rain_flowA
Render a stacked two-panel rainfall-runoff figure (rain inverted on top, flow on bottom) in the house style. Flow comes from a .res1d element; rainfall optional from a .dfs0. No license needed.
Inputs: res1d (required), element (required), out_png (required), quantity, +1 more.
mike_plot_timeseriesB
Render a single-panel time-series plot (a quantity at an element) in the house style. No license needed.
Inputs: res1d (required), quantity (required), element (required), out_png (required).
mike_results_listA
List what is inside a MIKE+ .res1d: quantities (WaterLevel/Discharge/...), element counts (nodes/reaches/structures/catchments) with sample ids, and the time range. No license needed.
Inputs: res1d (required).
mike_results_readB
Extract one time series (a quantity at an element) from a MIKE+ .res1d as times+values (downsampled to max_points). No license needed.
Inputs: res1d (required), quantity (required), element (required), max_points.
mike_results_summaryA
Per-quantity peak summary (peak value, element, chainage, time) from a MIKE+ .res1d. No license needed. NOTE: this is the GLOBAL max over the whole run, which can fall in the warm-up/initial-condition period (a base-flow value near t=0) rather than the storm peak — pass skip_hours to exclude an initial window and always check peak_time.
Inputs: res1d (required), quantities, skip_hours.
mike_runA
Run a MIKE+ simulation headless via the MIKE 1D engine. Runs the model's active simulation unless 'simulation' is given. Returns the result file paths plus the engine log tail. Needs MIKE+ installed + a valid license. ALWAYS run on a COPY of the model (mikeplus has no undo).
Inputs: sqlite (required), simulation, timeout_s.
mike_set_valuesA
Set parameter values in a MIKE+ table for specific element MUIDs (e.g. change a pipe Diameter or Manning roughness). Returns before/after for the affected rows. MUTATES the database — ALWAYS use a copy. Needs MIKE+ + license. Pass 'muids' to scope the change; set all=true only when you intend to change every row.
Inputs: sqlite (required), table (required), values (required), muids, +1 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 10 tools
Each tool has a clearly distinct purpose: reading/setting parameters, model info, three plot types, results listing/reading/summary, and simulation execution. No overlapping functionality.
All tools follow a consistent 'mike_verb_noun' pattern (e.g., get_values, plot_network, results_list). The verbs are descriptive and uniformly formatted.
10 tools is well within the ideal 3-15 range. The number covers the essential operations for MIKE+ modeling without being excessive.
The toolset covers the core workflow: model info, parameter read/write, simulation run, and results analysis/plotting. Minor gaps include lack of tools for structural model editing or scenario management, but for the intended purpose it is solid.
Maintenance
Related MCP Connectors
SWAT+ watershed models for any river in the lower 48 states, with groundwater and PFAS data
AI-powered life cycle assessment and modelling: connect to LCA databases, build and analyze systems
Conversational what-if simulation: build, diagnose and compare Petri-net models; CC0 catalog.
Build and run AI workflows, agents, data tables and 1000+ API integrations from any MCP client.
Related MCP Servers
- AlicenseBqualityBmaintenanceEleven local stdio MCP servers exposing a reproducible EPA SWMM stormwater-modelling workflow: model building, simulation with run manifests and continuity checks, calibration, GIS/QGIS, design storms and climate scenarios, uncertainty analysis, plotting, and modelling memory.487 PyPI33MIT
- AlicenseNot gradedqualityBmaintenanceEnables querying HEC-RAS project information, geometry elements, plan results, and compute messages through natural language, allowing interaction with hydraulic modeling projects.39 PyPI18MIT
- AlicenseNot gradedqualityAmaintenanceAutomates OpenFOAM CFD simulations via MCP, enabling AI agents to mesh, run, and post-process cases from natural language prompts without any API keys.MIT
- AlicenseAqualityDmaintenanceMCP server that enables natural-language-driven, headless HEC-RAS modeling, letting agents inspect, edit, run, compare, and plot 1D/2D hydraulic models without the GUI.103MIT