# Weather Data MCP Server (npm · @dangahagan/weather-mcp)

17 weather tools, no API keys: forecasts, alerts, air quality, marine, radar, lightning, wildfires

- Trust score: 71/100 (medium)
- Change this week: +36
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `@dangahagan/weather-mcp`: 71/100 (this document), [markdown](https://verifymcp.io/servers/dgahagan-weather-mcp/dangahagan-weather-mcp.md), [page](https://verifymcp.io/servers/dgahagan-weather-mcp/dangahagan-weather-mcp)

## Channel facts

- Registry: `npm`
- Package: `@dangahagan/weather-mcp`
- Version: `1.13.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 88/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (153 of 154), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (153 of 154), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 71/100
  - Repository check failed: no source repository is declared.
  - Cryptographically verified build provenance (signed, bound to weather-mcp/weather-mcp).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 16 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 56/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2586 tokens (~431/item across 6 items; 6 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add dgahagan-weather-mcp -- npx -y @dangahagan/weather-mcp
```

### Codex

```bash
codex mcp add dgahagan-weather-mcp -- npx -y @dangahagan/weather-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "dgahagan-weather-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@dangahagan/weather-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add dgahagan-weather-mcp --command npx --arg -y --arg @dangahagan/weather-mcp
```

### Hermes

```yaml
mcp_servers:
  dgahagan-weather-mcp:
    command: "npx"
    args: ["-y", "@dangahagan/weather-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "dgahagan-weather-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@dangahagan/weather-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 71, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-08-02 (score 70, +55)

- [security improvement] Known CVEs: unverified → partial
- [security improvement] Install scripts: unverified → pass
- [security improvement] Provenance: unverified → pass
- [security] The attested source repository moved: weather-mcp/weather-mcp
- [functional regression] Security disclosure: unverified → fail
- [functional improvement] Schema quality: unverified → excellent
- [functional improvement] License: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Stability: unverified → 0.23
- [functional improvement] Tool coverage: unverified → 100
- [functional] Licence: MIT

### 2026-08-01 (score 15, +3)

- [security improvement] Malware scan: unverified → pass
- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified

### 2026-07-31 (score 12, −23)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-27 (score 35)

First indexed and scored.

## MCP tools (6)

### `get_weather_summary` (~598 tokens)

Get a combined weather overview for a location in a SINGLE call. Best for broad questions like "What's the weather like in Seattle?", "Is it safe to hike today?", or "Give me a weather rundown". Aggregates current conditions, forecast, and active alerts by default, and can also include air quality and lightning. Provide the location as coordinates (latitude+longitude), a saved location_name, or a free-text city_name. For a single specific data product (just the forecast, just alerts, etc.), call that specialized tool directly. Sections that are unavailable for a location (e.g. US-only alerts abroad) are noted rather than failing the whole summary.

Input parameters:

- `city_name` (string): Free-text place name to geocode (e.g., "Paris, France", "Bend, Oregon"). Use instead of coordinates when you only have a place name and it is not a saved location. Include state/country for disambigu…
- `days` (number): Number of forecast days to include when the forecast section is requested (1-16, default: 7)
- `detail` (string): Output verbosity: "summary" (shortest), "standard" (default, balanced), or "full" (everything the source provides, e.g. full alert descriptions, uncapped hourly forecast, embedded imagery).
- `distance_unit` (string): Override distance/visibility/elevation unit: "mi" or "km".
- `include` (array): Which sections to include (default: ["current", "forecast", "alerts"]). Add "air_quality" and/or "lightning" for a fuller picture.
- `latitude` (number): Latitude of the location (-90 to 90). Not required if location_name or city_name is provided.
- `location_name` (string): Name of a saved location (e.g., "home", "cabin"). Use instead of coordinates to reference a saved location. List them with list_saved_locations.
- `longitude` (number): Longitude of the location (-180 to 180). Not required if location_name or city_name is provided.
- `precipitation_unit` (string): Override precipitation unit: "inch" or "mm".
- `pressure_unit` (string): Override pressure unit: "inHg" or "hPa".
- `temperature_unit` (string): Override temperature unit: "F" or "C".
- `time_format` (string): Clock format for times: "12h" or "24h".
- `units` (string): Unit system for output: "imperial" (°F, mph, inHg) or "metric" (°C, km/h, hPa). Defaults to the server setting (imperial unless configured otherwise). Individual *_unit overrides below take precedenc…
- `wind_speed_unit` (string): Override wind speed unit: "mph", "kmh", "ms", or "kn" (knots).

### `get_forecast` (~797 tokens)

Get future weather forecast for a location (global coverage). Use this for upcoming weather predictions (e.g., "tomorrow", "this week", "next 7 days", "hourly forecast"). Returns forecast data including temperature, precipitation, wind, conditions, and sunrise/sunset times. Supports both daily and hourly granularity. Automatically selects best data source: NOAA for US locations (more detailed), Open-Meteo for international locations. For current weather, use get_current_conditions. For past weather, use get_historical_weather. Provide the location in ONE of three ways: coordinates (latitude+longitude), a saved location name (location_name="home"), or a free-text city name (city_name="Paris, France") which is geocoded automatically. If this tool returns an error, check the error message for status page links and consider using check_service_status to verify API availability.

Input parameters:

- `city_name` (string): Free-text place name to geocode (e.g., "Paris, France", "Bend, Oregon"). Use instead of coordinates when you only have a place name and it is not a saved location. Include state/country for disambigu…
- `days` (number): Number of days to include in forecast (1-16 for global, 1-7 for US NOAA, default: 7)
- `detail` (string): Output verbosity: "summary" (shortest), "standard" (default, balanced), or "full" (everything the source provides, e.g. full alert descriptions, uncapped hourly forecast, embedded imagery).
- `distance_unit` (string): Override distance/visibility/elevation unit: "mi" or "km".
- `granularity` (string): Forecast granularity: "daily" for day/night periods or "hourly" for hour-by-hour detail (default: "daily")
- `include_normals` (boolean): Include climate normals (30-year averages) for comparison with forecasted temperatures (default: false, daily forecasts only). Shows normal high/low and departure from normal for the first forecast d…
- `include_precipitation_probability` (boolean): Include precipitation probability in the forecast output (default: true)
- `include_severe_weather` (boolean): Include severe weather probabilities such as thunderstorm chance, wind gust probabilities, and tropical storm/hurricane risks (default: false, US/NOAA only)
- `latitude` (number): Latitude of the location (-90 to 90). Not required if location_name or city_name is provided.
- `location_name` (string): Name of a saved location (e.g., "home", "cabin"). Use instead of coordinates to reference a saved location. List them with list_saved_locations.
- `longitude` (number): Longitude of the location (-180 to 180). Not required if location_name or city_name is provided.
- `precipitation_unit` (string): Override precipitation unit: "inch" or "mm".
- `pressure_unit` (string): Override pressure unit: "inHg" or "hPa".
- `source` (string): Data source: "auto" (default, selects NOAA for US or Open-Meteo for international), "noaa" (US only), or "openmeteo" (global)
- `temperature_unit` (string): Override temperature unit: "F" or "C".
- `time_format` (string): Clock format for times: "12h" or "24h".
- `units` (string): Unit system for output: "imperial" (°F, mph, inHg) or "metric" (°C, km/h, hPa). Defaults to the server setting (imperial unless configured otherwise). Individual *_unit overrides below take precedenc…
- `wind_speed_unit` (string): Override wind speed unit: "mph", "kmh", "ms", or "kn" (knots).

### `get_current_conditions` (~616 tokens)

Get the most recent weather observation for a location (global coverage). Use this for current weather or when asking about "today's weather", "right now", or recent conditions without a specific historical date range. Returns NOAA station observations for US locations and Open-Meteo model data for international locations. Optionally includes fire weather indices (Haines Index, Grassland Fire Danger, Red Flag Threat) when requested. Provide the location as coordinates (latitude+longitude), a saved location_name, or a free-text city_name. For specific past dates or date ranges, use get_historical_weather instead. If this tool returns an error, check the error message for status page links and consider using check_service_status to verify API availability.

Input parameters:

- `city_name` (string): Free-text place name to geocode (e.g., "Paris, France", "Bend, Oregon"). Use instead of coordinates when you only have a place name and it is not a saved location. Include state/country for disambigu…
- `distance_unit` (string): Override distance/visibility/elevation unit: "mi" or "km".
- `include_fire_weather` (boolean): Include fire weather indices (Haines Index, Grassland Fire Danger, Red Flag Threat) in the response (default: false, US only)
- `include_normals` (boolean): Include climate normals (30-year averages) for comparison with current conditions (default: false). Shows normal high/low temperatures and precipitation, with departure from normal.
- `latitude` (number): Latitude of the location (-90 to 90). Not required if location_name or city_name is provided.
- `location_name` (string): Name of a saved location (e.g., "home", "cabin"). Use instead of coordinates to reference a saved location. List them with list_saved_locations.
- `longitude` (number): Longitude of the location (-180 to 180). Not required if location_name or city_name is provided.
- `precipitation_unit` (string): Override precipitation unit: "inch" or "mm".
- `pressure_unit` (string): Override pressure unit: "inHg" or "hPa".
- `source` (string): Data source: "auto" (default, selects NOAA for US or Open-Meteo for international), "noaa" (US only), or "openmeteo" (global)
- `temperature_unit` (string): Override temperature unit: "F" or "C".
- `time_format` (string): Clock format for times: "12h" or "24h".
- `units` (string): Unit system for output: "imperial" (°F, mph, inHg) or "metric" (°C, km/h, hPa). Defaults to the server setting (imperial unless configured otherwise). Individual *_unit overrides below take precedenc…
- `wind_speed_unit` (string): Override wind speed unit: "mph", "kmh", "ms", or "kn" (knots).

### `get_alerts` (~355 tokens)

Get active weather alerts, watches, warnings, and advisories for a location (US only). Use this for safety-critical weather information when asked about "any alerts?", "weather warnings?", "is it safe?", "dangerous weather?", or "weather watches?". Returns severity, urgency, certainty, effective/expiration times, and affected areas. Provide the location as coordinates (latitude+longitude), a saved location_name, or a free-text city_name. For forecast data, use get_forecast instead. If this tool returns an error, check the error message for status page links and consider using check_service_status to verify API availability.

Input parameters:

- `active_only` (boolean): Whether to show only active alerts (default: true)
- `city_name` (string): Free-text place name to geocode (e.g., "Paris, France", "Bend, Oregon"). Use instead of coordinates when you only have a place name and it is not a saved location. Include state/country for disambigu…
- `detail` (string): Output verbosity: "summary" (shortest), "standard" (default, balanced), or "full" (everything the source provides, e.g. full alert descriptions, uncapped hourly forecast, embedded imagery).
- `latitude` (number): Latitude of the location (-90 to 90). Not required if location_name or city_name is provided.
- `location_name` (string): Name of a saved location (e.g., "home", "cabin"). Use instead of coordinates to reference a saved location. List them with list_saved_locations.
- `longitude` (number): Longitude of the location (-180 to 180). Not required if location_name or city_name is provided.

### `search_location` (~165 tokens)

Search for locations by name to get coordinates for weather queries. Uses Nominatim (OpenStreetMap) for excellent coverage of cities, towns, villages, and hamlets worldwide. Use this when the user provides a location name instead of coordinates (e.g., "Paris", "New York", "Tokyo", "San Francisco, CA", "Small Village, County"). Returns location matches with coordinates, timezone, elevation, and other metadata. Enables natural language location queries like "What's the weather in Paris?" by converting location names to coordinates.

Input parameters:

- `limit` (number): Maximum number of results to return (1-100, default: 5)
- `query` (string, required): Location name to search for (e.g., "Paris", "New York, NY", "Tokyo")

### `check_service_status` (~55 tokens)

Check the operational status of the NOAA and Open-Meteo weather APIs. Use this when experiencing errors or to proactively verify service availability before making weather data requests. Returns current status, helpful messages, and links to official status pages.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/dgahagan-weather-mcp/dangahagan-weather-mcp#diagnostics

## Score history

- 2026-08-03: 71
- 2026-08-02: 70
- 2026-08-01: 15
- 2026-07-31: 12
- 2026-07-30: 35
- 2026-07-28: 35
- 2026-07-27: 35

## Links

- npm package: https://www.npmjs.com/package/@dangahagan/weather-mcp
- Socket report: https://socket.dev/npm/package/@dangahagan/weather-mcp
- Changelog RSS feed: https://verifymcp.io/servers/dgahagan-weather-mcp/dangahagan-weather-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/dgahagan-weather-mcp/dangahagan-weather-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/dgahagan-weather-mcp/dangahagan-weather-mcp
