nws-weather-mcp-server
io.github.cyanheads/nws-weather-mcp-serverVersion 0.12.1Get US weather forecasts, active and recent alerts, and current observations.
Status
Responds586 msAnswered our handshake without sign-in.- 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 msNo sign-in
Claude Code
claude mcp add --transport http nws-weather-mcp-server https://nws.caseyjhand.com/mcpClaude Desktop and claude.ai
Settings > Connectors > Add custom connector
Name: nws-weather-mcp-server
Remote MCP server URL: https://nws.caseyjhand.com/mcpCursor
{
"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.1Package only
npm (npx)
claude mcp add nws-weather-mcp-server -- npx -y @cyanheads/nws-weather-mcp-server@0.12.1Streamable HTTP
npm: @cyanheads/nws-weather-mcp-server 0.12.1Package only
npm (npx)
claude mcp add nws-weather-mcp-server -- npx -y @cyanheads/nws-weather-mcp-server@0.12.1Built your own server? run.zero hosts MCP servers on European infrastructure.
Tools
10 tools
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 declared | Yes | Not declared | Not 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 declared | Yes | Not declared | Not 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 declared | Yes | Not declared | Not declared |
nws_get_forecastGet the weather forecast for a US location. Returns either named 12-hour periods (default) or hourly breakdowns. | Not declared | Yes | Not declared | Not 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 declared | Yes | Not declared | Not 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 declared | Yes | Not declared | Not 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 declared | Yes | Not declared | Not 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 declared | Yes | Not declared | Not 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 declared | Yes | Not declared | Not 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 declared | Yes | Not declared | Not 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