CAT
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Cross AI Tools

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by @mertduzgun

Independent project, not affiliated with Anthropic

Nws Weather Mcp Server

cyanheads/nws-weather-mcp-server
15 toolsSTDIO, HTTPregistry active
Summary

Connects Claude directly to the National Weather Service API with zero authentication required. You get seven tools covering the essentials: 7-day and hourly forecasts by coordinates, active alert searches with filtering by severity and event type, current observations from nearby stations, and narrative products like Area Forecast Discussions from any Weather Forecast Office. The coordinate-to-grid resolution happens automatically with caching, and observations come back in dual units. Useful when you need authoritative US weather data without managing API keys or parsing raw NOAA feeds. Available as a public hosted instance at nws.caseyjhand.com/mcp or self-hosted via npm.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

Tools

Public tool metadata for what this MCP can expose to an agent.

5 tools
nws_get_forecastGet the weather forecast for a US location. Returns either named 12-hour periods (default) or hourly breakdowns. Internally resolves coordinates to the NWS grid.3 params

Get the weather forecast for a US location. Returns either named 12-hour periods (default) or hourly breakdowns. Internally resolves coordinates to the NWS grid.

Parameters* required
hourlyboolean
If true, returns hourly forecast (~156 periods) instead of 12-hour named periods (14 periods). Hourly includes dewpoint and relative humidity.default: false
latitudenumber
Latitude in decimal degrees (e.g., 47.6062). Truncated to 4 decimal places.
longitudenumber
Longitude in decimal degrees (e.g., -122.3321). Truncated to 4 decimal places.
nws_search_alertsSearch active weather alerts (watches, warnings, advisories) across the US. Filter by state, coordinates, zone, event type, severity, urgency, or certainty. area, point, and zone are mutually exclusive. Omit all filters for a national search.8 params

Search active weather alerts (watches, warnings, advisories) across the US. Filter by state, coordinates, zone, event type, severity, urgency, or certainty. area, point, and zone are mutually exclusive. Omit all filters for a national search.

Parameters* required
areastring
US state/territory code (e.g., "WA", "OK", "PR") or marine area code (e.g., "GM"). Mutually exclusive with point and zone.
zonestring
NWS forecast zone (e.g., "WAZ558") or county zone (e.g., "WAC033"). Mutually exclusive with area and point.
eventarray
Filter to specific event types (e.g., ["Tornado Warning"]). Matches are case-insensitive and partial, so "tornado" matches both "Tornado Warning" and "Tornado Watch". Use nws_list_alert_types to discover valid names.
pointstring
Coordinates as "lat,lon" (e.g., "47.6,-122.3"). Returns alerts whose geometry contains this point. Mutually exclusive with area and zone.
statusstring
Alert status filter. Default "Actual". Use a different value only when you specifically need non-live alerts.one of Actual · Exercise · System · Test · Draftdefault: Actual
urgencyarray
Filter by urgency level.
severityarray
Filter by severity level.
certaintyarray
Filter by certainty level.
nws_get_observationsGet current weather observations (actual measured conditions). Accepts coordinates (resolves nearest station automatically) or a station ID directly (e.g., "KSEA").3 params

Get current weather observations (actual measured conditions). Accepts coordinates (resolves nearest station automatically) or a station ID directly (e.g., "KSEA").

Parameters* required
latitudenumber
Latitude for automatic station resolution. Use with longitude. Ignored if station_id is provided.
longitudenumber
Longitude for automatic station resolution. Use with latitude. Ignored if station_id is provided.
station_idstring
Station identifier directly (e.g., "KSEA", "KORD"). Use nws_find_stations to discover station IDs.
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.3 params

Find weather observation stations near a location. Returns stations sorted by proximity with distance and bearing. Use to discover station IDs for nws_get_observations.

Parameters* required
limitinteger
Max stations to return (1-50).default: 10
latitudenumber
Center latitude for proximity search.
longitudenumber
Center longitude for proximity search.
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.

List 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.

No parameter schema in public metadata yet.

@cyanheads/nws-weather-mcp-server

Get US weather forecasts, active alerts, and current observations via the National Weather Service API. STDIO or Streamable HTTP.

7 Tools • 1 Resource

Version License Docker MCP SDK npm TypeScript Bun

Install in Claude Desktop Install in Cursor Install in VS Code

Framework

Public Hosted Server: https://nws.caseyjhand.com/mcp


Tools

Seven tools for real-time US weather data:

ToolDescription
nws_get_forecast7-day or hourly forecast for coordinates. Resolves NWS grid internally.
nws_search_alertsActive weather alerts filtered by area, point, zone, event, severity, urgency, certainty, and status.
nws_get_observationsCurrent conditions by coordinates (nearest station) or station ID.
nws_find_stationsNearby observation stations sorted by distance with bearing.
nws_list_alert_typesAll valid alert event type names for filter discovery.
nws_get_office_discussionLatest narrative product (AFD, HWO, ZFP, SPS) from a Weather Forecast Office.
nws_get_zone_forecastText forecast periods for a public NWS forecast zone.

nws_get_forecast

Get the weather forecast for a US location.

  • Default returns named 12-hour periods (14 total, ~7 days)
  • Hourly mode returns up to 156 one-hour periods with dewpoint and humidity
  • Coordinates resolve to NWS grid internally via /points endpoint
  • Formatted timestamps use the resolved local time zone
  • Returns forecast zone and county zone codes for chaining into nws_search_alerts

nws_search_alerts

Search active weather alerts with flexible filtering.

  • Filter by area (state/territory/marine codes), point (lat,lon), zone, event type, severity, urgency, certainty, or status
  • area, point, and zone are mutually exclusive; specify at most one location filter
  • National search when no filters provided
  • Blank optional location filters are ignored so form-based clients can submit empty fields safely
  • Event matching is case-insensitive and partial, so "tornado" matches both watches and warnings
  • status defaults to live Actual alerts, but can be set to Exercise, System, Test, or Draft
  • Results capped at 25 with truncation notice and guidance to narrow filters
  • Validates area codes and point format before API call

nws_get_observations

Current measured conditions from a weather station.

  • Look up by coordinates (finds nearest station) or station ID directly
  • Blank or whitespace-only station_id values are ignored so clients can fall back to coordinates cleanly
  • Coordinate lookups choose the nearest station from the candidates returned by NWS
  • Dual-unit display: F/C, mph/km/h, inHg/hPa, mi/km
  • Observation timestamps use the station's local time zone when available
  • Warns when most measurements are unavailable from a station

nws_find_stations

Discover nearby observation stations.

  • Sorted by haversine distance from query point
  • Returns distance (km) and compass bearing
  • Includes zone codes, elevation, time zone
  • Useful for finding station IDs for nws_get_observations

nws_list_alert_types

List all valid NWS alert event type names.

  • Returns the full set of event types the NWS API recognizes (e.g., "Tornado Warning", "Heat Advisory")
  • Use to discover valid values for the event filter in nws_search_alerts

nws_get_office_discussion

Get the latest narrative product from a Weather Forecast Office (WFO).

  • office: 3-letter WFO code (e.g., SEW for Seattle) — returned as the office field by nws_get_forecast
  • product_type: AFD (Area Forecast Discussion, default), HWO (Hazardous Weather Outlook), ZFP (Zone Forecast Product), SPS (Special Weather Statement)
  • Two-hop fetch: lists products by office/type (newest first), then retrieves full product text
  • Returns productText plus issuanceTime, issuingOffice, productName, productCode, wmoCollectiveId
  • Unknown office returns a clear error with recovery instructions (the NWS API returns HTTP 200 with an empty list, not a 404)

nws_get_zone_forecast

Get the text forecast for a public NWS forecast zone.

  • zone_id: forecast zone code (e.g., WAZ315) — returned by nws_get_forecast (forecastZone), nws_find_stations (forecastZone column), and nws_search_alerts (affectedZones)
  • Returns named periods (e.g., "Today", "Tonight", "Monday") with narrative text from local forecasters
  • Completes the alert-to-forecast chain: look up alert zones, then retrieve zone forecasts
  • County zone codes (XXC###) are not supported — use the forecast zone code

Resources

URI PatternDescription
nws://alert-typesStatic list of all valid NWS alert event type names.

Features

Built on @cyanheads/mcp-ts-core:

  • Declarative tool definitions — single file per tool, framework handles registration and validation
  • Unified error handling across all tools
  • Pluggable auth (none, jwt, oauth)
  • Swappable storage backends: in-memory, filesystem, Supabase, Cloudflare KV/R2/D1
  • Structured logging with optional OpenTelemetry tracing
  • Runs locally (stdio/HTTP) or on Cloudflare Workers from the same codebase

NWS-specific:

  • Zero-auth access to the NWS API — no API keys required
  • Automatic coordinate-to-grid resolution with caching (1h TTL)
  • Request timeouts plus retry/backoff for transient NWS API failures
  • Dual-unit display for observations (F/C, mph/km/h, inHg/hPa, mi/km)
  • Continental US, Alaska, Hawaii, and US territories coverage

Getting started

Public Hosted Instance

A public instance is available at https://nws.caseyjhand.com/mcp — no installation required. Point any MCP client at it via Streamable HTTP:

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

Self-Hosted / Local

Add the following to your MCP client configuration file.

{
  "mcpServers": {
    "nws-weather-mcp-server": {
      "type": "stdio",
      "command": "bunx",
      "args": ["@cyanheads/nws-weather-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info"
      }
    }
  }
}

Or with npx (no Bun required):

{
  "mcpServers": {
    "nws-weather-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@cyanheads/nws-weather-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info"
      }
    }
  }
}

Or with Docker:

{
  "mcpServers": {
    "nws-weather-mcp-server": {
      "type": "stdio",
      "command": "docker",
      "args": ["run", "-i", "--rm", "-e", "MCP_TRANSPORT_TYPE=stdio", "ghcr.io/cyanheads/nws-weather-mcp-server:latest"]
    }
  }
}

For Streamable HTTP, set the transport and start the server:

MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
# Server listens at http://localhost:3010/mcp

Prerequisites

  • Node.js v24+ or Bun v1.3+

Installation

  1. Clone the repository:
git clone https://github.com/cyanheads/nws-weather-mcp-server.git
  1. Navigate into the directory:
cd nws-weather-mcp-server
  1. Install dependencies:
bun install

Configuration

VariableDescriptionDefault
NWS_USER_AGENTUser-Agent for NWS API requests. The API requires this header.(nws-weather-mcp-server, ...)
MCP_TRANSPORT_TYPETransport: stdio or http.stdio
MCP_HTTP_PORTPort for HTTP server.3010
MCP_HTTP_HOSTHostname for HTTP server.127.0.0.1
MCP_LOG_LEVELLog level: debug, info, notice, warning, error.info

See .env.example for the full list including auth, storage, and OpenTelemetry options.

Running the server

Local development

  • Build and run the production version:

    # One-time build
    bun run rebuild
    
    # Run the built server
    bun run start:http
    # or
    bun run start:stdio
    
  • Run checks and tests:

    bun run devcheck     # Lints, formats, type-checks
    bun run test         # Runs test suite
    

Project structure

DirectoryPurpose
src/mcp-server/tools/definitions/Tool definitions (*.tool.ts).
src/mcp-server/resources/definitions/Resource definitions (*.resource.ts).
src/services/nws/NWS API client and response types.
src/config/Environment variable parsing and validation with Zod.

Development guide

See CLAUDE.md for development guidelines and architectural rules. The short version:

  • Handlers throw, framework catches — no try/catch in tool logic
  • Use ctx.log for domain-specific logging, ctx.state for storage
  • Add new tools/resources to the barrel exports and the createApp() arrays in src/index.ts

Contributing

Issues and pull requests are welcome. Run checks before submitting:

bun run devcheck
bun run test

License

Apache-2.0 — see LICENSE for details.

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

Configuration

NWS_USER_AGENTdefault: (nws-weather-mcp-server, github.com/cyanheads/nws-weather-mcp-server)

User-Agent header for NWS API requests. The API requires this header but a default is provided.

MCP_LOG_LEVELdefault: info

Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').

MCP_HTTP_HOSTdefault: 127.0.0.1

The hostname for the HTTP server.

MCP_HTTP_PORTdefault: 3010

The port to run the HTTP server on.

MCP_HTTP_ENDPOINT_PATHdefault: /mcp

The endpoint path for the MCP server.

MCP_AUTH_MODEdefault: none

Authentication mode to use: 'none', 'jwt', or 'oauth'.

Registryactive
Package@cyanheads/nws-weather-mcp-server
TransportSTDIO, HTTP
UpdatedJun 2, 2026
View on GitHub