Hosted MCP server · #108 most used on Smithery
open-meteo-mcp-server
cyanheads/open-meteo-mcp-server
Global weather via Open-Meteo: forecast, ERA5 archive, marine, air quality, geocoding, elevation.
- Uses
- 5.2k
- Tools
- 11
- Runs
- Hosted
- Listed
- 4mo ago
Get started
Add it to your agent
npx -y @smithery/cli@latest install cyanheads/open-meteo-mcp-server --client claudeSwap --client claude for cursor, vscode, windsurf or another client. The CLI asks for any required settings.
claude mcp add --transport http open-meteo https://server.smithery.ai/cyanheads/open-meteo-mcp-server/mcpA hosted server: nothing to install. Run /mcp in Claude Code to sign in if it asks.
[mcp_servers.open-meteo]
url = "https://server.smithery.ai/cyanheads/open-meteo-mcp-server/mcp"Add to ~/.codex/config.toml.
{
"mcpServers": {
"open-meteo": {
"url": "https://server.smithery.ai/cyanheads/open-meteo-mcp-server/mcp"
}
}
}Add to ~/.cursor/mcp.json.
{
"servers": {
"open-meteo": {
"type": "http",
"url": "https://server.smithery.ai/cyanheads/open-meteo-mcp-server/mcp"
}
}
}Add to .vscode/mcp.json.
gemini mcp add --transport http open-meteo https://server.smithery.ai/cyanheads/open-meteo-mcp-server/mcpSaved to .gemini/settings.json.
What it can do
11 tools
openmeteo_geocode4 paramsResolve a place name to ranked coordinate matches with country, region, elevation, timezone, and population. Required prerequisite for na…
Resolve a place name to ranked coordinate matches with country, region, elevation, timezone, and population. Required prerequisite for name-based queries — all weather tools take latitude/longitude, not place names. Search by a bare place name (city, region, or landmark); never fold a qualifier into it — pass "Baoding", not "Baoding Hebei", and "Paris", not "Paris, France". To disambiguate places that share a name, set the country input (ISO 3166-1 alpha-2, e.g. "US") and/or read the admin1 and
| Parameter | Type | Description |
|---|---|---|
name | string | Place name to search — a bare city, region, or landmark ("Seattle", "Mount Rainier"). Do not fold in a region or country qualifier ("Baoding", not "Baoding Hebei"); use the country input to disambigua |
count | integer | Max results to return (1–10). Default 5. Return more when disambiguating common names like "Springfield" or "Portland". |
country | string | ISO 3166-1 alpha-2 country code (e.g. "US", "FR") to disambiguate places that share a name. Omit for a global search. |
language | string | Language for matching and returning place names (ISO 639-1, e.g., "en", "de", "zh"). The API matches name against the localized index for this language, so set it to match the script of name — e.g. la |
openmeteo_get_elevation2 paramsTerrain elevation from the Copernicus Digital Elevation Model (~90m resolution) for one or more coordinate pairs. Accepts up to 100 pairs…
Terrain elevation from the Copernicus Digital Elevation Model (~90m resolution) for one or more coordinate pairs. Accepts up to 100 pairs per call. Useful for geographic context, elevation-adjusted weather interpretation, or route planning.
| Parameter | Type | Description |
|---|---|---|
latitudes | array | Array of latitudes in decimal degrees (up to 100). Must be same length as longitudes. |
longitudes | array | Array of longitudes in decimal degrees (up to 100). Must be same length as latitudes. |
openmeteo_get_forecast10 paramsWeather forecast for coordinates: hourly and/or daily variables for up to 16 days ahead, with optional past_days (up to 92) for recent hi…
Weather forecast for coordinates: hourly and/or daily variables for up to 16 days ahead, with optional past_days (up to 92) for recent history. Use past_days instead of openmeteo_get_historical for dates within the last 1–5 days, since ERA5 has a variable lag. Returns per-timestamp records — each hourly entry contains a "time" field (ISO 8601) plus one key per requested variable; each daily entry contains a "time" field (YYYY-MM-DD) plus requested variables. Common hourly variables: temperature_
| Parameter | Type | Description |
|---|---|---|
latitude | number | Latitude in decimal degrees (e.g., 47.6062 for Seattle). Use openmeteo_geocode to resolve a place name to coordinates. |
timezone | string | IANA timezone (e.g., "America/Los_Angeles") or "auto" to use the location's local timezone. Default "auto". The timezone from openmeteo_geocode is ideal to pass here. |
longitude | number | Longitude in decimal degrees (e.g., -122.3321 for Seattle). |
past_days | integer | Include this many days of past data before today (0–92). Use for recent history — ERA5 archive has a variable ~5-day lag. Default 0. |
forecast_days | integer | Number of forecast days (1–16). Default 7. |
daily_variables | array | Daily summary variables (e.g., ["temperature_2m_max", "temperature_2m_min", "precipitation_sum", "wind_speed_10m_max", "sunrise", "sunset", "uv_index_max"]). At least one of hourly_variables or daily_ |
wind_speed_unit | string | Wind speed unit: "kmh" (km/h), "mph", "ms" (m/s), or "kn" (knots). Default "kmh". |
hourly_variables | array | Hourly variables to fetch (e.g., ["temperature_2m", "precipitation", "wind_speed_10m", "relative_humidity_2m", "cloud_cover", "uv_index", "apparent_temperature"]). At least one of hourly_variables or |
temperature_unit | string | Temperature unit. Default "celsius". |
precipitation_unit | string | Precipitation unit: "mm" or "inch". Default "mm". |
openmeteo_get_historical11 paramsHistorical weather from the ERA5 reanalysis archive (1940–present). Requires start_date and end_date (ISO 8601 date, e.g., "2024-07-01").…
Historical weather from the ERA5 reanalysis archive (1940–present). Requires start_date and end_date (ISO 8601 date, e.g., "2024-07-01"). ERA5 has a variable lag of up to ~5 days — for dates within the last week, use openmeteo_get_forecast with past_days instead. Uses the same variable names as the forecast API for direct comparison. Large date ranges (multi-year hourly) produce thousands of records — these spill to DataCanvas for SQL querying when canvas is enabled. At least one of hourly_varia
| Parameter | Type | Description |
|---|---|---|
end_date | string | End date (YYYY-MM-DD, inclusive). Must be on or after start_date. For dates within the last ~5 days, use openmeteo_get_forecast with past_days instead. |
latitude | number | Latitude in decimal degrees. Use openmeteo_geocode to resolve a place name to coordinates. |
timezone | string | IANA timezone or "auto". Default "auto". |
canvas_id | string | DataCanvas token for multi-year or multi-variable queries. When a query exceeds ~500 records, results spill to this canvas for SQL querying. Omit to create a fresh canvas. |
longitude | number | Longitude in decimal degrees. |
start_date | string | Start date (YYYY-MM-DD, e.g., "2024-07-01"). ERA5 covers from 1940-01-01 to approximately 5 days ago. |
daily_variables | array | Daily summary variables (e.g., ["temperature_2m_max", "temperature_2m_min", "precipitation_sum", "wind_speed_10m_max"]). At least one of hourly_variables or daily_variables required. |
wind_speed_unit | string | Wind speed unit. Default "kmh". |
hourly_variables | array | Hourly ERA5 variables (e.g., ["temperature_2m", "precipitation", "wind_speed_10m", "relative_humidity_2m", "cloud_cover", "soil_moisture_0_to_7cm"]). At least one of hourly_variables or daily_variable |
temperature_unit | string | Temperature unit. Default "celsius". |
precipitation_unit | string | Precipitation unit. Default "mm". |
openmeteo_get_marine6 paramsMarine weather forecast for a coastal or ocean coordinate: wave height, wave period, wave direction, wind-wave height, swell height, sea-…
Marine weather forecast for a coastal or ocean coordinate: wave height, wave period, wave direction, wind-wave height, swell height, sea-surface temperature. Forecast horizon up to 7 days. Returns per-timestamp records — each entry contains a "time" field plus one key per requested variable. Best for open-ocean and coastal exposed points — sheltered inland waters return near-zero wave values. Common hourly variables: wave_height, wave_direction, wave_period, wind_wave_height, wind_wave_direction
| Parameter | Type | Description |
|---|---|---|
latitude | number | Latitude of a coastal or ocean point. Use openmeteo_geocode to resolve a place name. Inland points return near-zero wave values. |
timezone | string | IANA timezone or "auto". Default "auto". |
longitude | number | Longitude in decimal degrees. |
forecast_days | integer | Forecast horizon in days (1–7). Default 7. |
daily_variables | array | Daily marine summary variables (e.g., ["wave_height_max", "wave_direction_dominant", "wave_period_max"]). At least one of hourly_variables or daily_variables required. |
hourly_variables | array | Hourly marine variables (e.g., ["wave_height", "wave_direction", "wave_period", "wind_wave_height", "swell_wave_height"]). At least one of hourly_variables or daily_variables required. |
openmeteo_get_air_quality5 paramsModeled CAMS (Copernicus Atmosphere Monitoring Service) air quality forecast: PM2.5, PM10, nitrogen dioxide, sulphur dioxide, ozone, carb…
Modeled CAMS (Copernicus Atmosphere Monitoring Service) air quality forecast: PM2.5, PM10, nitrogen dioxide, sulphur dioxide, ozone, carbon monoxide, dust, pollen, and European/US AQI indices. This is modeled grid data, not measured station readings — for measured data, use openaq-mcp-server. Forecast only (no historical archive). Common variables: pm2_5, pm10, carbon_monoxide, nitrogen_dioxide, sulphur_dioxide, ozone, dust, european_aqi, us_aqi, alder_pollen, birch_pollen, grass_pollen, mugwort
| Parameter | Type | Description |
|---|---|---|
latitude | number | Latitude in decimal degrees. Use openmeteo_geocode to resolve a place name. |
timezone | string | IANA timezone or "auto". Default "auto". |
longitude | number | Longitude in decimal degrees. |
forecast_days | integer | Forecast horizon in days (1–7). Default 5. |
hourly_variables | array | Hourly air quality variables (e.g., ["pm2_5", "pm10", "ozone", "nitrogen_dioxide", "european_aqi", "us_aqi"]). At least one required. |
openmeteo_get_ensemble12 paramsProbabilistic ensemble weather forecast — up to 51 ensemble members, up to 16 days ahead with optional past_days (0–92). Each member's va…
Probabilistic ensemble weather forecast — up to 51 ensemble members, up to 16 days ahead with optional past_days (0–92). Each member's values appear as separate columns named with a member suffix (e.g. temperature_2m_member01, temperature_2m_member02). Use the spread across members to compute exceedance probabilities, quantify forecast uncertainty, and build decision thresholds. Available models: "ecmwf_ifs025" (51 members, global, 0.25°), "gfs025" (31 members, global, 0.25°), "icon_seamless" (4
| Parameter | Type | Description |
|---|---|---|
models | string | Ensemble model to use: "ecmwf_ifs025" (51 members, global 0.25°), "gfs025" (31 members), "icon_seamless" (40 members), "gem_global" (21 members). Omit to use the API default blend. |
latitude | number | Latitude in decimal degrees. Use openmeteo_geocode to resolve a place name to coordinates. |
timezone | string | IANA timezone (e.g., "America/Los_Angeles") or "auto" to use the location's local timezone. Default "auto". |
canvas_id | string | DataCanvas token for large multi-member queries. When records exceed ~500, results spill to this canvas for SQL querying. Omit to create a fresh canvas. |
longitude | number | Longitude in decimal degrees. |
past_days | integer | Include this many days of past ensemble data before today (0–92). Default 0. |
forecast_days | integer | Forecast horizon in days (1–16). Default 7. |
daily_variables | array | Daily variables to fetch across all ensemble members (e.g., ["temperature_2m_max", "temperature_2m_min", "precipitation_sum"]). Each variable appears as temperature_2m_max_member01, … At least one of |
wind_speed_unit | string | Wind speed unit. Default "kmh". |
hourly_variables | array | Hourly variables to fetch across all ensemble members (e.g., ["temperature_2m", "precipitation", "wind_speed_10m"]). Each variable appears as temperature_2m_member01, temperature_2m_member02, … in the |
temperature_unit | string | Temperature unit. Default "celsius". |
precipitation_unit | string | Precipitation unit. Default "mm". |
openmeteo_get_flood7 paramsGloFAS (Global Flood Awareness System) river discharge forecast and historical reanalysis. Returns daily ensemble river discharge (m³/s) …
GloFAS (Global Flood Awareness System) river discharge forecast and historical reanalysis. Returns daily ensemble river discharge (m³/s) for the river nearest to the given coordinates — no river ID needed, the API snaps to the nearest stream. Forecast horizon up to 210 days ahead; reanalysis history back to 1984-01-01. Use start_date/end_date for historical pulls and forecast_days for future forecasts; both can be combined. Available daily variables: "river_discharge" (ensemble mean), "river_dis
| Parameter | Type | Description |
|---|---|---|
end_date | string | End date for historical reanalysis (YYYY-MM-DD, inclusive). Must be on or after start_date. |
latitude | number | Latitude in decimal degrees. The API snaps to the nearest river — no river ID required. Use openmeteo_geocode to resolve a place name. |
timezone | string | IANA timezone or "auto". Default "auto". |
longitude | number | Longitude in decimal degrees. |
start_date | string | Start date for historical reanalysis (YYYY-MM-DD, e.g., "2023-01-01"). GloFAS reanalysis covers from 1984-01-01. |
forecast_days | integer | Number of forecast days ahead (1–210). Omit when fetching historical data only via start_date/end_date. |
daily_variables | array | Daily discharge variables to fetch (e.g., ["river_discharge", "river_discharge_p25", "river_discharge_p75", "river_discharge_min", "river_discharge_max"]). Required. |
openmeteo_get_climate11 paramsLong-range climate projections from bias-corrected daily CMIP6 models, covering 1950-01-01 to 2050-12-31 at any coordinate. Answers "what…
Long-range climate projections from bias-corrected daily CMIP6 models, covering 1950-01-01 to 2050-12-31 at any coordinate. Answers "what will conditions look like through 2050?" — the future-projection counterpart to openmeteo_get_historical (ERA5, what happened). Daily resolution only. Available models: "CMCC_CM2_VHR4", "FGOALS_f3_H", "HiRAM_SIT_HR", "MRI_AGCM3_2_S", "EC_Earth3P_HR", "MPI_ESM1_2_XR", "NICAM16_8S". With 2+ models each variable appears once per model with the model name as suffi
| Parameter | Type | Description |
|---|---|---|
models | array | CMIP6 models to include: "CMCC_CM2_VHR4", "FGOALS_f3_H", "HiRAM_SIT_HR", "MRI_AGCM3_2_S", "EC_Earth3P_HR", "MPI_ESM1_2_XR", "NICAM16_8S". With 2+ models each variable column is suffixed with the model |
end_date | string | End date (YYYY-MM-DD, inclusive, max 2050-12-31). Must be on or after start_date. |
latitude | number | Latitude in decimal degrees. Use openmeteo_geocode to resolve a place name to coordinates. |
timezone | string | IANA timezone or "auto". Default "auto". |
canvas_id | string | DataCanvas token for multi-decade or multi-model queries. When a query exceeds ~500 records, results spill to this canvas for SQL querying. Omit to create a fresh canvas. |
longitude | number | Longitude in decimal degrees. |
start_date | string | Start date (YYYY-MM-DD, e.g., "2049-01-01"). CMIP6 projections cover 1950-01-01 to 2050-12-31. |
daily_variables | array | Daily climate variables to fetch (e.g., ["temperature_2m_max", "temperature_2m_min", "precipitation_sum", "wind_speed_10m_mean", "shortwave_radiation_sum"]). Required — the Climate API is daily-only. |
wind_speed_unit | string | Wind speed unit. Default "kmh". |
temperature_unit | string | Temperature unit. Default "celsius". |
precipitation_unit | string | Precipitation unit. Default "mm". |
openmeteo_dataframe_query2 paramsRun a read-only SQL SELECT against tables staged on a DataCanvas by openmeteo_get_historical, openmeteo_get_ensemble, or openmeteo_get_cl…
Run a read-only SQL SELECT against tables staged on a DataCanvas by openmeteo_get_historical, openmeteo_get_ensemble, or openmeteo_get_climate. Pass the canvas_id returned when any of those tools spills (truncated: true). Tables are named by the spillover helper (e.g. spilled_<id>); use openmeteo_dataframe_describe to list available tables and their columns before querying.
| Parameter | Type | Description |
|---|---|---|
sql | string | Read-only SELECT statement. Reference table names from openmeteo_dataframe_describe. Example: SELECT AVG(temperature_2m) AS avg_temp, strftime(time, '%Y-%m') AS month FROM spilled_abc123 GROUP BY mont |
canvas_id | string | Canvas ID returned by openmeteo_get_historical, openmeteo_get_ensemble, or openmeteo_get_climate when truncated: true. |
openmeteo_dataframe_describe1 paramList the tables and their columns on a DataCanvas staged by openmeteo_get_historical, openmeteo_get_ensemble, or openmeteo_get_climate. C…
List the tables and their columns on a DataCanvas staged by openmeteo_get_historical, openmeteo_get_ensemble, or openmeteo_get_climate. Call this first to discover table names before querying with openmeteo_dataframe_query.
| Parameter | Type | Description |
|---|---|---|
canvas_id | string | Canvas ID returned by openmeteo_get_historical, openmeteo_get_ensemble, or openmeteo_get_climate when truncated: true. |