MCP Server that connects to OpenWeatherMap API through SSE
Three tools with complete input schemas and basic descriptions, but significant gaps in parameter documentation and output schema clarity. Tool names follow verb_noun convention (get_*). Descriptions are present but generic (10-50 chars), below the 50-200 char LLM-optimized baseline. Parameters lack descriptions for several fields (e.g., 'units' enum values not explained). No output schema documented. Error handling returns raw exception text rather than actionable recovery guidance. Code shows incomplete formatting logic (coordinates field truncated in _format_current_weather). Missing parameter validation and constraint documentation.
Get current weather for a city
Get weather by geographic coordinates
Get weather forecast for a city
Tool descriptions are too short (10-50 chars) and lack context for LLM selection. 'Get current weather for a city' does not explain when to use this vs get_weather_by_coordinates, what fields are returned, or prerequisites.
Parameter 'units' enum values ('metric', 'imperial') are not described. LLMs cannot infer what these mean without explicit documentation of the unit system (Celsius vs Fahrenheit, m/s vs mph).
No output schema documented. LLMs cannot plan downstream operations or extract required fields. Response structure (location, current, weather objects) is invisible to the agent.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | <=2025-11-25 | v2 |
Error handling returns raw exception text ('Error fetching weather data: <str(e)>') instead of actionable recovery guidance. LLM cannot determine if error is retryable, user-fixable, or fatal.
Code contains incomplete formatting logic: _format_current_weather has truncated 'coordinates' field (missing latitude/longitude values). This will produce malformed output.