EPANET MCP Server

io.github.Applied-Artificial-Intelligence-EurecatPublished by GitHub account Applied-Artificial-Intelligence-Eurecatv0.1.2Updated Nov 3, 2026

MCP server for EPANET water-distribution network simulation and scenario analysis.

VerifiedSTDIODesktop onlyDeveloper ToolsData & Analytics

Overview

AI-generated overview

Local MCP server that lets an assistant load EPANET water-distribution models, run hydraulic and quality simulations, and build what-if scenarios.

What you can do
  • Load, unload and list networks, including bundled benchmark models, and inspect nodes, links, patterns, controls, curves and options
  • Run hydraulic, water-quality and full simulations and read pressure or flow at a given time
  • Change model parameters such as demands, patterns, pipe diameter, roughness, status and length, pump speed and head curves, valve settings, tank and reservoir levels, and simulation timesteps
  • Add or delete controls and save the modified network
  • Generate what-if scenarios for demand changes, leakage, contamination, pressure changes, pump or valve control and multi-failure events
When to use it
Useful when you work with EPANET .inp water network models and want to explore them conversationally: summarizing a network, checking pressures and flows, testing parameter changes, or running leakage, contamination and failure scenarios without editing files by hand.
Requirements
Runs locally over stdio as a Python package (pip install epanet-mcp-server). Needs Python 3.10 or newer, ePyT 2.0 or newer and mcp 1.0 or newer. No authentication, API keys or environment variables are declared. Desktop client configuration is required.
Before you install
Tools can modify network parameters, add or delete controls and save networks to disk, so changes can overwrite model files. Scenario tools clone the source session, but direct modification tools act on the loaded network. Review saved results before relying on them.

Installation

In SourceWeft

  1. Open EPANET MCP Server in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

EPANET MCP Server

[Linter] [Pytest] [PyPI version] [MCP Registry]

A Model Context Protocol (MCP) server that exposes EPANET water-distribution network modelling capabilities through ePyT - the EPANET Python Toolkit.

Any MCP-compatible LLM can load water network models, run simulations, modify parameters, and generate complex what-if scenarios through natural language.


Features

CategoryTools
Load & Inspectload_network, unload_network, list_networks, list_bundled_networks, get_network_summary, get_nodes, get_links, get_patterns, get_controls, get_curves, get_options
Simulaterun_hydraulic_simulation, run_quality_simulation, run_full_simulation, get_pressure_at_time, get_flow_at_time
Modifyset_node_base_demand, set_pattern, add_pattern, set_pipe_diameter, set_pipe_roughness, set_pipe_status, set_pipe_length, set_pump_status, set_pump_speed, set_pump_head_curve, set_valve_setting, set_valve_status, set_tank_parameters, set_reservoir_head, set_simulation_duration, set_hydraulic_timestep, set_quality_timestep, set_quality_type, add_control, delete_control, save_network
Scenarioscreate_demand_perturbation, create_leakage_event, create_contamination_event, create_pressure_change_scenario, create_pump_control_scenario, create_valve_control_scenario, create_multi_failure_scenario

Requirements

  • Python ≥ 3.10
  • ePyT ≥ 2.0
  • mcp ≥ 1.0
bash
pip install epyt mcp

Installation

bash
git clone https://github.com/Applied-Artificial-Intelligence-Eurecat/epanet-mcp-server.gitcd epanet-mcp-serverpip install -e .

Running the server

stdio (for Claude Desktop / Claude Code)

bash
epanet-mcp-server# orpython -m epanet_mcp.server

SSE / HTTP

bash
epanet-mcp-server --transport sse --port 8000

Claude Desktop configuration

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or the equivalent on your platform:

json
{  "mcpServers": {    "epanet": {      "command": "epanet-mcp-server",      "args": []    }  }}

If not on PATH:

json
{  "mcpServers": {    "epanet": {      "command": "python",      "args": ["-m", "epanet_mcp.server"],      "cwd": "/path/to/epanet-mcp-server/src"    }  }}

Claude Code (.mcp.json)

Place this in the root of your project or ~/.claude/:

json
{  "mcpServers": {    "epanet": {      "command": "epanet-mcp-server",      "args": []    }  }}

Example interactions

Once the server is connected, you can ask things like:

"Load Net1.inp and show me a summary of the network."

"Run a full simulation and tell me which node has the lowest pressure at hour 12."

"Double the base demand at junction 11 and re-run the simulation. How does pressure change?"

"Simulate a burst on pipe 10 with a 20% leakage fraction."

"Inject 10 mg/L of chlorine at node 11 between hours 1 and 3 and show me the contamination spread."

"What happens to pressures if the reservoir head drops from 150 m to 120 m?"

"Schedule Pump 9 to start at 06:00 and stop at 22:00."

"Close pipes 10 and 11 and the pump simultaneously. Where are service disruptions?"


Architecture

src/epanet_mcp/├── server.py          # FastMCP server – tool registration + entry point├── session.py         # Thread-safe registry of open ePyT sessions├── utils.py           # numpy → Python serialisation helpers└── tools/    ├── inspection.py  # load / inspect network models    ├── simulation.py  # run hydraulic & quality simulations    ├── modification.py# in-memory parameter changes    └── scenarios.py   # what-if scenario generators (clone + modify + run)

Session model: Each loaded network lives in a named session. Scenario tools automatically clone the source session into a new independent session so the baseline network is never mutated.


Running the tests

bash
pip install pytestpytest tests/ -v

Bundled networks

ePyT ships with many standard benchmark networks including Net1, Net2, L-TOWN, Hanoi, Anytown, Balerma and others. Use list_bundled_networks to discover them all.


License

MIT

Source: README.md at commit 9419676

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.2LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts