A weather information MCP server that provides weather data for specified locations
Single tool with minimal schema definition, sparse parameter description, and no output schema documentation. The tool is explicitly registered via @mcp.tool() decorator in main.py, making it directly visible. However, the parameter 'location' has a basic type hint but lacks a substantive description in the FastMCP decorator. No enum constraints, no validation guidance, no error recovery hints. The tool description ('Get weather info for specific location.') is only 42 characters, below the baseline average of 194 chars, and provides no context on when to use it, what it returns, or how it handles errors. The underlying implementation calls an external API (wttr.in) with basic error handling (try/except), but no structured output schema is declared. The response is wrapped in a dict with 'result' or 'error' keys, but this structure is not documented in the tool definition.
Get weather info for specific location.
Tool description too brief (42 chars). Lacks context on when to use, expected output, error handling, or prerequisites. Baseline for A+ tools is 50-200 chars with explicit action description.
Parameter 'location' lacks substantive description. FastMCP @mcp.tool() registers it with type 'string' but no description text explaining expected format, examples, or constraints (city name vs lat/lon, supported regions, etc.).
No output schema documented. Return type is dict with 'result' or 'error' keys, but structure is not declared in the tool definition. LLM cannot predict what fields will be present or their types.
Error handling returns bare exception string in 'error' key. Does not categorize error as retryable, user-fixable, or fatal. Does not suggest recovery steps (e.g., 'Try a different location name or verify city spelling').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 45 | 2026-07-28+ | v2 |
No input validation or constraint documentation. Parameter accepts any string; no guidance on format (city name, coordinates, timezone). LLM will guess at input format, risking malformed API calls.
Tool name 'check_weather' is acceptable but generic. Does not clearly distinguish from similar weather tools (e.g., 'forecast_weather', 'get_current_weather'). Consider 'get_current_weather' for clarity.