
Hydrata - ANUGA Flood Simulation
Connects Claude to Hydrata Cloud for running ANUGA hydrodynamic flood simulations and retrieving results. You get tools to list projects, configure scenarios, start simulations on local or AWS compute backends (EC2 or Batch), poll run status, and pull back completed results. The typical flow is list your projects, pick a scenario, kick off a simulation, poll status until complete, then fetch the full run with timing and output. ANUGA itself is an open source shallow water equation solver from Geoscience Australia that runs on unstructured triangular meshes. Requires a Hydrata account. Useful if you're doing hydraulic modeling or flood risk analysis and want to script simulation runs through conversation.
- GitHub stars
- 1
- tools
- 42
- transport
- HTTP
- last updated
- Nov 3, 2026
Tools
42 toolsPublic tool metadata for what this MCP can expose to an agent.
list_projectsList ANUGA simulation projects (paginated)
List ANUGA simulation projects (paginated)
No parameter schema in public metadata yet.
get_projectGet one project — name, projection, visibility, your role, `base_map` — plus `ui_url`, the link that opens its map
Get one project — name, projection, visibility, your role, `base_map` — plus `ui_url`, the link that opens its map
No parameter schema in public metadata yet.
get_scenarioGet a scenario's compact state — `computed_status`, its inputs (terrain, boundary, friction, inflow, rainfall, building, mesh region, culvert, resolution, duration), the mesh-triangle estimate + breakdown, the price (`compute_cost_estimate`, `vcpu_hours_estimate`) and the late...
Get a scenario's compact state — `computed_status`, its inputs (terrain, boundary, friction, inflow, rainfall, building, mesh region, culvert, resolution, duration), the mesh-triangle estimate + breakdown, the price (`compute_cost_estimate`, `vcpu_hours_estimate`) and the late...
No parameter schema in public metadata yet.
start_simulationStart a flood simulation (local/EC2/Batch backends); the returned run record has its presigned download links elided; hand-back link opens the run. A run over the agent key's monthly spend limit (default $0), or one Hydrata cannot price, is not started: the tool relays Hydrata...
Start a flood simulation (local/EC2/Batch backends); the returned run record has its presigned download links elided; hand-back link opens the run. A run over the agent key's monthly spend limit (default $0), or one Hydrata cannot price, is not started: the tool relays Hydrata...
No parameter schema in public metadata yet.
get_run_statusLightweight status poll (<50ms); `phase` is never empty (`preparing_inputs` while a computing run has no progress yet)
Lightweight status poll (<50ms); `phase` is never empty (`preparing_inputs` while a computing run has no progress yet)
No parameter schema in public metadata yet.
get_runFull run details with timing, log and result layers; presigned `s3_*_url` download links are elided
Full run details with timing, log and result layers; presigned `s3_*_url` download links are elided
No parameter schema in public metadata yet.
get_flow_hydrographFlow (Q) across a line you draw, at every frame of a completed run: peak, time of peak, volume and a mass balance, from the run's playback store (the model's flow, not a gauge reading)
Flow (Q) across a line you draw, at every frame of a completed run: peak, time of peak, volume and a mass balance, from the run's playback store (the model's flow, not a gauge reading)
No parameter schema in public metadata yet.
cancel_runCancel an in-flight simulation; hand-back link opens the scenario
Cancel an in-flight simulation; hand-back link opens the scenario
No parameter schema in public metadata yet.
retry_runRetry a failed simulation (rebuilds the scenario as a new run); hand-back link opens the scenario
Retry a failed simulation (rebuilds the scenario as a new run); hand-back link opens the scenario
No parameter schema in public metadata yet.
list_runsList runs across a project (with status filter); presigned `s3_*_url` download links are elided from every row
List runs across a project (with status filter); presigned `s3_*_url` download links are elided from every row
No parameter schema in public metadata yet.
list_inputsEvery input row of a project per kind (boundary, friction, inflow, rainfall, building, mesh region, culvert) — row id, title, dataset, WFS typename and whether it has features — so the agent never has to probe files
Every input row of a project per kind (boundary, friction, inflow, rainfall, building, mesh region, culvert) — row id, title, dataset, WFS typename and whether it has features — so the agent never has to probe files
No parameter schema in public metadata yet.
list_time_seriesA project's time series — id, name, type, units, row count and first/last timestamp; the data rows are never returned
A project's time series — id, name, type, units, row count and first/last timestamp; the data rows are never returned
No parameter schema in public metadata yet.
create_projectCreate an ANUGA project with a name and EPSG projection; returns its `base_map` and the `ui_url` of its map
Create an ANUGA project with a name and EPSG projection; returns its `base_map` and the `ui_url` of its map
No parameter schema in public metadata yet.
presign_terrain_uploadReturn a presigned URL + key so the agent PUTs the terrain GeoTIFF itself (no file bytes pass through MCP)
Return a presigned URL + key so the agent PUTs the terrain GeoTIFF itself (no file bytes pass through MCP)
No parameter schema in public metadata yet.
finalize_terrain_uploadRegister the uploaded terrain; the import chain seeds the project's six default boundary/friction/inflow/rainfall/building/mesh-region rows (no culvert row: `attach_input_layer` creates 'Culvert 01' on demand)
Register the uploaded terrain; the import chain seeds the project's six default boundary/friction/inflow/rainfall/building/mesh-region rows (no culvert row: `attach_input_layer` creates 'Culvert 01' on demand)
No parameter schema in public metadata yet.
get_terrainPoll the terrain until it is ready (bounded; `timed_out` means call again); `phase` is never empty; summary = WGS84 bbox, elevation min/max, nodata fraction, native CRS; the link frames the DEM
Poll the terrain until it is ready (bounded; `timed_out` means call again); `phase` is never empty; summary = WGS84 bbox, elevation min/max, nodata fraction, native CRS; the link frames the DEM
No parameter schema in public metadata yet.
list_terrain_sourcesThe terrain Hydrata can fetch for a site, finest first (Copernicus GLO-30 worldwide, finer regional LiDAR such as Geoscience Australia 5 m where it has data), with coverage, size cap, vertical datum and licence
The terrain Hydrata can fetch for a site, finest first (Copernicus GLO-30 worldwide, finer regional LiDAR such as Geoscience Australia 5 m where it has data), with coverage, size cap, vertical datum and licence
No parameter schema in public metadata yet.
create_terrain_from_sourceHave Hydrata fetch, reproject and publish a DEM from one of those sources, then wait for the import like `get_terrain`
Have Hydrata fetch, reproject and publish a DEM from one of those sources, then wait for the import like `get_terrain`
No parameter schema in public metadata yet.
sample_terrainGround level at points (null where the terrain has no data), to place a culvert, inflow or boundary on the ground
Ground level at points (null where the terrain has no data), to place a culvert, inflow or boundary on the ground
No parameter schema in public metadata yet.
terrain_profileGround along a line (a cross-section) with the lowest sample, to find where a channel runs
Ground along a line (a cross-section) with the lowest sample, to find where a channel runs
No parameter schema in public metadata yet.
create_time_seriesCreate a time series (rain gauge, hydrograph or tide/stage — `series_type` and `units` are top-level fields) from `{"rowData": [...]}`; a rainfall polygon binds to its gauge by the series name; summary = row count + first/last timestamp; the link opens the Hydrology panel
Create a time series (rain gauge, hydrograph or tide/stage — `series_type` and `units` are top-level fields) from `{"rowData": [...]}`; a rainfall polygon binds to its gauge by the series name; summary = row count + first/last timestamp; the link opens the Hydrology panel
No parameter schema in public metadata yet.
update_time_seriesCorrect a time series (PATCH); the same validation as create, and a series a built scenario uses sends that scenario back for rebuild and review
Correct a time series (PATCH); the same validation as create, and a series a built scenario uses sends that scenario back for rebuild and review
No parameter schema in public metadata yet.
delete_time_seriesDelete a time series (Manager role); refused while a layer feature still uses it, naming the layer and feature
Delete a time series (Manager role); refused while a layer feature still uses it, naming the layer and feature
No parameter schema in public metadata yet.
attach_input_layerAttach a GeoJSON dataset the agent already uploaded as the project's boundary/friction/inflow/rainfall/building/mesh-region or culvert layer (kind `structure` = deprecated alias of `building`); culvert attributes are mapped onto the culvert fields with defaults filled, and `cu...
Attach a GeoJSON dataset the agent already uploaded as the project's boundary/friction/inflow/rainfall/building/mesh-region or culvert layer (kind `structure` = deprecated alias of `building`); culvert attributes are mapped onto the culvert fields with defaults filled, and `cu...
No parameter schema in public metadata yet.
describe_input_kindsWhat each input layer kind looks like (geometry, properties, allowed values, a minimal example), generated from the definitions the build reads
What each input layer kind looks like (geometry, properties, allowed values, a minimal example), generated from the definitions the build reads
No parameter schema in public metadata yet.
read_input_layerRead a project input layer's features as GeoJSON, each with its author (a person, or the agent that wrote it)
Read a project input layer's features as GeoJSON, each with its author (a person, or the agent that wrote it)
No parameter schema in public metadata yet.
write_input_layerWrite an input layer (boundary, friction, inflow, rainfall, building, mesh region or culvert) from GeoJSON sent in the call; `target` writes a separate row for a variant
Write an input layer (boundary, friction, inflow, rainfall, building, mesh region or culvert) from GeoJSON sent in the call; `target` writes a separate row for a variant
No parameter schema in public metadata yet.
request_input_uploadThe link where the person uploads a big input layer (over about 150 KB) in their browser: GeoJSON, zipped shapefile or GeoPackage up to 100 MB
The link where the person uploads a big input layer (over about 150 KB) in their browser: GeoJSON, zipped shapefile or GeoPackage up to 100 MB
No parameter schema in public metadata yet.
create_scenarioCreate a draft scenario and return its mesh-triangle estimate and price (`resolution` — scenario and mesh-region — is a length in metres); the link opens the scenario
Create a draft scenario and return its mesh-triangle estimate and price (`resolution` — scenario and mesh-region — is a length in metres); the link opens the scenario
No parameter schema in public metadata yet.
update_scenarioEdit a scenario's name, description, resolution, duration or attached inputs; never builds or runs, the changed scenario is marked stale
Edit a scenario's name, description, resolution, duration or attached inputs; never builds or runs, the changed scenario is marked stale
No parameter schema in public metadata yet.
clone_scenarioCopy a scenario into a sibling for a variant (no run copied, nothing built), with overrides checked before the copy is made
Copy a scenario into a sibling for a variant (no run copied, nothing built), with overrides checked before the copy is made
No parameter schema in public metadata yet.
build_scenarioBuild the scenario package; shows the estimate first and needs `confirm=true` above 100,000 triangles; polls `computed_status` to built; never re-posts a build that is in flight or already built (`rebuild=true` to force one); surfaces the server's 422 refusals (MESH_TOO_LARGE,...
Build the scenario package; shows the estimate first and needs `confirm=true` above 100,000 triangles; polls `computed_status` to built; never re-posts a build that is in flight or already built (`rebuild=true` to force one); surfaces the server's 422 refusals (MESH_TOO_LARGE,...
No parameter schema in public metadata yet.
create_observation_layerCreate a flood observation layer (project-level, never a scenario input) with its vertical datum (`terrain`, `AHD`, `EGM2008`, `ellipsoidal`, or `local` + `datum_offset_m`); waits for the map layer (`ready`, bounded); the link frames it in the Observations group
Create a flood observation layer (project-level, never a scenario input) with its vertical datum (`terrain`, `AHD`, `EGM2008`, `ellipsoidal`, or `local` + `datum_offset_m`); waits for the map layer (`ready`, bounded); the link frames it in the Observations group
No parameter schema in public metadata yet.
list_observationsA project's flood observation layers, or one layer's observations — `fid`, subtype, stage/depth, sigma, bound, observed window in UTC, datum status (`unknown` = not scored), `photo_count` and `problems`
A project's flood observation layers, or one layer's observations — `fid`, subtype, stage/depth, sigma, bound, observed window in UTC, datum status (`unknown` = not scored), `photo_count` and `problems`
No parameter schema in public metadata yet.
add_observationsAdd Flood marks, Timed levels, Gauge records and Dry points (up to 200 per call; `srid` for native coordinates, `entry_timezone` for naive times); the API validates each one, refused rows come back with the field that is wrong while the rest land
Add Flood marks, Timed levels, Gauge records and Dry points (up to 200 per call; `srid` for native coordinates, `entry_timezone` for naive times); the API validates each one, refused rows come back with the field that is wrong while the rest land
No parameter schema in public metadata yet.
update_observationEdit one observation (PATCH of the fields given; validated against the stored observation)
Edit one observation (PATCH of the fields given; validated against the stored observation)
No parameter schema in public metadata yet.
delete_observationDelete one observation and its photos
Delete one observation and its photos
No parameter schema in public metadata yet.
add_observation_photo_linkAttach a photo to an observation as a reference link only (stored, never fetched); a photo FILE is refused with the UI path — the engineer uploads files in the photo strip on the observation's form in the map
Attach a photo to an observation as a reference link only (stored, never fetched); a photo FILE is refused with the UI path — the engineer uploads files in the photo strip on the observation's form in the map
No parameter schema in public metadata yet.
get_observation_comparisonHow a historic run compares with the project's flood observations: `headline` (figures at a tolerance, 0.3 m default; no pass or fail), `statistics` (n, within, bias, RMSE, weighted RMSE, MAE, max), Gauge record peak/timing/NSE, datum checks and one row per observation (residu...
How a historic run compares with the project's flood observations: `headline` (figures at a tolerance, 0.3 m default; no pass or fail), `statistics` (n, within, bias, RMSE, weighted RMSE, MAE, max), Gauge record peak/timing/NSE, datum checks and one row per observation (residu...
No parameter schema in public metadata yet.
set_observation_exclusionExclude one observation from a run's comparison with the engineer's reason (required: the tool refuses a blank one and the agent must ask), or include it again; logged with user and reason; returns `headline_after`
Exclude one observation from a run's comparison with the engineer's reason (required: the tool refuses a blank one and the agent must ask), or include it again; logged with user and reason; returns `headline_after`
No parameter schema in public metadata yet.
set_comparison_toleranceSave the project's default comparison tolerance (metres, above 0 and at most 5; Editor+). `get_observation_comparison` uses it unless `tolerance` is passed, which saves nothing
Save the project's default comparison tolerance (metres, above 0 and at most 5; Editor+). `get_observation_comparison` uses it unless `tolerance` is passed, which saves nothing
No parameter schema in public metadata yet.
suggest_capabilityTell the Hydrata team about something the person asked for that no tool can do (read-only; the reply gives the words to say to the person; 20 a day per person)
Tell the Hydrata team about something the person asked for that no tool can do (read-only; the reply gives the words to say to the person; 20 a day per person)
No parameter schema in public metadata yet.
Sponsors
Readme
hydrata-mcp-server
MCP server for Hydrata Cloud — build ANUGA flood models from terrain and input layers, run simulations, track progress, and retrieve results through the Model Context Protocol.
Connect and authenticate
Endpoint: https://hydrata.com/mcp/ — Transport: Streamable HTTP.
Details
- Repository
- github.com/hydrata/hydrata-mcp-server
- Website
- hydrata.com/docs/mcp
- Transport
- HTTP
- Registry
- MCP registry, active