Skip to main content

nws-weather-mcp-server

io.github.cyanheads/nws-weather-mcp-serverVersion 0.12.1

Get US weather forecasts, active and recent alerts, and current observations.

Status

Responds586 msAnswered our handshake without sign-in.

Registry data may be out of date

We could not refresh it, so this page shows the last copy.
Last checked
Nov 14, 2026, 14:48 UTC
Latency
586 ms
Remotes responding
1 of 1
Sign-in
No sign-in
Hosting
Hosted outside the EU (detected)
Registry data as of
Nov 14, 2026, 22:14 UTC

Data from the official MCP Registry, checked by run.zero. How we check

Connect

Streamable HTTP
https://nws.caseyjhand.com/mcpResponds586 ms
No sign-in

Claude Code

claude mcp add --transport http nws-weather-mcp-server https://nws.caseyjhand.com/mcp

Claude Desktop and claude.ai

Settings > Connectors > Add custom connector
Name: nws-weather-mcp-server
Remote MCP server URL: https://nws.caseyjhand.com/mcp

Cursor

{
  "mcpServers": {
    "nws-weather-mcp-server": {
      "url": "https://nws.caseyjhand.com/mcp"
    }
  }
}

VS Code

code --add-mcp '{"name":"nws-weather-mcp-server","type":"http","url":"https://nws.caseyjhand.com/mcp"}'
Streamable HTTP
npm: @cyanheads/nws-weather-mcp-server 0.12.1
Package only

npm (npx)

claude mcp add nws-weather-mcp-server -- npx -y @cyanheads/nws-weather-mcp-server@0.12.1
Streamable HTTP
npm: @cyanheads/nws-weather-mcp-server 0.12.1
Package only

npm (npx)

claude mcp add nws-weather-mcp-server -- npx -y @cyanheads/nws-weather-mcp-server@0.12.1

Built your own server? run.zero hosts MCP servers on European infrastructure.

Host your own MCP server on run.zero

Tools

10 tools

Tools of nws-weather-mcp-server
Read-only
Idempotent
Open world
nws_find_stationsFind weather observation stations near a location. Returns stations sorted by proximity with distance and bearing. Use to discover station IDs for nws_get_observations.Not declaredYesNot declaredNot declared
nws_get_alertFetch one NWS alert message by ID — a current alert, or an earlier message that an update or cancellation has since superseded and that an active-alert search no longer returns. Takes an id from nws_search_alerts or a references[].identifier from any alert, and returns the same alert fields nws_search_alerts does. The message carries its own references, newest first, so a revision chain is walked one call per message. Every reference sharing the newest sent time is an immediate predecessor (an update can merge several earlier segments), so references[0] is one of them, not always the only one. NWS serves messages for about 7 days after they are sent.Not declaredYesNot declaredNot declared
nws_get_alert_countsCount active weather alerts nationwide, per state/territory or marine area, and per marine region, in one small response — the answer to "how many alerts are active, and where" without fetching the alerts themselves. Counts cover every message status, Test and Exercise included, so totalAlerts can run above the totalCount a national nws_search_alerts search reports under its default status of Actual. An alert counts once in each area its zones fall in, so the area counts can sum past totalAlerts; landAlerts plus marineAlerts equals totalAlerts. Takes no filters. For counts per zone or under a filter, call nws_search_alerts with that zone or filter and read its totalCount.Not declaredYesNot declaredNot declared
nws_get_forecastGet the weather forecast for a US location. Returns either named 12-hour periods (default) or hourly breakdowns.Not declaredYesNot declaredNot declared
nws_get_observation_historyGet a station's recent observation history, newest first — the trend behind the single latest reading nws_get_observations returns (is pressure falling, is the wind picking up). NWS keeps about the last 7 days per station, and a busy airport station reports as often as every 5 minutes, so a day can run past 100 observations: narrow with start (inclusive) and end (exclusive), and page back to older observations with nextCursor. Takes a station ID; use nws_find_stations to find one near a coordinate.Not declaredYesNot declaredNot declared
nws_get_observationsGet current weather observations (actual measured conditions). Accepts coordinates (resolves nearest station automatically) or a station ID directly (e.g., "KSEA").Not declaredYesNot declaredNot declared
nws_get_office_discussionGet the latest narrative forecast product from a Weather Forecast Office (WFO). The default product is AFD (Area Forecast Discussion), which explains the meteorological reasoning behind the forecast — synoptic setup, model guidance, and forecaster confidence. Other types: HWO (Hazardous Weather Outlook, 1-7 day severe/flood/winter outlook), ZFP (Zone Forecast Product, zone-by-zone text), SPS (Special Weather Statement, short-fuse advisory), FWF (Fire Weather Planning Forecast, one segment per fire weather zone). The office code is the 3-letter WFO identifier returned as the "office" field by nws_get_forecast. A product over 24,000 bytes (most ZFPs and FWFs) comes back as an outline of its sections — AFD section names, or ZFP/HWO/SPS/FWF zone segments with their area names — with each section's size, instead of the text; re-call with sections to get the ones you need. sections also works on a product of any size, to read one AFD section or one zone's forecast. For an alert zone typed "fire" (Red Flag Warning, Fire Weather Watch), pass the alert's "office" field as office, product_type "FWF", and the zone code in sections. The newest product on file can be past its expiry time, and a notice then names it: an SPS usually is, so for statements in effect now use nws_search_alerts with event ["Special Weather Statement"].Not declaredYesNot declaredNot declared
nws_get_zone_forecastGet the text forecast for an NWS forecast zone. Returns named forecast periods (e.g., "Today", "Tonight", "Monday") with detailed narrative text — the human-readable, zone-level forecast written by local forecasters. Completes the alert-to-forecast chain: nws_search_alerts returns each affected zone in "affectedZones" as a code plus a type, and nws_find_stations returns codes in the "forecastZone" column. Only affectedZones entries with type "forecast" work here; entries typed "county" have no text forecast upstream and will not resolve. An entry typed "fire" has its forecast in a segment of the office's Fire Weather Planning Forecast: call nws_get_office_discussion with office set to the alert's "office" field, product_type "FWF", and sections set to the zone code; a fire zone code that is also a public zone code (e.g., "NDZ040") returns that public zone's forecast here, not the fire weather forecast. Marine zones vary by family: coastal zones on an ocean coast, bay, or sound (codes starting AMZ, ANZ, GMZ, PHZ, or PZZ, e.g., "PZZ251") usually serve a text forecast of wind and seas, while Great Lakes, most Alaska, Guam, American Samoa, and offshore zones (e.g., "GMZ056") have none. Zone codes follow the pattern XXZ### (e.g., "WAZ315" for the City of Seattle).Not declaredYesNot declaredNot declared
nws_list_alert_typesList all valid NWS alert event type names. Use to discover valid values for the event filter in nws_search_alerts, or to browse alert categories. No parameters required.Not declaredYesNot declaredNot declared
nws_search_alertsSearch weather alerts (watches, warnings, advisories) across the US: the alerts active now, or — with start and/or end — every alert message issued in that window within the last 7 days, updates and cancellations included, to answer whether a place was under a warning at a past time. Filter by state, coordinates, zone, land/marine region, event type, severity, urgency, certainty, or message type. area, point, zone, region_type, and region are mutually exclusive — provide at most one. Omit all filters for a national search.Not declaredYesNot declaredNot declared

Details

Registry status
Active
Published
Nov 11, 2026
Updated
Nov 11, 2026
Website
Not given
Categories (suggested)
Data and analyticsSuggested categories are assigned automatically from the registry text and may be wrong. Verified operators can correct them.
GDPR
Not declared

Are you the operator? Claim this listing