epanet-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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