An MCP server that provides weather information tools using the OpenWeatherMap API, designed to work with an LLM agent via FastAPI and SSE transport.
Two tools with basic schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. Both tools have action-verb names (get_*) and non-empty descriptions (48-56 chars), meeting minimum thresholds. However, parameter descriptions are minimal, output schemas are not documented, and error handling guidance is absent. The 'days' parameter in get_forecast has a default but lacks min/max constraints. No tool annotations (readOnlyHint, etc.) despite READ_ONLY risk classification. Schemas are present but sparse, only 'city' and 'days' parameters documented, no return type specifications visible in source.
Get the current weather for a specific city.
Get the weather forecast for a specific city.
Output schemas not documented. LLMs cannot plan downstream calls or extract fields without knowing what get_current_weather and get_forecast return. No structured response definition visible in source.
Parameter 'days' in get_forecast lacks min/max constraints. Description says 'default 3, max 5 for free tier usually' but does not enforce bounds. LLMs may pass invalid values (0, 100, negative) without validation.
Tool descriptions are generic and lack WHEN/WHY guidance. 'Get the current weather for a specific city' does not explain when to use get_current_weather vs get_forecast, or what data each returns. LLMs cannot disambiguate.
No tool annotations despite READ_ONLY risk classification. Tools should declare readOnlyHint=true in schema to signal safety to agents. Current spec (2026-07-28) supports tool annotations; none are present.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
No error handling guidance. If city is not found or API fails, LLMs receive no recovery hints. Descriptions should include 'If city not found, try a nearby city or region name' or similar.