MCP server for meteoblue weather forecasts, images, and location search
Three tools with complete schemas and descriptions. Tool naming follows verb_noun pattern (search_locations, get_forecast, get_forecast_image). Descriptions are clear and actionable (avg 150-180 chars). All parameters have types and descriptions. Input schemas use Zod with proper constraints (regex patterns, min/max bounds, enums). Output is structured JSON. However, output schemas are not formally documented in tool definitions, LLMs must infer response structure from descriptions. Error handling returns actionable messages (e.g., 'Provide either location, or both latitude and longitude'). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all tools being read-only. Parameter descriptions could be more explicit about format expectations (e.g., 'IANA timezone such as Europe/Paris' is good, but 'Two-letter result language' lacks examples).
Get meteoblue forecast JSON by place name or coordinates. Place names are resolved through the Location Search API. For a specific time window, provide startHour and endHour plus either date or dayOffset; the tool then returns only inclusive basic-1h rows in that range.
Generate a meteoblue forecast meteogram by place name or coordinates. Returns the PNG directly. Image access depends on the API key's meteoblue entitlement.
Resolve a city, place, postal code, IATA code, or ICAO code to coordinates and elevation using the meteoblue Location Search API.
Output schemas not documented in tool definitions. LLMs cannot infer response structure (fields, types, nesting) from descriptions alone. Forecast returns complex nested JSON (metadata, units, data_1h with arrays), structure should be explicitly documented.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All three tools are read-only and idempotent, marking them as such enables agents to safely retry and reason about side effects.
Parameter 'page' in search_locations lacks description. Zod schema defines it but no human-readable explanation of pagination semantics or typical usage.
get_forecast_image returns PNG binary directly. No documented MIME type, size limits, or error cases (e.g., 'image generation failed'). LLMs cannot reason about binary responses.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
Mutually exclusive parameters (location vs latitude+longitude) documented in code but not in parameter descriptions. LLMs may pass both, causing ambiguity.