MCP Server for Swiss weather and climate data — MeteoSwiss SwissMetNet, ICON forecasts, climate normals
Meteoswiss-mcp provides 6 weather/climate tools with complete input schemas and descriptions. Naming follows verb_noun convention (meteo_*). Descriptions are present but generic (avg ~80 chars, below 194-char baseline). All tools are READ_ONLY with no destructive operations. Schemas are well-formed with proper types and constraints (latitude/longitude as numbers, days as integers with ranges). However, descriptions lack actionable context (when to use, what to return, dependencies). Parameter descriptions are minimal. No output schemas documented. Error handling and recovery guidance absent. Composition is sound, tools are single-purpose and chainable via coordinates/station codes.
Climate normals (1991-2020) for Swiss stations: monthly mean temperature, precipitation, sunshine hours
Current weather observations from a SwissMetNet station (temperature, precipitation, wind, etc.)
Weather forecast for a location using MeteoSwiss ICON-CH1/CH2 model (up to 5 days, hourly/daily)
Quick weather check for school planning (temperature, precipitation, wind) at a location
List available SwissMetNet weather stations with metadata (name, coordinates, altitude, canton)
Active official weather warnings from MeteoSwiss (public, no authentication required)
meteo_warnings has no visible input schema, cannot verify parameter structure or constraints
Descriptions lack actionable context: no 'when to use', 'what it returns', or dependency hints. Avg 80 chars vs 194-char baseline. LLMs cannot distinguish meteo_current from meteo_forecast without deeper reasoning.
No output schemas documented. LLMs cannot plan downstream calls or extract fields. E.g., does meteo_current return wind_speed, wind_direction, wind_gust? Does meteo_stations return canton, altitude, coordinates?
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | <=2025-11-25 | v2 |
No error handling or recovery guidance. If station code is invalid or API fails, LLM receives no hint on what to do next (retry, call meteo_stations first, etc.).
Parameter descriptions are minimal. 'station' param lacks guidance on valid format (3-letter code, case sensitivity, examples). 'days_ahead' in meteo_school_check lacks explanation of what 0 vs 1 vs 5 means.