Query real-time and historical USGS water data from ~8,000 stream gages and groundwater wells.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Query real-time and historical water data from ~8,000 USGS stream gages and groundwater wells via MCP. STDIO or Streamable HTTP.
Public Hosted Server: https://usgs-water.caseyjhand.com/mcp
Five tools for querying USGS water data, plus two for SQL analytics over the DuckDB-backed canvas dataframes that water_get_series and water_find_sites materialize:
| Tool | Description |
|---|---|
water_list_parameters | Static lookup of well-known USGS parameter codes with names, units, and domain. No network call. |
water_find_sites | Find USGS monitoring sites by bounding box, state, county, or HUC watershed. Filter by site type and parameter availability. Large match sets spill to DataCanvas. |
water_get_readings | Get the latest instantaneous values (~15 min real-time) for up to 100 USGS sites. |
water_get_series | Get a time series of daily or instantaneous values for a site over a date range. Large ranges spill to DataCanvas. |
water_get_conditions | Get current hydrologic conditions ranked against the full period-of-record percentile statistics. |
water_dataframe_describe | List tables and columns staged on a DataCanvas by water_get_series or water_find_sites. |
water_dataframe_query | Run a read-only SQL SELECT against the time-series and site tables staged by water_get_series and water_find_sites. |
water_list_parametersStatic lookup of well-known USGS parameter codes β no network call, instant response.
00060 = Discharge (ftΒ³/s), 00065 = Gage height (ft), 00010 = Temperature (Β°C), 72019 = Depth to water level (ft), and morestreamflow, groundwater, temperature, meteorological, water-quality, or allwater_find_sitesDiscover USGS monitoring sites before calling data tools β all other tools require a site number.
"west,south,east,north" decimal degrees), 2-letter state code, bare 5-digit FIPS county code (e.g. 51013), or HUC watershed code β either a 2-digit major HUC (02) or an 8-digit minor HUC (02070008), the only two lengths NWIS acceptsST (stream), GW (groundwater well), LK (lake/reservoir), SP (spring), and more00060,00065)iv), daily (dv), or groundwater (gw) datatruncated flag and upstreamTotal (the full upstream count) so an oversized query never overflows the responseCANVAS_PROVIDER_TYPE=duckdb is set, the full match set is staged to a DuckDB-backed canvas β the response includes canvas_id and table_name to retrieve every match past the 500 cap via water_dataframe_query. Without DataCanvas, narrow the query with additional filters (county, HUC, bbox, parameter, data type) to bring the result under the capwater_get_readingsGet the latest instantaneous (~15 min) values for one or more USGS monitoring sites.
water_list_parametersPT2H = last 2 hours, P7D = last 7 days)totalValues reporting how many the period actually held and truncated flagging the cap. Use water_get_series when you need the full seriesmissingSites rather than dropped silentlyparameterCd=72019 (the legacy gwlevels endpoint was decommissioned November 2025 β use the IV service instead)water_get_seriesGet a historical time series for a site and parameter over a date range.
CANVAS_PROVIDER_TYPE=duckdb is set β response includes canvas_id and table_name for follow-up SQL via water_dataframe_querytruncated flag and totalRecords countcanvas_id to append data to an existing canvaswater_get_conditionsGet current hydrologic conditions placed in full historical context.
record-high (β₯ p95), above-normal (p75βp95), normal (p25βp75), below-normal (p10βp25), low (p05βp10), record-low (< p05)percentileLabel spelling out the threshold β record-high and record-low mark percentile-of-record extremes, not verified all-time records, and the label says so where the class name does notcomparisonBasis: the reading is instantaneous while the percentiles are approved daily-mean values, so the class is a "how unusual is this" ranking β not a flood-stage or drought determination, which need authoritative thresholds this tool does not fetchsite and parameterCd at the schema edge; a well-formed value NWIS still rejects surfaces as the typed invalid_request reason rather than an opaque upstream errorhistoricalContext: null and a historicalContextStatus saying why β no_record (new/short record), no_matching_day (no row for the date), or unavailable (stat call failed β transient and retryable, kept distinct from a sparse record)water_dataframe_describe / water_dataframe_queryIn-conversation SQL analytics over the dataframes that water_get_series and water_find_sites materialize on a DuckDB-backed canvas β time-series tables from the former, full site match sets from the latter.
Workflow:
water_get_series with a large date range, or water_find_sites with a query that matches more than 500 sites β when DataCanvas is enabled, the response includes canvas_id and table_namewater_dataframe_describe with the canvas_id to confirm the table schema β series tables carry date_time, value, qualifiers, site_number, parameter_cd, unit_code; site tables carry site_number, site_name, site_type, latitude, longitude, huc_cd, and the expanded fieldswater_dataframe_query with the canvas_id and a SELECT statement to run aggregates, filter, or joinRead-only by default β only SELECT statements are permitted. Results are capped at 10,000 rows; a query matching more comes back with truncated: true. Requires CANVAS_PROVIDER_TYPE=duckdb in the server environment.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/usgs-water-mcp-server)<a href="https://allmcps.com/mcp/usgs-water-mcp-server"><img src="https://allmcps.com/api/badge/usgs-water-mcp-server?style=directory" alt="Usgs Water MCP Server on AllMCPs" /></a>