MCP server exposing official Belgian weather data (IRM/KMI): current conditions, forecasts, rain nowcast, pollen and warnings.
Six weather tools with consistent, well-structured schemas and clear descriptions. All tools have proper input schemas with typed parameters and descriptions. Tool names follow verb_noun convention (current_conditions, daily_forecast, etc.). Descriptions are substantive (100-200 chars), explaining WHAT the tool does and WHEN to use it. Parameters include helpful constraints (e.g., days clamped to [1,8], hours to [1,49]). However, output schemas are not documented in the visible code, LLMs cannot see what fields to expect from responses. Error handling is minimal; validation occurs but recovery guidance is absent. No tool annotations (readOnlyHint, etc.) despite all being read-only operations. Parameter descriptions could better explain coordinate format and language code options.
Return observed weather conditions for a location in Belgium. Conditions come from the nearest IRM weather station. The condition label is canonical English, with the raw IRM weather code exposed in ``condition_code``.
Return a daily weather forecast for a location in Belgium. Each day includes the official IRM text bulletin unless ``include_text`` is false.
Return an hourly weather forecast for a location in Belgium. Covers temperature, precipitation, pressure and wind. Every row carries an absolute ``time`` (ISO-8601, Brussels time).
Return the pollen forecast for Belgium. Covers the seven main allergens (alder, ash, birch, grasses, hazel, mugwort, oak) with risk levels (none, low, moderate, high, very high).
Return the short-term rain nowcast for a location in Belgium. Based on the IRM rain radar: expected precipitation per 10-minute frame over roughly the next 5 hours.
Return active weather warnings for Belgium, the Netherlands and Luxembourg. Warnings are filtered by country and include the alert level (yellow, orange, red), type (wind, rain, ice, thunder, etc.), and validity window.
Output schemas not documented. LLMs cannot see what fields (temperature, wind_speed, etc.) are returned by each tool, forcing them to guess downstream field names and risking failed chaining.
No tool annotations despite all tools being read-only. Adding readOnlyHint=true would signal to agents that these calls are safe to retry and have no side effects.
Language parameter descriptions do not enumerate valid values. Parameter says 'Bulletin language: "fr", "nl", "en" or "de"' but should use enum constraint in schema for machine-parseability.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Error messages are generic. Validation raises ValueError with helpful text (e.g., 'Municipality not found...'), but no recovery guidance for coordinate validation failures or out-of-range clamping.
Coordinate validation accepts latitude/longitude but description does not clarify WGS84 format or valid ranges. LLMs may pass invalid coordinates without clear feedback.