A weather data MCP server that provides weather information for Indian cities
This server has a single tool 'getweatherdata' with minimal definition quality. The tool lacks a proper description (null parameter description), has an input schema with only type information and no parameter validation constraints. The parameter description is explicitly null, violating the baseline requirement that 100% of A+ tool params have descriptions. The tool name is acceptable but generic. Error handling is present in the implementation but not documented in the tool definition. Output is returned as a JSON string rather than structured typed objects.
Tool has no description. The 'getweatherdata' tool is registered with no description text, violating the critical requirement that every tool must have a non-empty description. LLMs cannot determine when or why to select this tool.
Parameter 'city' has null description. The 'city' parameter has description:null, violating the baseline requirement that 100% of A+ tool params must have descriptions. LLMs cannot infer that this is a city name (e.g., 'pune', 'mumbai') or the expected format.
Parameter lacks validation constraints. The 'city' parameter accepts any string, but the implementation only recognizes 50 hardcoded city names. There is no enum constraint, pattern, or description hint that indicates valid values. LLMs will pass invalid city names, causing the tool to return an error object.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 38 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 20 | - | v1 |
Output schema is not documented. The tool returns a content array with text type, but the structure and fields of the returned JSON object (temperature, forecast, humidity, windSpeed, condition, or error + message) are not formally documented. LLMs cannot reliably parse or chain downstream calls.
Error response format is unstructured. When a city is not found, the tool returns {error: true, message: '...'} as a JSON string within the text field. This unstructured error format does not follow the recovery-guide pattern, it does not tell the LLM what to do next or suggest alternatives.