mcpbeat Sign in

Usgs Water MCP Server

answering

Usgs Water MCP Server is answering right now. Last checked 10 min ago. 517 installs a week from npm. It exposes 8 tools. Last commit 29 Oct 2026.

Query real-time and historical USGS water data from ~8,000 stream gages and groundwater wells.

Installs per day peak 235 · avg 36 · +254% w/w
a month agotoday
Uptime history 91 days of history · worst day 0%
91 days agonow
100.0%
Uptime 24h
91 of 91 checks
8
Tools
read from the server
517 ms
Response time
average over 24h
517
Installs / week
npm and PyPI

What changed 32

Every tool that appeared, vanished or quietly changed what it asks for. Recorded since 23 August 2026. No other catalogue keeps this.

29 Oct a tool changed version
20 Oct a tool appeared water_get_site_data_catalog
20 Oct a tool changed version
4 Oct 2 tool descriptions were rewritten water_dataframe_describe, water_dataframe_query
4 Oct a tool changed version
25 Sep 4 tool descriptions were rewritten water_get_conditions, water_get_readings, water_get_series and 1 more
25 Sep 3 tools changed the parameters they ask for water_get_readings, water_get_series, water_list_parameters
25 Sep a tool changed version
22 Sep 2 tool descriptions were rewritten water_find_sites, water_get_series
22 Sep 2 tools changed the parameters they ask for water_find_sites, water_get_series
and 14 more, back to 23 August 2026

Usgs Water MCP Server missed one check this week

Everything else answered, so this is steady rather than shaky. We check every 15 minutes, which is how a one-off gets told apart from the start of a pattern, and how you hear about the next one within the hour instead of from your users.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 10 min ago.

run in your terminal
claude mcp add usgs-water-mcp-server --transport http https://usgs-water.caseyjhand.com/mcp
Settings → Connectors → Add custom connector, then paste this address
https://usgs-water.caseyjhand.com/mcp
~/.codex/config.toml
[mcp_servers.usgs-water-mcp-server]
url = "https://usgs-water.caseyjhand.com/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "usgs-water-mcp-server": {
      "url": "https://usgs-water.caseyjhand.com/mcp"
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "usgs-water-mcp-server": {
      "type": "http",
      "url": "https://usgs-water.caseyjhand.com/mcp"
    }
  }
}

Available tools 8

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

water
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_dataframe_drop (when this server enables it) to remove a table you no longer need. Requires DataCanvas to be enabled on this server instance. Returns an error if DataCanvas is not available.
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), then optionally water_dataframe_drop (when this server enables it) to remove a table you are done with. Only SELECT statements are permitted. At most 10,000 rows are returned; a query matching more is capped and the response sets truncated=true — scope with WHERE/LIMIT, and use SELECT COUNT(*) or water_dataframe_describe to learn the true match count. Requires DataCanvas to be enabled on this server instance. Returns an error if DataCanvas is not available.
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_get_conditions all require a site number. Supply exactly one major filter — bbox, stateCd, countyCd, or huc; siteType, parameterCd, and hasDataTypeCd only narrow within it and cannot stand alone. Page through matches with limit/offset (500 per page); truncated=true means matches remain after the returned window and upstreamTotal holds the full count. When the match set exceeds 500 and DataCanvas is enabled, the complete set also stages to a canvas (canvas_id/table_name) — inspect it with water_dataframe_describe, then retrieve it with water_dataframe_query.
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 is instantaneous but the percentiles are daily-mean, so the ranking is approximate (see historicalContext.comparisonBasis). When the record is too short to rank, returns the reading with historicalContext=null instead of an error. A reading NWIS reports as no data (a seasonal, discontinued, dry, or malfunctioning gage) returns an empty currentValue with the qualifiers naming why, and is not ranked. When the site measures the parameter with several sensors (methods), one reading is used and named by methodId/methodDescription — from the sensor its percentile series is described as when one is, otherwise the most recent across them; water_get_readings lists every method. Use water_find_sites and water_list_parameters to resolve inputs.
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 several sensors returns one series per method, each named by methodId and methodDescription. At most 100 series return per call — every site that returned data keeps at least one, and totalSeries reports how many NWIS returned; pass parameterCd or split the sites across calls to reach the rest. Each series returns only its 10 most recent records (totalValues reports the true count); truncated=true when either cap applied. Use water_get_series for a full date-range series. Sites NWIS returns nothing for are listed in missingSites, not dropped silently. Use water_find_sites first to discover site numbers and available parameters.
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, and lists the rest in otherSeries so any can be re-requested with the statCd and methodId inputs. By default it returns the daily mean when NWIS returns one with values, and the method with the most records. Large sets (>500 records) return the most recent records inline with truncated=true — the last 500 without DataCanvas, and with DataCanvas enabled the complete series also spills to a canvas (canvas_id/table_name): inspect the staged table with water_dataframe_describe, then read the full series with water_dataframe_query. Use water_find_sites and water_list_parameters to resolve inputs.
water_get_site_data_catalog
Discover a USGS site’s parameters, sensors, statistics, and UTC record bounds before calling water_get_series. Find site numbers with water_find_sites. Each row is a distinct series; metadata bounds may contain gaps and lag observations. For water_get_series, take YYYY-MM-DD from beginDate/endDate, pass statCd only for daily rows, and obtain methodId from a water_get_series response; timeSeriesId is an OGC identifier, never an NWIS methodId. Rows with null seriesType are other computations and cannot be requested with water_get_series. Follow nextCursor with the same filters and limit until null.
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" (°C), 72019 = "Depth to water level" (ft), and others; filter it with group. For anything else — turbidity, nitrate, chlorophyll, suspended sediment, salinity — pass query to search the full USGS parameter-code catalog (~19,600 codes) by name and description, or pass a 5-digit code to look it up. A query returns at most 25 entries, matching curated codes first, with total counting every match.

Endpoints

URLTransportStateLatencyChecked
https://usgs-water.caseyjhand.com/mcp streamable-http answering 495 ms 10 min ago

Alternatives to Usgs Water MCP Server

same job, measured the same way
U
USGS Water Monitoring
by olyport

Real-time water levels and flow rates from USGS stream gauges

3 tools answering
Pondlog USGS Water
by andrewschristison

USGS Water Services MCP server. Real-time streamflow, gage height, and site metadata from NWIS.

67 installs/wk local only
Yahoo Finance MCP Server
by thenextgennexus

Get real-time stock quotes, historical data, and compare stocks via Yahoo Finance

36 installs/wk local only
AllNewsAPI
by allnewsapi

Get access to real-time and historical news data including top headlines from global sources

72 installs/wk answering
Graylog MCP Server
by jperelli

Query logs from Graylog: get streams, search messages, aggregate, and get full data.

91 installs/wk local only
Exchange Rates MCP Server
by cyanheads

Convert currencies, get FX rates, and query historical Frankfurter v1 exchange rate data.

484 installs/wk 7 tools answering
HutchDB
by hutchdb

Store, query, and update structured data from any AI agent

answering
Historical Baseball
by pipeworx-io

historical-baseball -- MLB history from Retrosheet game logs and the SABR Lahman Baseball Database…

386 installs/wk 49 tools answering

Usgs Water MCP Server — questions

Answers built from our own checks of this server.

What can Usgs Water MCP Server do?
It exposes 8 tools, read directly from the server on our last check. Among them: water_dataframe_describe, water_dataframe_query, water_find_sites, water_get_conditions, water_get_readings, water_get_series and 2 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
Is Usgs Water MCP Server working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 91 of 91 checks got a reply (100.0%), average response time 517 ms. The bar chart above shows every period we have measured.
How do I connect Usgs Water MCP Server?
Copy the ready config from this page. We generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each in the form that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does Usgs Water MCP Server need an API key?
No. Usgs Water MCP Server completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 8 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is Usgs Water MCP Server?
It answers our handshake in 517 ms on average, which is faster than 23% of all working MCP servers we measure. That is on the slow side — worth knowing if the tool sits inside an interactive loop. The comparison comes from our own checks across the whole registry, every 15 minutes.
How many people use Usgs Water MCP Server?
The npm package @cyanheads/usgs-water-mcp-server was installed 517 times in the last week. Week over week that is +254%. We show installs rather than GitHub stars on purpose: a star is a bookmark, an install is someone actually running it.
Is Usgs Water MCP Server open source?
The code is open source: it is published under the Apache-2.0 licence, written in TypeScript, 3 stars on GitHub and 3 open issues. The licence covers the code in the repository, not the hosted service at usgs-water.caseyjhand.com, which runs on its operator's own terms.