io.github.cyanheads/usgs-water-mcp-server · v0.3.0 · data-and-databases
io.github.cyanheads/usgs-water-mcp-server is healthy: it completed an MCP handshake in 531 ms and exposes 7 tools.
Query real-time and historical USGS water data from ~8,000 stream gages and groundwater wells.
Endpoint: https://usgs-water.caseyjhand.com/mcp (streamable-http)
Repository · JSON · Add to my inventory
| Users (last 30 days) | 0 |
| Handshake | Healthy |
| Auth needed | None |
| Tool count | 7 |
| Latency | 531 ms |
| Last checked (UTC) | 2026-10-16T07:20:36.955Z |
| Checked (UTC) | Status | Latency | Error |
|---|---|---|---|
| 2026-10-16T07:20:36.955Z | Healthy | 531 | |
| 2026-10-15T03:25:51.873Z | Healthy | 2825 |
water_list_parameters | Look up USGS parameter codes — the 5-digit codes every other tool's parameterCd takes. With no query, lists a curated set of well-known codes with names, units, and thematic group, from a built-in table (no network call): 00060 = "Discharge" (ft³/s), 00065 = "Gage height" (ft), 00010 = "Temperature, |
water_find_sites | Find USGS water monitoring sites by bounding box, state, county, or HUC watershed code, filtered by site type and parameter availability. Returns site numbers, names, coordinates, types, altitude, and (in expanded mode) drainage area. Call this first — water_get_readings, water_get_series, and water |
water_get_readings | Get the latest instantaneous (~15-min, real-time) values for up to 100 USGS sites in one call — per-site, per-parameter records with timestamp, value, unit, and provisional/approved qualifiers. Omitting parameterCd returns every parameter each site publishes. A site measuring one parameter with seve |
water_get_series | Get a daily or instantaneous time series for one USGS site and parameter over a date range, as time-ordered value records. NWIS can hold several series for one query — one per daily statistic (mean, maximum, minimum) and one per sensor (method); this returns one, reporting its statCd and methodId, a |
water_get_conditions | Get a USGS site's current reading ranked against its full period-of-record daily-mean percentiles for the same calendar day — a "how unusual is this" percentileClass (record-high to record-low), not a flood-stage or drought determination (this tool fetches no authoritative thresholds). The reading i |
water_dataframe_query | Run a read-only SQL SELECT against water data tables staged on a DataCanvas by water_get_series or water_find_sites. Workflow: run water_get_series or water_find_sites (get canvas_id + table_name) → water_dataframe_describe (confirm the table and its columns) → water_dataframe_query (SQL analysis), |
water_dataframe_describe | List tables and columns staged on a DataCanvas by water_get_series or water_find_sites. Call this after water_get_series or water_find_sites returns a canvas_id to discover the exact table name and column types before writing a query. Then pass the table name to water_dataframe_query, or to water_da |