Weather MCP Server by Meteosource
Forecasts, severe-weather alerts, air quality, 20-year weather history, solar and wind production.
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (1)
- LOWin get_air_quality
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"weather": {
"url": "https://mcp.meteosource.com/mcp"
}
}
}Remote-Endpunkte
https://mcp.meteosource.com/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (7)
🟢search_places(query, lat, lon, language)
Find locations and their Meteosource place_id. Use this first to resolve city names, postal codes or coordinates into place_id values for the other weather tools. Provide either `query` (place name or postal code) to search, or `lat` + `lon` to find the nearest known place. Returns up to 10 matches ordered by relevance, each with place_id, administrative area, country, coordinates and timezone. Note: lat/lon are returned in degree-letter format (e.g. "50.08804N").
Eingabe-Schema
{
"type": "object",
"properties": {
"query": {
"default": null,
"title": "Query",
"type": "string"
},
"lat": {
"default": null,
"maximum": 90,
"minimum": -90,
"title": "Lat",
"type": "number"
},
"lon": {
"default": null,
"maximum": 180,
"minimum": -180,
"title": "Lon",
"type": "number"
},
"language": {
"default": "en",
"title": "Language",
"type": "string"
}
},
"title": "search_placesArguments"
}🟢get_forecast(locations, sections, hours, days, variables, ...)
Weather forecast for up to 20 locations in one call. Sections (comma-separated): 'current' (now), 'hourly' (up to 168 h ahead, trimmed to `hours`), 'daily' (up to 30 days ahead, trimmed to `days`), 'minutely' (precipitation minute-by-minute, higher tiers), 'alerts' (official weather warnings, startup tier and above), or 'all'. Use `variables` to keep only specific fields (e.g. ["temperature", "wind", "precipitation", "probability", "irradiance"]) and reduce output size — recommended when querying many locations. Timezone defaults to each location's local time; units default per-country ('metric' forces SI). Forecast horizon depends on the subscription tier (free: 7 days). Output: time series (hourly, daily, minutely) are tables — `columns` listed once and `rows` as arrays in column order; nested API groups are flattened with underscores (wind_speed, probability_storm, cloud_cover_total). `units` is given once at the top level when it is the same for every location.
Eingabe-Schema
{
"type": "object",
"properties": {
"locations": {
"items": {
"$ref": "#/$defs/LocationIn"
},
"title": "Locations",
"type": "array"
},
"sections": {
"default": "current,daily",
"title": "Sections",
"type": "string"
},
"hours": {
"default": 48,
"title": "Hours",
"type": "integer"
},
"days": {
"default": 7,
"title": "Days",
"type": "integer"
},
"variables": {
"default": null,
"items": {
"type": "string"
},
"title": "Variables",
"type": "array"
},
"timezone": {
"default": "auto",
"title": "Timezone",
"type": "string"
},
"units": {
"default": "auto",
"title": "Units",
"type": "string"
},
"language": {
"default": "en",
"title": "Language",
"type": "string"
}
},
"required": [
"locations"
],
"$defs": {
"LocationIn": {
"description": "A single location: either a Meteosource place_id (from search_places)\nor a lat/lon pair. An optional label is echoed back in results.",
"properties": {
"place_id": {
"default": null,
"description": "Meteosource place identifier",
"title": "Place Id",
"type": "string"
},
"lat": {
"default": null,
"description": "Latitude in decimal degrees",
"maximum": 90,
"minimum": -90,
"title": "Lat",
"type": "number"
},
"lon": {
"default": null,
"description": "Longitude in decimal degrees",
"maximum": 180,
"minimum": -180,
"title": "Lon",
"type": "number"
},
"label": {
"default": null,
"description": "Optional human-readable name echoed in results",
"title": "Label",
"type": "string"
}
},
"title": "LocationIn",
"type": "object"
}
},
"title": "get_forecastArguments"
}🟢get_alerts(locations, language)
Official weather warnings (severe weather alerts) for up to 20 locations. Returns only locations that currently have an active alert, with event type, severity, validity window and headline — an empty list means all clear. Cheap to call frequently; designed for monitoring/polling. Coverage: USA, EU countries and Canada. Requires the startup tier or higher (not available on the free tier).
Eingabe-Schema
{
"type": "object",
"properties": {
"locations": {
"items": {
"$ref": "#/$defs/LocationIn"
},
"title": "Locations",
"type": "array"
},
"language": {
"default": "en",
"title": "Language",
"type": "string"
}
},
"required": [
"locations"
],
"$defs": {
"LocationIn": {
"description": "A single location: either a Meteosource place_id (from search_places)\nor a lat/lon pair. An optional label is echoed back in results.",
"properties": {
"place_id": {
"default": null,
"description": "Meteosource place identifier",
"title": "Place Id",
"type": "string"
},
"lat": {
"default": null,
"description": "Latitude in decimal degrees",
"maximum": 90,
"minimum": -90,
"title": "Lat",
"type": "number"
},
"lon": {
"default": null,
"description": "Longitude in decimal degrees",
"maximum": 180,
"minimum": -180,
"title": "Lon",
"type": "number"
},
"label": {
"default": null,
"description": "Optional human-readable name echoed in results",
"title": "Label",
"type": "string"
}
},
"title": "LocationIn",
"type": "object"
}
},
"title": "get_alertsArguments"
}🟡get_weather_history(locations, date_from, date_to, granularity, variables, ...)
Historical weather (archive) with server-side aggregation. The archive holds 20 years, but how much of it a key may read depends on its plan: startup includes the last 7 days, standard the last year, premium and flexi all 20 years; byvalue reaches 366 days back and no further. Older days need Meteosource's paid historical add-on (billed per location and day); without it the API refuses such a day with "not allowed to access historical data this old", reported per location, so start inside the plan's range. Dates are YYYY-MM-DD, inclusive. Granularity: 'hourly' (raw hours, max 14 days per call), 'daily' (per-day min/max/avg/sum statistics, max 366 days) or 'monthly' (folded from daily, max 366 days per call — call repeatedly for multi-year analyses; results are cached so repeats are cheap). Variables (default: temperature, precipitation, wind): cape, cloud_cover, dew_point, evaporation, feels_like, humidity, irradiance, ozone, precipitation, precipitation_type, pressure, soil_temperature, surface_temperature, temperature, weather, wind, wind_distribution. Aggregations per variable: temperature min/max/avg, precipitation sum, wind speed avg + gusts max, irradiance sum in Wh/m2 (useful for PV analysis), weather = most frequent code of the day, precipitation_types = kinds seen that day (e.g. "rain,snow"; "none" when dry) — use weather and precipitation_type to document what happened (snow, fog, thunderstorm). wind_distribution (daily/monthly; for wind-turbine siting) = hours per 10 m wind-speed bin (wind_hours_0_2 … wind_hours_10_plus) and wind_power_density_w_m2 = 1/2 * 1.225 * mean(v^3) at 10 m — scale to hub height yourself (the API has no hub-height wind). `normals=true` (daily/monthly) adds long-term columns for each calendar day: temperature_normal_avg/min/max, temperature_record_min/max, wind_normal_speed, wind_record_gusts, precipitation_normal_sum and precipitation_normal_probability — compare a period with its normal in one call. Each location+day costs one API request on first fetch; a single call is capped at 400 location-days — split longer ranges into multiple calls. Not available on the free tier (startup+). Output: `columns` once at the top level; each location has `rows` as arrays in column order (a year of daily rows is ~15 kB).
Eingabe-Schema
{
"type": "object",
"properties": {
"locations": {
"items": {
"$ref": "#/$defs/LocationIn"
},
"title": "Locations",
"type": "array"
},
"date_from": {
"title": "Date From",
"type": "string"
},
"date_to": {
"title": "Date To",
"type": "string"
},
"granularity": {
"default": "daily",
"title": "Granularity",
"type": "string"
},
"variables": {
"default": null,
"items": {
"type": "string"
},
"title": "Variables",
"type": "array"
},
"normals": {
"default": false,
"title": "Normals",
"type": "boolean"
},
"timezone": {
"default": "auto",
"title": "Timezone",
"type": "string"
},
"units": {
"default": "metric",
"title": "Units",
"type": "string"
}
},
"required": [
"locations",
"date_from",
"date_to"
],
"$defs": {
"LocationIn": {
"description": "A single location: either a Meteosource place_id (from search_places)\nor a lat/lon pair. An optional label is echoed back in results.",
"properties": {
"place_id": {
"default": null,
"description": "Meteosource place identifier",
"title": "Place Id",
"type": "string"
},
"lat": {
"default": null,
"description": "Latitude in decimal degrees",
"maximum": 90,
"minimum": -90,
"title": "Lat",
"type": "number"
},
"lon": {
"default": null,
"description": "Longitude in decimal degrees",
"maximum": 180,
"minimum": -180,
"title": "Lon",
"type": "number"
},
"label": {
"default": null,
"description": "Optional human-readable name echoed in results",
"title": "Label",
"type": "string"
}
},
"title": "LocationIn",
"type": "object"
}
},
"title": "get_weather_historyArguments"
}🟢get_air_quality(locations, hours, variables, timezone)
Hourly air-quality (smog) forecast for up to 20 locations, about 4 days ahead. Columns: `air_quality` (index, 1 = good, higher = worse) and pollutant surface concentrations — default pm10, pm25, no2_surface, so2_surface, ozone_surface; also available via `variables`: co_surface, no_surface, ozone_total, aerosol_550, dust_550nm, dust_mixing_ratio_05. Output is a table per location (`columns` once, `rows` as arrays), trimmed to `hours`. Not available on the free tier.
Eingabe-Schema
{
"type": "object",
"properties": {
"locations": {
"items": {
"$ref": "#/$defs/LocationIn"
},
"title": "Locations",
"type": "array"
},
"hours": {
"default": 48,
"title": "Hours",
"type": "integer"
},
"variables": {
"default": null,
"items": {
"type": "string"
},
"title": "Variables",
"type": "array"
},
"timezone": {
"default": "auto",
"title": "Timezone",
"type": "string"
}
},
"required": [
"locations"
],
"$defs": {
"LocationIn": {
"description": "A single location: either a Meteosource place_id (from search_places)\nor a lat/lon pair. An optional label is echoed back in results.",
"properties": {
"place_id": {
"default": null,
"description": "Meteosource place identifier",
"title": "Place Id",
"type": "string"
},
"lat": {
"default": null,
"description": "Latitude in decimal degrees",
"maximum": 90,
"minimum": -90,
"title": "Lat",
"type": "number"
},
"lon": {
"default": null,
"description": "Longitude in decimal degrees",
"maximum": 180,
"minimum": -180,
"title": "Lon",
"type": "number"
},
"label": {
"default": null,
"description": "Optional human-readable name echoed in results",
"title": "Label",
"type": "string"
}
},
"title": "LocationIn",
"type": "object"
}
},
"title": "get_air_qualityArguments"
}🟡get_solar_production(sites, date_from, date_to, granularity, variables, ...)
Production of photovoltaic systems, past and forecast, for up to 20 sites. Each site is lat + lon plus the installation: module_kw (installed kWp; use 1 to get specific yield per kWp), inverter_kw (defaults to module_kw), tilt (degrees from horizontal, default 30) and orientation (azimuth the modules face, clockwise from north: 180 = south, the default). Dates are YYYY-MM-DD, inclusive, from up to 20 years back to 4 days ahead, so one call can cover last week's actual weather and the coming days. The renewables plan includes the last 3 years; older days need the paid historical add-on, otherwise the API refuses them ("historical data this old"), reported per site. Granularity: 'hourly' (power at each full hour, max 14 days per call), 'daily' or 'monthly' (energy, max 366 days per call — call repeatedly for multi-year yield; past days are cached so repeats are cheap). Columns: production_kw = output of the system at that hour (an instantaneous value); production_kwh = energy of the day or month, summed from those hourly values; production_max_kw = its peak. `variables` adds the weather behind the production: irradiance (ghi, dni, dhi in W/m2 hourly; ghi/dni/dhi_sum_wh_m2 daily and monthly), temperature, cloud_cover, humidity, dew_point, pressure, snowfall (flag per hour; snowfall_hours daily and monthly). Each site+day costs one API request on first fetch; a single call is capped at 400 site-days — split longer ranges into multiple calls. Needs a key on the renewables tier. Output: `columns` once at the top level; each site has `rows` as arrays in column order.
Eingabe-Schema
{
"type": "object",
"properties": {
"sites": {
"items": {
"$ref": "#/$defs/SolarSiteIn"
},
"title": "Sites",
"type": "array"
},
"date_from": {
"title": "Date From",
"type": "string"
},
"date_to": {
"title": "Date To",
"type": "string"
},
"granularity": {
"default": "daily",
"title": "Granularity",
"type": "string"
},
"variables": {
"default": null,
"items": {
"type": "string"
},
"title": "Variables",
"type": "array"
},
"timezone": {
"default": "auto",
"title": "Timezone",
"type": "string"
},
"units": {
"default": "metric",
"title": "Units",
"type": "string"
}
},
"required": [
"sites",
"date_from",
"date_to"
],
"$defs": {
"SolarSiteIn": {
"description": "A photovoltaic installation: where it stands and how it is built.\nThe defaults of tilt and orientation are the API's own; they are always\nsent, so a cached day can never depend on a default the API changed.",
"properties": {
"lat": {
"description": "Latitude in decimal degrees",
"maximum": 90,
"minimum": -90,
"title": "Lat",
"type": "number"
},
"lon": {
"description": "Longitude in decimal degrees",
"maximum": 180,
"minimum": -180,
"title": "Lon",
"type": "number"
},
"label": {
"default": null,
"description": "Optional human-readable name echoed in results",
"title": "Label",
"type": "string"
},
"module_kw": {
"description": "Installed module power in kW (kWp); use 1 for specific yield per kWp",
"exclusiveMinimum": 0,
"title": "Module Kw",
"type": "number"
},
"inverter_kw": {
"default": null,
"description": "Inverter power in kW; defaults to module_kw",
"exclusiveMinimum": 0,
"title": "Inverter Kw",
"type": "number"
},
"tilt": {
"default": 30,
"description": "Tilt of the modules from horizontal in degrees: 0 = flat, 90 = vertical",
"maximum": 90,
"minimum": 0,
"title": "Tilt",
"type": "integer"
},
"orientation": {
"default": 180,
"description": "Azimuth the modules face, in degrees clockwise from north: 90 = east, 180 = south, 270 = west",
"maximum": 360,
"minimum": 0,
"title": "Orientation",
"type": "integer"
}
},
"required": [
"lat",
"lon",
"module_kw"
],
"title": "SolarSiteIn",
"type": "object"
}
},
"title": "get_solar_productionArguments"
}🟡get_wind_production(sites, date_from, date_to, granularity, variables, ...)
Production of wind farms, past and forecast, for up to 20 sites. Each site is lat + lon plus the farm: turbine_model (catalogue below), exactly one of turbine_count or total_capacity (MW), hub_height (metres, default 100) and roughness of the surrounding terrain (water, open, farmland — the default, suburban, urban). Dates are YYYY-MM-DD, inclusive, from up to 20 years back to 4 days ahead, so one call can cover last week's actual weather and the coming days. The renewables plan includes the last 3 years; older days need the paid historical add-on, otherwise the API refuses them ("historical data this old"), reported per site. Granularity: 'hourly' (power at each full hour, max 14 days per call), 'daily' or 'monthly' (energy, max 366 days per call — call repeatedly for multi-year yield; past days are cached so repeats are cheap). Columns: production_mw = output of the whole farm at that hour (an instantaneous value); production_mwh = energy of the day or month, summed from those hourly values; production_max_mw = its peak. `variables` adds the weather behind the production: wind (10 m above ground, not hub height: wind_10m_speed, wind_10m_gusts and wind_10m_angle hourly; speed avg/max and gusts max daily and monthly), temperature, dew_point, pressure. Turbine catalogue (series + rotor diameter in m / rated power in kW): Adwen AD116/5000; Enercon E48/800, E-53/800, E-70/2000, E-70/2300, E-82/2000, E-82/2300, E-82/2350, E-82/3000, E-92/2350, E-101/3050, E-101/3500, E-115/3000, E-115/3200, E-126/4200, E-126/7500, E-126/7580, E-141/4200; Eno ENO100/2200, ENO114/3500, ENO126/3500; GE GE100/2500, GE103/2750, GE120/2500, GE120/2750, GE130/3200; Nordex N90/2500, N100/2500, N117/2400, N131/3000, N131/3300, N131/3600; Senvion MM92/2050, MM100/2000, S104/3400, S114/3200, S114/3400, S122/3000, S122/3200, S126/6150, S152/6330; aerodyn SCD168/8000; Siemens SWT113/2300, SWT113/3200, SWT120/3600 (the default), SWT130/3300, SWT130/3600, SWT142/3150; Vestas V80/2000, V90/2000, V90/2000/GS, V90/3000, V100/1800, V100/1800/GS, V112/3000, V112/3075, V112/3300, V112/3450, V117/3300, V117/3450, V117/3600, V126/3000, V126/3300, V126/3450, V164/8000, V164/9500; Vensys VS112/2500. Each site+day costs one API request on first fetch; a single call is capped at 400 site-days — split longer ranges into multiple calls. Needs a key on the renewables tier. Output: `columns` once at the top level; each site has `rows` as arrays in column order.
Eingabe-Schema
{
"type": "object",
"properties": {
"sites": {
"items": {
"$ref": "#/$defs/WindSiteIn"
},
"title": "Sites",
"type": "array"
},
"date_from": {
"title": "Date From",
"type": "string"
},
"date_to": {
"title": "Date To",
"type": "string"
},
"granularity": {
"default": "daily",
"title": "Granularity",
"type": "string"
},
"variables": {
"default": null,
"items": {
"type": "string"
},
"title": "Variables",
"type": "array"
},
"timezone": {
"default": "auto",
"title": "Timezone",
"type": "string"
},
"units": {
"default": "metric",
"title": "Units",
"type": "string"
}
},
"required": [
"sites",
"date_from",
"date_to"
],
"$defs": {
"WindSiteIn": {
"description": "A wind farm: where it stands and which turbines it runs. The farm's\nsize is either a number of turbines or a total capacity, never both (the\nAPI takes exactly one). Defaults are the API's own and are always sent,\nfor the same reason as on SolarSiteIn.",
"properties": {
"lat": {
"description": "Latitude in decimal degrees",
"maximum": 90,
"minimum": -90,
"title": "Lat",
"type": "number"
},
"lon": {
"description": "Longitude in decimal degrees",
"maximum": 180,
"minimum": -180,
"title": "Lon",
"type": "number"
},
"label": {
"default": null,
"description": "Optional human-readable name echoed in results",
"title": "Label",
"type": "string"
},
"turbine_model": {
"default": "SWT120/3600",
"description": "Turbine model from the catalogue in the tool description",
"title": "Turbine Model",
"type": "string"
},
"turbine_count": {
"default": null,
"description": "Number of turbines; give this or total_capacity, not both",
"minimum": 1,
"title": "Turbine Count",
"type": "integer"
},
"total_capacity": {
"default": null,
"description": "Total capacity of the farm in MW; give this or turbine_count, not both",
"exclusiveMinimum": 0,
"title": "Total Capacity",
"type": "number"
},
"hub_height": {
"default": 100,
"description": "Hub height in metres",
"exclusiveMinimum": 0,
"title": "Hub Height",
"type": "integer"
},
"roughness": {
"default": "farmland",
"description": "Terrain around the site",
"enum": [
"water",
"open",
"farmland",
"suburban",
"urban"
],
"title": "Roughness",
"type": "string"
}
},
"required": [
"lat",
"lon"
],
"title": "WindSiteIn",
"type": "object"
}
},
"title": "get_wind_productionArguments"
}Community
Nachweis