MCP server for MeteoSwiss weather data — forecasts, real-time measurements, stations, pollen.
The server provides 7 weather-focused tools with generally adequate naming and descriptions. However, there are significant gaps in schema completeness, parameter descriptions, and error handling guidance. Most tools lack explicit output schema documentation, and several parameters are under-described. The server follows basic tool patterns but falls short of production-grade quality expected for reliable agent integration. Average per-tool score: 62.
Fetch full content from a MeteoSwiss webpage and convert to markdown or plain text. Use the search tool first to discover valid page URLs, then pass the full URL as the id parameter.
Get historical climate data and statistics for Swiss locations. Returns temperature, precipitation, and other climate variables.
Get real-time weather measurements from official MeteoSwiss weather stations across Switzerland. Returns current temperature, precipitation, wind, and sunshine readings.
List MeteoSwiss weather stations available for querying. Returns station names, codes, coordinates, and elevation.
Get a multi-day weather forecast for any Swiss location. Returns daily summaries (temperature, precipitation, sunshine, wind, weather icon) plus a hierarchical hourly breakdown of every series. This uses official MeteoSwiss Open Data — the same forecasts powering the MeteoSwiss app and website. Accepts: - Postal codes: "8001" (Zurich), "3000" (Bern), "1200" (Geneva) - Station abbreviations: "SMA" (Zurich Fluntern), "BER" (Bern) - Place names: "Zurich", "Basel", "Lugano" Coverage: ~6000 Swiss locations (all postal codes + weather stations + mountain points). Forecast horizon: up to 9 days. Updated hourly.
Output schemas are not documented for ANY tool. LLMs cannot plan downstream tool calls or field extraction without knowing the response structure. Search returns 'relevant pages with URLs', but what object structure? Is it {pages: [{title, url, summary}]} or {results: [{...}]} or an array?
'location' parameter is used by 4 tools (meteoswissLocalForecast, meteoswissCurrentWeather, meteoswissPollenData, meteoswissClimateData) but only described as 'Postal code, station abbreviation, or place name' in one tool. No validation hints (format, length, case sensitivity). LLMs may pass invalid formats.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 62 | 2025-06-18+ | v2 |
Get current pollen forecasts for Swiss locations. Returns pollen concentrations and threat levels for grass, trees, and other allergens.
Search MeteoSwiss website content in multiple languages (DE, FR, IT, EN). Returns relevant pages with URLs that can be passed to the fetch tool. Always returns up to 10 results per page — the upstream API has a fixed page size that cannot be changed. Note: pagination may return duplicate results across pages (upstream API limitation).
No error guidance for any tool. If meteoswissLocalForecast receives an invalid location (typo, out-of-coverage), the description doesn't hint what recovery action to take. Should LLM retry? Call meteoswissListStations? Ask user? This forces agents to guess.
'format' parameter in fetch tool lacks an enum. Description says 'markdown or text', but LLMs may pass 'md', 'txt', 'plaintext', 'markdown', or 'plain' variants. Explicit enum prevents hallucination.
'filter' parameter in meteoswissListStations is under-described. Does it search station names, codes, or both? Substring match or regex? Case-sensitive? If no schema constraints, LLM may misuse the parameter.
'timeframe' parameter in meteoswissClimateData lacks any guidance. What format? 'last-year'? '2020-2023'? ISO date range? Enum of presets? LLM cannot infer valid inputs.
No tool composition hints. Search→fetch workflow is mentioned in fetch description, but meteoswissListStations→meteoswissLocalForecast dependency is not documented. LLMs don't automatically know to call ListStations first when a location lookup fails.