Access German Weather Service data via the Bright Sky API
DWD MCP Server
An MCP server (Model Context Protocol) for weather data from the German Weather Service (DWD) via Bright Sky API.
Features
- Current Weather (
get_current_weather) - Temperature, wind, precipitation, cloud cover, etc. - Weather Forecast (
get_weather_forecast) - Hourly forecasts and daily summaries - Weather Alerts (
get_weather_alerts) - Official DWD warnings (storm, thunderstorm, frost, etc.) - Weather Stations (
find_weather_station) - Find nearest DWD stations
Installation
With uv (recommended)
# Clone repository
git clone https://github.com/your-username/dwd-mcp-server.git
cd dwd-mcp-server
# Install dependencies
uv sync
# Development dependencies (optional)
uv sync --extra dev
With pip
pip install -e .
# With development dependencies
pip install -e ".[dev]"
Usage
Start as MCP server
# With uv
uv run dwd-mcp-server start
# Or directly with Python
python -m dwd_mcp_server.cli start
Integrate with Claude Desktop
Add the following configuration to your Claude Desktop config.json:
{
"mcpServers": {
"dwd-weather": {
"command": "uv",
"args": ["--directory", "/path/to/dwd-mcp-server", "run", "dwd-mcp-server", "start"]
}
}
}
Integrate with Claude Code
claude mcp add dwd-weather -- uv --directory /path/to/dwd-mcp-server run dwd-mcp-server start
MCP Tools
`get_current_weather`
Get current weather for a location.
Parameters:
location(string, required): City name (e.g., "Aachen", "Munich") or coordinates (e.g., "50.7753,6.0839")
Example response:
{
"timestamp": "Sat, 15.02.2026 14:00",
"temperature_c": 8.2,
"feels_like_c": 5.5,
"humidity_percent": 78,
"wind_speed_kmh": 22.3,
"wind_direction": "W",
"precipitation_mm": 0.0,
"cloud_cover_percent": 75,
"condition": "cloudy",
"station_name": "Aachen-Orsbach"
}
`get_weather_forecast`
Get weather forecast for a location.
Parameters:
location(string, required): City name or coordinatesdays(integer, optional): Number of days (1-10, default: 3)
Returns: Hourly data and daily summaries with min/max temperatures.
`get_weather_alerts`
Get official weather alerts.
Parameters:
location(string, optional): City name or coordinates. If omitted: all alerts for Germany.
Returns: List of active alerts with type, severity, description, and validity period.
`find_weather_station`
Find nearest DWD weather stations.
Parameters:
location(string, required): City name or coordinates
Returns: List of stations with name, ID, and distance.
Geocoding
The server accepts various location inputs:
- Direct coordinates:
"50.7753,6.0839"or"50.7753, 6.0839" - German cities:
"Aachen","Munich","Cologne"(approx. 100 cities included) - Nominatim fallback: For unknown locations, OpenStreetMap/Nominatim is queried
Tests
# With uv
uv run pytest
# With pytest directly
pytest
Technology Stack
- MCP Framework: mcp Python SDK (FastMCP)
- HTTP Client: httpx (async)
- Data Source: Bright Sky API (DWD Open Data)
- Geocoding: Built-in city table + Nominatim fallback
License
MIT
Data Sources
- Weather data: DWD Open Data
- API: Bright Sky
- Geocoding: Nominatim/OpenStreetMap
Tools (4)
get_current_weatherGet current weather for a location.get_weather_forecastGet weather forecast for a location.get_weather_alertsGet official weather alerts.find_weather_stationFind nearest DWD weather stations.Configuration
{"mcpServers": {"dwd-weather": {"command": "uv", "args": ["--directory", "/path/to/dwd-mcp-server", "run", "dwd-mcp-server", "start"]}}}