epanet-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| load_networkA | Load an EPANET .inp file into a named session. Args:
path: Absolute file path, relative path, or bare filename
(e.g. Returns:
|
| unload_networkA | Unload a previously loaded network and free its resources. Args:
network_id: The session id returned by |
| list_networksA | Return the ids of all currently loaded networks. |
| list_bundled_networksA | List every .inp example file bundled with ePyT (usable with load_network). |
| get_network_summaryA | Return a high-level summary of a loaded network. Includes node/link counts, flow units, simulation duration and hydraulic timestep. Args: network_id: Session id of the network to inspect. |
| get_nodesA | Return all nodes (junctions, tanks, reservoirs) with their attributes. Attributes include elevation, base demand, and type. Tanks also include min/max/initial water levels and diameter. Args: network_id: Session id of the network to inspect. |
| get_linksA | Return all links (pipes, pumps, valves) with their attributes. Attributes include type, connected nodes, diameter, length, roughness coefficient, and minor loss coefficient. Args: network_id: Session id of the network to inspect. |
| get_patternsA | Return all demand / operational patterns defined in the network. Args: network_id: Session id of the network to inspect. |
| get_controlsC | Return all simple controls defined in the network. Args: network_id: Session id of the network to inspect. |
| get_curvesA | Return all curves (pump head, efficiency, volume, valve) in the network. Args: network_id: Session id of the network to inspect. |
| get_optionsA | Return simulation options: timesteps, units, quality settings, head-loss formula, and demand model. Args: network_id: Session id of the network to inspect. |
| run_hydraulic_simulationC | Run a full hydraulic simulation and return time-series results. Returns pressures, demands, heads, flows, velocities, head-losses and link statuses at every reporting time step. Args: network_id: Session id of the network to simulate. |
| run_quality_simulationB | Run a full water-quality simulation and return time-series results. Includes node/link quality concentrations plus all hydraulic results.
Configure the quality type first with Args: network_id: Session id of the network to simulate. |
| run_full_simulationA | Run both hydraulic and water-quality simulations and return combined time-series results (pressures, flows, quality, reaction rates, etc.). Args: network_id: Session id of the network to simulate. |
| get_pressure_at_timeA | Return node pressures at (or nearest to) a specific simulation time. Args: network_id: Session id of the network. time_s: Simulation time in seconds (e.g. 3600 = 1 hour). |
| get_flow_at_timeA | Return link flows at (or nearest to) a specific simulation time. Args: network_id: Session id of the network. time_s: Simulation time in seconds. |
| save_networkB | Save the current (possibly modified) network to a new .inp file. Args:
network_id: Session id of the network to save.
output_path: Destination file path (should end in |
| set_node_base_demandB | Set the base demand for a junction node. Args: network_id: Session id. node_id: Junction node name/ID. demand: New base demand in the network's flow units. demand_category: Demand category index (default 1). |
| set_patternB | Overwrite all multiplier values for a named demand pattern. Args: network_id: Session id. pattern_id: Name of an existing pattern. values: New list of multiplier values. |
| add_patternB | Add a new demand / operational pattern to the network. Args: network_id: Session id. pattern_id: Unique name for the new pattern. values: Multiplier values for consecutive pattern time steps. |
| set_pipe_diameterA | Set the diameter of a pipe. Args: network_id: Session id. pipe_id: Pipe name/ID. diameter: New diameter in the network's length units (mm or inches). |
| set_pipe_roughnessA | Set the roughness coefficient of a pipe. Args: network_id: Session id. pipe_id: Pipe name/ID. roughness: Hazen-Williams C factor (or Darcy-Weisbach roughness height). |
| set_pipe_statusB | Open or close a pipe. Args:
network_id: Session id.
pipe_id: Pipe name/ID.
status: |
| set_pipe_lengthB | Set the length of a pipe. Args: network_id: Session id. pipe_id: Pipe name/ID. length: New length in the network's length units (feet or metres). |
| set_pump_statusA | Start or stop a pump. Args:
network_id: Session id.
pump_id: Pump link name/ID.
status: |
| set_pump_speedC | Set the relative speed setting of a pump. Args: network_id: Session id. pump_id: Pump link name/ID. speed: Speed ratio (1.0 = design speed, 0.5 = half speed). |
| set_pump_head_curveB | Set (replace) the head-flow curve of a pump. Args: network_id: Session id. pump_id: Pump link name/ID. flow_values: X-axis (flow) values. head_values: Y-axis (head) values. |
| set_valve_settingA | Set the initial setting of a valve. PRV/PSV/PBV → pressure setpoint; FCV → flow rate; TCV → loss coefficient. Args: network_id: Session id. valve_id: Valve link name/ID. setting: New setting value. |
| set_valve_statusB | Open or close a valve. Args:
network_id: Session id.
valve_id: Valve link name/ID.
status: |
| set_tank_parametersB | Update one or more parameters of a tank node. Only provided parameters are changed; others retain their current values. Args: network_id: Session id. tank_id: Tank node name/ID. initial_level: Water level at simulation start. min_level: Minimum operating level. max_level: Maximum operating level. diameter: Tank diameter. |
| set_reservoir_headA | Set the total head (water-surface elevation) of a reservoir. Args: network_id: Session id. reservoir_id: Reservoir node name/ID. head: Total head value in the network's pressure-head units. |
| set_simulation_durationC | Set the total simulation duration. Args: network_id: Session id. duration_s: Duration in seconds (e.g. 86400 = 24 h). |
| set_hydraulic_timestepC | Set the hydraulic time step. Args: network_id: Session id. timestep_s: Hydraulic time step in seconds. |
| set_quality_timestepA | Set the water-quality simulation time step. Args: network_id: Session id. timestep_s: Quality time step in seconds. |
| set_quality_typeA | Set the water-quality analysis type. Args:
network_id: Session id.
quality_type: One of |
| add_controlB | Add a new simple control rule. Example control strings:: Args: network_id: Session id. control_string: EPANET simple-control syntax string. |
| delete_controlA | Delete a simple control by its 1-based index. Args:
network_id: Session id.
control_index: 1-based index (use |
| create_demand_perturbationA | Apply base-demand multipliers to a set of nodes and optionally simulate. A clone of the source network is created; the original is unchanged. Args:
network_id: Source network id.
node_demands: |
| create_leakage_eventA | Simulate a pipe burst by adding a leakage emitter at the pipe midpoint. A clone of the source network is created; the original is unchanged. The burst pipe is split into two halves and a midpoint junction node with an emitter is added. Args: network_id: Source network id. pipe_id: Id of the pipe that bursts. leak_fraction: Fraction of flow that leaks (0.0–1.0). scenario_id: Id for the cloned scenario session. run_simulation: Run a full simulation after applying changes. |
| create_contamination_eventA | Inject a contaminant at a node for a specified time window and simulate. A clone of the source network is created. Quality type is set to CHEM automatically. Args:
network_id: Source network id.
source_node_id: Node where the contaminant is introduced.
concentration: Concentration in mg/L (or model quality units).
start_time_s: Injection start time in seconds.
end_time_s: Injection end time in seconds.
source_type: |
| create_pressure_change_scenarioA | Study pressure changes by modifying reservoir heads. A clone of the source network is created; the original is unchanged. Args:
network_id: Source network id.
reservoir_heads: |
| create_pump_control_scenarioA | Apply a time-based pump on/off or speed schedule and simulate. A clone of the source network is created; the original is unchanged. Each pump entry maps to a list of EPANET simple-control strings:: Args:
network_id: Source network id.
pump_schedule: |
| create_valve_control_scenarioA | Apply static valve-setting changes and simulate. A clone of the source network is created; the original is unchanged. Args:
network_id: Source network id.
valve_settings: |
| create_multi_failure_scenarioA | Simulate simultaneous pipe and/or pump failures (closure). A clone of the source network is created; the original is unchanged. Args: network_id: Source network id. failed_pipes: List of pipe ids to close. failed_pumps: List of pump ids to close. scenario_id: Id for the cloned scenario session. run_simulation: Run a full simulation after applying changes. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Applied-Artificial-Intelligence-Eurecat/epanet-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server