openmeteo_get_historical
ActiveTool of io.github.cyanheads/open-meteo-mcp-server
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_variables or daily_variables is required.
Parameters schema
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"latitude",
"longitude",
"start_date",
"end_date"
],
"properties": {
"end_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "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": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in decimal degrees. Use openmeteo_geocode to resolve a place name to coordinates."
},
"timezone": {
"type": "string",
"default": "auto",
"description": "IANA timezone or \"auto\". Default \"auto\"."
},
"canvas_id": {
"type": "string",
"description": "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": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in decimal degrees."
},
"start_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Start date (YYYY-MM-DD, e.g., \"2024-07-01\"). ERA5 covers from 1940-01-01 to approximately 5 days ago."
},
"daily_variables": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 50,
"description": "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": {
"enum": [
"kmh",
"mph",
"ms",
"kn"
],
"type": "string",
"default": "kmh",
"description": "Wind speed unit. Default \"kmh\"."
},
"hourly_variables": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 50,
"description": "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_variables required."
},
"temperature_unit": {
"enum": [
"celsius",
"fahrenheit"
],
"type": "string",
"default": "celsius",
"description": "Temperature unit. Default \"celsius\"."
},
"precipitation_unit": {
"enum": [
"mm",
"inch"
],
"type": "string",
"default": "mm",
"description": "Precipitation unit. Default \"mm\"."
}
}
}Parent server
io.github.cyanheads/open-meteo-mcp-server
https://github.com/cyanheads/open-meteo-mcp-server
1/7 registries