air_quality
Get air quality forecast data including PM2.5, PM10, ozone, nitrogen dioxide, pollen, European/US AQI indices, UV index and other pollutants.
Get weather, air quality, marine, flood and climate data from Open-Meteo — plus geocoding and per-provider forecast models — with no API key.
LABSCO SUMMARY
The per-provider tools are what lift this past a single forecast: when it matters, you can pull DWD, GFS, ECMWF and Météo-France separately and compare them, or use ensemble_forecast to see the spread rather than one number. geocoding closes the usual gap — most weather tools want coordinates, and here you can hand it 'Paris' and get the latitude and longitude the forecast tools need in the same session, all without a key.
A server over the Open-Meteo weather APIs: 17 tools for forecasts, historical reanalysis, air quality, marine and flood forecasts, elevation, geocoding, seasonal and climate projections, and forecasts from specific national weather models.
Nothing to sign up for — Open-Meteo is free and needs no API key. Node, run as npx open-meteo-mcp-server, or from the ghcr.io Docker image.
One command — npx -y -p open-meteo-mcp-server open-meteo-mcp-server
USE CASES
Convert the place name to coordinates, then pull the hourly and daily forecast — letting the API pick the best model for that location.
When the forecast is high-stakes, call several national models in parallel and look at the ensemble spread rather than trusting one run.
Pull air quality with its AQI and pollen, marine conditions for a coast, or a flood forecast for a river — beyond a plain temperature reading.
Read historical weather from the ERA5 archive for a past date range, or a seasonal outlook and climate projection for what is coming.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
air_qualityGet air quality forecast data including PM2.5, PM10, ozone, nitrogen dioxide, pollen, European/US AQI indices, UV index and other pollutants.
climate_projectionGet climate change projections from CMIP6 models for different warming scenarios.
dwd_icon_forecastGet weather forecast from German DWD ICON model. IMPORTANT: Specify exactly one DWD model in the models parameter (e.g., "dwd_icon_global") — only one model per request is supported. For multi-model comparison, make one parallel tool call per model using the appropriate provider-specific tool.
ecmwf_forecastGet weather forecast from ECMWF models via the dedicated /v1/ecmwf endpoint. IMPORTANT: Specify exactly one model in the models parameter — only one model per request is supported. Valid model IDs for this endpoint are: "ecmwf_ifs" (IFS HRES, high-resolution), "ecmwf_ifs025" (IFS open-data at 0.25°), "best_match". Note: "ecmwf_ifs_025", "ecmwf_ifs_hres_9km", and "ecmwf_aifs_025_single" are NOT valid on this endpoint and will return 400. For multi-model comparison, make one parallel tool call per model using the appropriate provider-specific tool.
elevationGet elevation data for given coordinates using digital elevation models. Supports batch lookups: pass arrays of the same length for latitude and longitude to query multiple points in one call.
ensemble_forecastGet ensemble forecasts showing forecast uncertainty with multiple model runs.
flood_forecastGet river discharge and flood forecasts from GloFAS (Global Flood Awareness System).
gem_forecastGet weather forecast from Canadian Meteorological Centre (GEM) models. IMPORTANT: Specify exactly one GEM model in the models parameter (e.g., "gem_global" or "gem_regional") — only one model per request is supported. For multi-model comparison, make one parallel tool call per model using the appropriate provider-specific tool.
geocodingSearch for locations worldwide by place name or postal code. Returns geographic coordinates (latitude and longitude) and detailed location information. Use this tool when you need to convert a location name (e.g., "Paris", "New York") into precise coordinates (latitude/longitude) that are required by other tools. This is essential when you have a location name but need coordinates for data fetching tools.
gfs_forecastGet weather forecast from US NOAA GFS model. IMPORTANT: Specify exactly one GFS model in the models parameter (e.g., "ncep_gfs_global") — only one model per request is supported. For multi-model comparison, make one parallel tool call per model using the appropriate provider-specific tool.
jma_forecastGet weather forecast from Japan Meteorological Agency (JMA) models. IMPORTANT: Specify exactly one JMA model in the models parameter (e.g., "jma_msm" or "jma_gsm") — only one model per request is supported. For multi-model comparison, make one parallel tool call per model using the appropriate provider-specific tool.
marine_weatherGet marine weather forecast including wave height, wave period, wave direction and sea surface temperature.
meteofrance_forecastGet weather forecast from French Météo-France models. IMPORTANT: Specify exactly one Météo-France model in the models parameter (e.g., "meteofrance_arome_france" or "meteofrance_arpege_europe") — only one model per request is supported. For multi-model comparison, make one parallel tool call per model using the appropriate provider-specific tool.
metno_forecastGet weather forecast from Norwegian Meteorological Institute models. The models parameter is optional for this tool — omit it to use the default Met.no model. If specified, use canonical names such as "metno_nordic" or "metno_seamless". Only one model per request is supported. For multi-model comparison, make one parallel tool call per model using the appropriate provider-specific tool.
seasonal_forecastGet long-range seasonal forecasts for temperature and precipitation up to ~7 months ahead.
weather_archiveGet historical weather data from ERA5 reanalysis (1940-present) for specific coordinates and date range.
weather_forecastGet weather forecast data for coordinates using Open-Meteo API. Supports hourly and daily data with various weather variables. When no models parameter is provided, the API automatically selects the best model for the given location (recommended). Only one model per request is supported — for multi-model comparison, use provider-specific tools with parallel calls.
BEFORE YOU INSTALL
17 tools when we connected.
CONTEXT COST
Rated by the size of the 17 tool definitions that ride along on every turn, not by how many there are
INSTALLATION
npx -y -p open-meteo-mcp-server open-meteo-mcp-server{
"mcpServers": {
"open-meteo": {
"command": "npx",
"args": [
"-y",
"-p",
"open-meteo-mcp-server",
"open-meteo-mcp-server"
]
}
}
}{
"mcpServers": {
"open-meteo": {
"command": "npx",
"args": [
"-y",
"-p",
"open-meteo-mcp-server",
"open-meteo-mcp-server"
],
"env": {
"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.com"
}
}
}
}Clone and build the server
Only for running from source; the other tabs run the published npm package.
git clone https://github.com/cmer81/open-meteo-mcp.git
cd open-meteo-mcp
npm install
npm run buildPoint your client at the build
<YOUR_PATH_TO_OPEN_METEO_MCP> is the full path of the folder you cloned. The build writes dist/index.js inside it.
{
"mcpServers": {
"open-meteo": {
"command": "node",
"args": [
"<YOUR_PATH_TO_OPEN_METEO_MCP>/dist/index.js"
]
}
}
}If you're using your own Open-Meteo instance:
{
"mcpServers": {
"open-meteo": {
"command": "npx",
"args": [
"-y",
"-p",
"open-meteo-mcp-server",
"open-meteo-mcp-server"
],
"env": {
"OPEN_METEO_API_URL": "<YOUR_OPEN_METEO_API_URL>",
"OPEN_METEO_AIR_QUALITY_API_URL": "<YOUR_OPEN_METEO_AIR_QUALITY_API>",
"OPEN_METEO_MARINE_API_URL": "<YOUR_OPEN_METEO_MARINE_API_URL>",
"OPEN_METEO_ARCHIVE_API_URL": "<YOUR_OPEN_METEO_ARCHIVE_API_URL>",
"OPEN_METEO_SEASONAL_API_URL": "<YOUR_OPEN_METEO_SEASONAL_API_URL>",
"OPEN_METEO_ENSEMBLE_API_URL": "<YOUR_OPEN_METEO_ENSEMBLE_API_URL>",
"OPEN_METEO_GEOCODING_API_URL": "<YOUR_OPEN_METEO_GEOCODING_API_URL>",
"OPEN_METEO_FLOOD_API_URL": "<YOUR_OPEN_METEO_FLOOD_API_URL>",
"OPEN_METEO_CLIMATE_API_URL": "<YOUR_OPEN_METEO_CLIMATE_API_URL>"
}
}
}
}TRANSPORT=http PORT=3000 npx open-meteo-mcp-server
# For production deployments, bind to a reachable interface and enable authentication and rate limiting:
HOST=0.0.0.0 API_KEY=<YOUR_API_KEY> RATE_LIMIT_RPM=60 TRANSPORT=http PORT=3000 npx open-meteo-mcp-serverThis starts a server with the MCP endpoint at /mcp (default port 3000), bound to 127.0.0.1 unless HOST=0.0.0.0 is set. With API_KEY set, clients must send Authorization: Bearer <YOUR_API_KEY> or X-API-Key: <YOUR_API_KEY>.
npm install -g open-meteo-mcp-server