Skip to main content
Glama
kimhjort

aria-mcp-weather-dk

by kimhjort
README.md
# aria-mcp-weather-dk

A [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server that exposes Danish weather forecasts and severe-weather warnings to AI assistants. Built for [ARIA](https://github.com/kimhjort/aria) and shareable with the community.

**Fully keyless** — both data sources are open and require no API key.

## Data Sources

| Source | What | License / Attribution |
|---|---|---|
| [DMI Open Data](https://www.dmi.dk/friedata/) | Hourly point forecasts (Harmonie DINI SF model) | [CC BY 4.0 — requires attribution to DMI](https://www.dmi.dk/friedata/guides-til-frie-data/) |
| [MeteoAlarm](https://www.meteoalarm.org) | Severe weather warnings for Denmark | © MeteoAlarm / national met services — see [terms](https://www.meteoalarm.org/en_UK/0/0/EU012DK-Denmark.html) |

## Install & Run

```bash
npx aria-mcp-weather-dk
```

Or install globally:

```bash
npm install -g aria-mcp-weather-dk
aria-mcp-weather-dk
```

Requires Node.js 20 or later.

## Tools

### `get_forecast`

Fetch an hourly weather forecast for a geographic point (up to 72 hours).

**Parameters:**

| Name | Type | Required | Description |
|---|---|---|---|
| `lat` | number | Yes* | Latitude (WGS84 decimal degrees) |
| `lon` | number | Yes* | Longitude (WGS84 decimal degrees) |
| `hours` | number | No | Hours to forecast (1–72, default 24) |

*Not required if `DEFAULT_LAT` / `DEFAULT_LON` env vars are set.

**Returns:** Array of forecast entries:

```json
[
  {
    "time": "2024-06-01T12:00:00Z",
    "temperatureC": 18.5,
    "windSpeedMs": 4.2,
    "windDirDeg": 220,
    "humidityPct": 68,
    "precipitationMm": 0.0,
    "cloudCoverPct": 40
  }
]
```

Fields are omitted when not available from the API.

---

### `get_current`

Fetch the forecast entry closest to the current time.

**Parameters:** `lat`, `lon` (same as above)

**Returns:** A single forecast entry (same shape as above).

---

### `get_warnings`

Fetch active severe weather warnings for Denmark from MeteoAlarm.

**Parameters:** None

**Returns (warnings present):**

```json
[
  {
    "id": "https://www.meteoalarm.org/alerts/DK-...",
    "event": "Wind",
    "severity": "Severe",
    "urgency": "Expected",
    "certainty": "Likely",
    "area": "Jutland",
    "onset": "2024-06-01T18:00:00Z",
    "expires": "2024-06-02T06:00:00Z",
    "headline": "Orange wind warning for Jutland",
    "description": "Strong winds expected...",
    "awarenessType": "1; Wind",
    "awarenessLevel": "3; orange; Severe"
  }
]
```

**Returns (no active warnings):**

```json
{
  "status": "no_active_warnings",
  "message": "No active severe weather warnings for Denmark.",
  "checkedAt": "2024-06-01T12:00:00.000Z"
}
```

## Environment Variables

| Variable | Description |
|---|---|
| `DEFAULT_LAT` | Default latitude — makes `lat` optional in `get_forecast` and `get_current` |
| `DEFAULT_LON` | Default longitude — makes `lon` optional in `get_forecast` and `get_current` |

These are purely convenience defaults. The server remains generic — no location is hardcoded.

## ARIA MCP Config

Add to your ARIA credentials / MCP config to use with ARIA:

```json
{
  "command": "npx",
  "args": ["-y", "aria-mcp-weather-dk"],
  "env": {
    "DEFAULT_LAT": "55.6761",
    "DEFAULT_LON": "12.5683"
  }
}
```

Replace the coordinates with your preferred default location, or omit `env` entirely and always pass coordinates explicitly.

## Development

```bash
git clone https://github.com/kimhjort/aria-mcp-weather-dk
cd aria-mcp-weather-dk
npm install
npm run build
npm test
```

## License

MIT — see [LICENSE](LICENSE).

Data from DMI is licensed [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). MeteoAlarm data is owned by the respective national meteorological services; see their terms before redistribution.

Maintenance

ActivityMaintained
ResponsivenessSyncing