MCP server for OpenWeatherMap One Call API 3.0 with static configuration
Five tools with complete JSON Schema definitions and clear descriptions. All tools follow verb_noun naming (weather_get_*). Schemas include proper type constraints (lat/lon ranges, enum units, min/max for numeric parameters). Descriptions are concise (20-60 chars) and action-oriented. However, output schemas are not documented, LLMs cannot predict response structure. Error handling is basic (generic McpError wrapping). No tool annotations (readOnlyHint, idempotentHint). Parameter descriptions are minimal; some lack context (e.g., 'hours' and 'days' lack explanation of what they control). No guidance on when to use each tool vs. alternatives.
Convert city name to geographic coordinates
Get active weather alerts and warnings for a location
Get current weather conditions for a location
Get daily weather forecast for the next 8 days
Get hourly weather forecast for the next 48 hours
Output schemas not documented. LLMs cannot predict response structure (fields, types, nesting). Agents must infer from trial calls, wasting tokens and risking misinterpretation.
No tool annotations (readOnlyHint, idempotentHint). All tools are read-only but lack explicit hints. Agents cannot distinguish safe-to-retry calls from destructive ones.
Parameter descriptions lack context. 'hours' and 'days' parameters do not explain what they control (forecast window, granularity). 'limit' in geocode lacks explanation of what it limits.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | <=2025-11-25 | v2 |
Error handling is generic. McpError wrapping provides no recovery guidance. LLMs receive 'Tool execution failed: <message>' with no hint on whether to retry, ask user, or abandon.
No tool discovery guidance. Descriptions do not explain when to use weather_get_current vs. weather_get_hourly vs. weather_get_daily. LLMs must guess based on name alone.