A weather forecast MCP server that provides weather data for locations
Single tool with minimal definition quality. Tool name 'get_forecast' follows verb_noun convention (+). Description is present but generic at 34 chars, below the 50-200 char LLM-optimized range. Input schema has proper types (float) and basic descriptions, but lacks critical metadata: no output schema documented, no error handling guidance, no pagination support despite calling external API, no timeout/retry semantics. Tool returns raw API response (dict) without shaping for agent consumption. No parameter constraints (latitude/longitude ranges), no validation rules, no recovery guidance on API failures.
Get weather forecast for a location.
No output schema documented. Tool returns dict from external API without specifying structure, fields, or types. LLM cannot plan downstream operations or extract specific data.
Tool description is 34 chars ('Get weather forecast for a location.'), below 50-char minimum for LLM optimization. Lacks WHEN to use, WHAT it returns, and prerequisites.
Input parameters lack constraints. Latitude/longitude have no min/max bounds, format hints, or valid range documentation. LLM could pass invalid values (e.g., latitude=999).
No error handling or recovery guidance. Tool calls external API (open-meteo) with no timeout, retry logic, or error messages. If API fails, LLM receives raw exception with no actionable next step.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2026-07-28+ | v2 |
Raw API response returned without shaping. Tool dumps entire open-meteo JSON response to LLM context, wasting tokens on metadata irrelevant to chat (e.g., timezone, elevation, API version). Should strip to essential fields only.