A Model Context Protocol (MCP) server providing access to Open-Meteo weather APIs using the Dedalus MCP framework.
This server provides 17 weather tools:
- weather_forecast - Get weather forecast data for any location
- weather_archive - Get historical weather data from ERA5 reanalysis (1940-present)
- air_quality - Get air quality forecast data (PM2.5, PM10, ozone, etc.)
- marine_weather - Get marine weather forecast (waves, sea temperature)
- elevation - Get elevation data for coordinates
- dwd_icon_forecast - German DWD ICON model
- gfs_forecast - US NOAA GFS model
- meteofrance_forecast - French Météo-France models
- ecmwf_forecast - ECMWF global forecasts
- jma_forecast - Japan Meteorological Agency
- metno_forecast - Norwegian weather service
- gem_forecast - Canadian GEM model
- flood_forecast - River discharge and flood forecasts (GloFAS)
- seasonal_forecast - Long-range seasonal forecasts (up to 9 months)
- climate_projection - CMIP6 climate change projections
- ensemble_forecast - Ensemble forecasts with uncertainty
- geocoding - Search for locations by name or postal code
# Using uv (recommended)
uv sync
# Or using pip
pip install -e .# Using uv
uv run python src/main.py
# Or directly
cd src && python main.pyThe server will start on port 8080 by default.
Configure the server using environment variables:
# Server port
PORT=8080
# Custom API URLs (optional - defaults to public Open-Meteo APIs)
OPEN_METEO_API_URL=https://api.open-meteo.com
OPEN_METEO_AIR_QUALITY_API_URL=https://air-quality-api.open-meteo.com
OPEN_METEO_MARINE_API_URL=https://marine-api.open-meteo.com
OPEN_METEO_ARCHIVE_API_URL=https://archive-api.open-meteo.com
OPEN_METEO_SEASONAL_API_URL=https://seasonal-api.open-meteo.com
OPEN_METEO_ENSEMBLE_API_URL=https://ensemble-api.open-meteo.com
OPEN_METEO_GEOCODING_API_URL=https://geocoding-api.open-meteo.com
OPEN_METEO_FLOOD_API_URL=https://flood-api.open-meteo.com
OPEN_METEO_CLIMATE_API_URL=https://climate-api.open-meteo.comYou can also create a .env file in the project root.
{
"name": "weather_forecast",
"arguments": {
"latitude": 48.8566,
"longitude": 2.3522,
"hourly": ["temperature_2m", "precipitation", "wind_speed_10m"],
"daily": ["temperature_2m_max", "temperature_2m_min"],
"timezone": "Europe/Paris"
}
}{
"name": "geocoding",
"arguments": {
"name": "Paris",
"count": 5,
"country_code": "FR"
}
}{
"name": "air_quality",
"arguments": {
"latitude": 48.8566,
"longitude": 2.3522,
"hourly": ["pm10", "pm2_5", "ozone", "nitrogen_dioxide"]
}
}# Install dev dependencies
uv sync --group dev
# Run linting
uv run ruff check src/
uv run ruff format src/
# Run tests
uv run pytestMIT License - see LICENSE for details.
- Open-Meteo - Free weather API
- Dedalus MCP - MCP framework