MCP-Server für Wetterprognosen über Open-Meteo (kein API-Key)
Three weather tools with clear, domain-specific descriptions in German. All tools have input schemas with type definitions and parameter descriptions. Naming follows verb_noun pattern (get_*). However, output schemas are not formally documented in the code, only inferred from formatting.py functions. Parameter descriptions are adequate but lack explicit constraints (e.g., hours 1 - 48, days 1 - 16 are mentioned in docstrings but not in schema). No error handling guidance, no recovery patterns, and no tool annotations (readOnlyHint, idempotentHint). Tools are read-only and idempotent but this is not declared. Descriptions are well-localized to German and contextual (e.g., 'Für Reisewetter je Roadtrip-Station...'), which aids LLM selection, but lack explicit WHEN/WHY guidance in English-centric patterns.
Aktuelles Wetter: Temperatur, gefühlte Temperatur, Luftfeuchte, Wind, Bewölkung, aktueller Niederschlag. Ohne location = Zuhause (Steinenbronn).
Tagesvorhersage: Min/Max-Temperatur, Regensumme + Wahrscheinlichkeit, Sonnenstunden, Wetterlage. days 1–16 (Standard 7). Ohne location = Zuhause. Für Reisewetter je Roadtrip-Station die location auf den jeweiligen Ort setzen.
Stündliche Vorhersage: Temperatur, Regen (mm + Wahrscheinlichkeit), Wind, Wetterlage. hours 1–48 (Standard 24). Ohne location = Zuhause. Für 'kann ich die Fenster nachts offen lassen?' die Nachtstunden auf Niederschlag und Minimaltemperatur prüfen.
Output schemas not formally documented. Formatting functions exist (format_current, format_hourly, format_daily) but return types are not declared in tool definitions. LLMs cannot plan downstream operations or validate response structure.
Parameter constraints (hours 1 - 48, days 1 - 16) are enforced in code (max/min calls) but not declared in schema descriptions. LLMs cannot see these bounds and may pass invalid values.
No tool annotations. All three tools are read-only and idempotent, but readOnlyHint and idempotentHint are not declared. Agents cannot distinguish safe tools from destructive ones.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
No error handling or recovery guidance. If geocoding fails or API is unreachable, no actionable error message guides the LLM. Bare exceptions will be returned.
Location parameter accepts null/empty string with implicit default (Steinenbronn). This is convenient but undocumented in schema. LLMs may not realize passing null is valid and equivalent to omitting the parameter.