mcpbeat

Usgs Water MCP Server

io.github.cyanheads/usgs-water-mcp-server
answering

Usgs Water MCP Server is answering right now. Last checked 10 min ago. 69 installs a week from npm. It exposes 7 tools. Last commit 30 Jul 2026.

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

Installs per day peak 739 · avg 60 · -66% w/w
a month agotoday
Uptime history 41 hours of history · worst hour 75%
41 hours agonow
100.0%
Uptime 24h
91 of 91 checks
7
Tools
read from the server
402 ms
Response time
average over 24h
69
Installs / week
npm and PyPI

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
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "usgs-water-mcp-server": {
      "url": "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
{
  "mcpServers": {
    "usgs-water-mcp-server": {
      "url": "https://usgs-water.caseyjhand.com/mcp"
    }
  }
}

Available tools 7

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. 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). 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. Capped at 500 sites inline; when truncated=true, upstreamTotal holds the full count and, if DataCanvas is enabled, the complete match set stages to a canvas (canvas_id/table_name) for retrieval via water_dataframe_query — otherwise narrow the filters to get all matches.
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. 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. Each series returns only its 10 most recent records (totalValues reports the true count; truncated=true if any were capped); 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. Large sets (>500 records) return the most recent 500 with truncated=true; with DataCanvas enabled they instead spill to a canvas (canvas_id/table_name) for SQL via water_dataframe_query. Use water_find_sites and water_list_parameters to resolve inputs.
water_list_parameters
List well-known USGS parameter codes with human-readable names, units, and thematic domain — a static, built-in catalog. Use this first to discover that 00060 = "Discharge" (ft³/s), 00065 = "Gage height" (ft), 00010 = "Temperature, water" (°C), 72019 = "Depth to water level" (ft), etc. Filter by group to narrow results.

Endpoints

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

Usgs Water MCP Server — questions

Answers built from our own checks of this server.

What can Usgs Water MCP Server do?
It exposes 7 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 1 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 402 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 with the file path 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 7 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 402 ms on average, which is faster than 33% of all working MCP servers we measure. 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 69 times in the last week. Week over week that is -66%. 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?
Yes — it is published under the Apache-2.0 licence, written in TypeScript and 1 stars on GitHub. The source link is on this page, so you can read exactly what it does with your data before you connect it.