A Model Context Protocol (MCP) server implementation for weather API, providing weather information
Two tools with basic schemas and descriptions, but significant gaps in parameter documentation and error handling. Tool names follow verb_noun convention (getWeather, getWeatherForecast), which is good. However, descriptions lack actionable context for LLM selection. Parameter descriptions exist but are generic. No output schema documented. No error handling guidance. No tool annotations. Schemas are present but incomplete, missing validation rules, ranges, and format constraints. The 'location' parameter accepts optional free-form strings without guidance on valid formats (city name vs coordinates vs zip code). The 'options' object is nested but lacks clear dependency documentation.
Get current weather information for a location. Returns weather data including temperature, humidity, and conditions.
Get weather forecast for a location. Returns weather forecast for the next few days.
No output schema documented. LLMs cannot plan downstream calls or extract structured data. Tool descriptions state 'Returns weather data' but do not specify field names, types, or structure.
Location parameter accepts free-form strings without validation guidance. Description says 'city name, zip code, coordinates, etc.' but does not specify format constraints, valid ranges, or examples. LLMs will guess and pass invalid values.
No error handling guidance. Tool descriptions do not explain what happens on invalid location, API failure, or missing API key. LLMs have no recovery path.
API key (QWEATHER_API_KEY) exposed as environment variable in source code. While not a tool parameter, this pattern is fragile. No mention of secret injection best practices in documentation.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2026-07-28+ | v2 |
Days parameter in getWeatherForecast accepts 'number' type but description says 'supports 3, 7days', unclear if other values are valid. No min/max bounds specified. LLMs may pass 100 or 0.