Advanced Weather MCP - Locations, Routes, Air Quality & Solar avatar
Advanced Weather MCP - Locations, Routes, Air Quality & Solar

Pricing

Pay per event

Go to Apify Store
Advanced Weather MCP - Locations, Routes, Air Quality & Solar

Advanced Weather MCP - Locations, Routes, Air Quality & Solar

MCP server providing structured access to global weather, air quality, solar and derived risk signals based on Open-Meteo.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Assmblr

Assmblr

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

6 days ago

Last modified

Share

Advanced Weather MCP – Locations, Routes, Air Quality & Solar

MCP server providing structured access to global weather, air quality, solar and derived risk signals based on Open-Meteo.

No external API keys required. Recommended memory is 512MB.

Units are metric by default. Set Actor input defaultUnits or per-tool units to imperial. Derived metrics follow the selected unit system. Free plans: only get_point_weather and get_air_quality (forecastDays <= 1, up to 4 hourly fields). Paid plans: all tools available.

What this server provides

This server exposes weather and environmental data in formats that are useful for automation and AI agents:

  • Point forecasts (current, hourly, daily)
  • Air quality and AQI
  • Solar radiation and energy potential
  • Route-based weather aggregation
  • Area-based weather aggregation
  • Derived comfort and safety metrics
  • Standardized risk flags

All data is normalized, timezone-aware, and suitable for direct machine consumption.

MCP tools

get_point_weather

Returns weather for a single GPS location.

Provides:

  • Temperature, wind, rain, humidity, cloud cover
  • Hourly or daily time series
  • Derived metrics: heat index, wind chill, dew point

Input example:

{
"lat": 50.745,
"lon": 3.6,
"mode": "hourly",
"forecastDays": 3,
"hourlyFields": [
"temperature_2m",
"relative_humidity_2m",
"precipitation_probability",
"wind_gusts_10m"
],
"timezone": "auto"
}

Output example:

{
"location": { "lat": 50.745, "lon": 3.6, "timezone": "Europe/Brussels" },
"units": { "hourly": { "temperature_2m": "C", "wind_gusts_10m": "km/h" } },
"hourly": [
{
"time": "2026-01-13T12:00",
"temperature_2m": 6.2,
"relative_humidity_2m": 80,
"precipitation_probability": 35,
"wind_gusts_10m": 28,
"dewPointC": 3.1
}
]
}

get_air_quality

Returns air quality and pollutant levels for a GPS location.

Provides:

  • AQI
  • PM2.5, PM10, NO2, O3
  • Summary values for the next 24 hours and overall period

Input example:

{
"lat": 50.745,
"lon": 3.6,
"forecastDays": 2,
"hourlyFields": ["aqi", "pm2_5", "pm10", "no2", "o3"],
"timezone": "auto"
}

Output example:

{
"location": { "lat": 50.745, "lon": 3.6, "timezone": "Europe/Brussels" },
"units": { "system": "metric" },
"hourly": [
{ "time": "2026-01-13T12:00", "aqi": 54, "pm2_5": 9.2, "pm10": 15.1, "no2": 12.4, "o3": 62.0 }
],
"summary": { "maxAqiNext24h": 62, "maxAqiOverall": 72, "category": "moderate" }
}

get_solar_forecast

Returns solar radiation for a GPS location.

Provides:

  • Hourly solar radiation metrics
  • Daily total energy per m2
  • Time windows with highest average radiation

Input example:

{
"lat": 50.745,
"lon": 3.6,
"forecastDays": 2,
"hourlyFields": ["shortwave_radiation", "direct_normal_irradiance"],
"timezone": "auto"
}

Output example:

{
"location": { "lat": 50.745, "lon": 3.6, "timezone": "Europe/Brussels" },
"units": { "system": "metric" },
"hourly": [
{ "time": "2026-01-13T12:00", "shortwave_radiation": 210, "direct_normal_irradiance": 340 }
],
"dailySummaries": [
{ "date": "2026-01-13", "totalShortwaveWhM2": 1550, "peakShortwaveWm2": 420 }
],
"bestChargingWindows": [
{ "start": "2026-01-13T11:00", "end": "2026-01-13T14:00", "averageShortwaveWm2": 280 }
]
}

get_route_weather

Returns weather aggregated along a route.

By default, the route uses the points you provide. Sampling only happens when you set sampling. With sampling: "auto", the tool resamples the route only if the total route length is at least 10 km, and it enforces a minimum spacing of 5 km (or 5 miles when units is imperial). If you want zero resampling, omit sampling entirely.

Provides:

  • Worst-case temperature, wind, rain and precipitation probability per hour
  • Optional per-point time series
  • Optional ETA-based summaries along the route
  • Risk flags based on thresholds

Input example:

{
"route": [[50.745, 3.6], [51.219, 4.402]],
"sampling": "auto",
"metrics": ["temperature", "wind_gusts", "precipitation_probability", "rain"],
"departureTime": "2026-01-13T12:00",
"averageSpeedKph": 80,
"includePointSummary": true,
"timezone": "auto"
}

Output example (perPointSummary truncated):

{
"samplesUsed": 16,
"routeLengthEstimateKm": 76.9,
"perHourWorstCase": [
{ "time": "2026-01-13T12:00", "temperatureMax": 7.1, "windGustsMax": 32, "precipitationProbabilityMax": 45 }
],
"routeSummary": {
"mode": "eta",
"departureTime": "2026-01-13T12:00",
"averageSpeedKph": 80,
"maxWindGusts": 32,
"maxPrecipitationProbability": 45,
"rainLikely": false,
"highWindLikely": false,
"snowLikely": false,
"hotspots": []
},
"perPointSummary": [
{ "pointIndex": 0, "lat": 50.745, "lon": 3.6, "distanceKm": 0, "timeWindow": { "start": "2026-01-13T12:00", "end": "2026-01-13T12:00" }, "temperatureMin": 6.8, "temperatureMax": 6.8 },
{ "pointIndex": 1, "lat": 50.781, "lon": 3.657, "distanceKm": 5.1, "timeWindow": { "start": "2026-01-13T12:04", "end": "2026-01-13T12:04" }, "temperatureMin": 6.7, "temperatureMax": 6.7 }
]
}

Note: perPointSummary includes one entry per sample (16 in this example). Only the first 2 are shown above.

get_area_weather

Returns weather aggregated over an area.

The area is sampled as a grid of GPS points.

Provides:

  • Hourly and daily aggregates across the grid
  • Maximum and average values per field
  • Risk flags based on thresholds

Input example:

{
"boundingBox": { "minLat": 50.6, "maxLat": 50.9, "minLon": 3.4, "maxLon": 3.9 },
"grid": { "rows": 3, "cols": 3 },
"fields": ["temperature", "wind_gusts", "precipitation_probability", "rain"],
"forecastDays": 2,
"timezone": "auto"
}

Output example:

{
"gridSize": { "rows": 3, "cols": 3 },
"pointsUsed": 9,
"units": { "system": "metric", "temperature": "C", "windSpeed": "km/h", "precipitation": "mm", "distance": "km" },
"aggregatedHourly": [
{ "time": "2026-01-13T12:00", "avgTemperature": 6.3, "maxWindGust": 30, "maxPrecipitationProbability": 42, "maxRain": 1.2, "maxSnowfall": 0 }
],
"aggregatedDaily": [
{ "date": "2026-01-13", "avgTemperature": 6.1, "maxWindGust": 33, "maxPrecipitationProbability": 58, "rainSum": 2.4, "snowfallSum": 0 }
],
"riskFlags": []
}

get_risk_flags

Returns standardized hazards for a location, route or area.

Provides:

  • Hazard type (wind, rain, heat, cold, air quality, visibility)
  • Severity
  • Time window
  • Explanation

Input example:

{
"lat": 50.745,
"lon": 3.6,
"startDate": "2026-01-13",
"endDate": "2026-01-14",
"timezone": "auto"
}

Output example:

{
"units": { "system": "metric" },
"hazards": [
{
"type": "high_wind",
"severity": "moderate",
"timeWindow": { "start": "2026-01-13T18:00", "end": "2026-01-13T18:00" },
"explanation": "Wind gusts reach 71.0 km/h (threshold 70 km/h).",
"value": 71,
"threshold": 70
}
]
}

Risk thresholds

Default thresholds are applied to derive hazards:

  • Wind gusts (windGustsKph)
  • Rainfall rate (rainMmPerHour)
  • Precipitation probability (precipitationProbability)
  • Heat index (heatIndexC)
  • Freezing temperature (freezeTempC)
  • Air quality (aqi)
  • Visibility (visibilityKm)

Thresholds can be overridden per request.

Pricing (Pay-Per-Event)

Pricing is based on how many locations are analyzed.

  • A single GPS location = 1 event
  • Routes and areas scale with how many locations they contain
  • Risk flags are free when derived from existing results

In other words:
1 event = 1 location of weather intelligence.

Output dataset

Every MCP call is written to the default dataset with:

  • Input summary
  • Output summary
  • Charged events
  • Timestamp