Minimal dependency-free Model Context Protocol server exposing get_weather and get_hourly_forecast tools, backed by the free Open-Meteo API
Two tools with clear verb-noun naming (get_weather, get_hourly_forecast) and complete input schemas. Descriptions are adequate (120-180 chars, within baseline 34-392 range) but lack actionable context for LLM selection. Parameters have types and descriptions, but lack constraints (enums, min/max). No output schema documented, LLMs cannot plan downstream calls or validate results. Error handling exists but is generic. No tool annotations (readOnlyHint, idempotentHint). Missing dependency hints and recovery guidance.
Get the hour-by-hour weather forecast for a location given its name. Returns temperature (Fahrenheit), precipitation probability, and conditions for each upcoming hour.
Get the current weather for a location given its name (city, town, or landmark). Returns conditions, temperature in Fahrenheit, and wind speed in mph.
No output schema documented. LLMs cannot predict response structure, plan chaining, or validate results. Baseline: 100% of A+ tools document return types.
Parameters lack numeric constraints. 'hours' parameter (1-48 range) has min/max in schema but description does not state the constraint. LLMs may pass invalid values.
Descriptions lack actionable context. No WHEN to use, no dependency hints (e.g., 'Call get_weather first to check current conditions before forecasting'). Baseline: descriptions should answer WHAT, WHEN, and WHAT it returns.
No tool annotations. Tools are read-only and idempotent but lack readOnlyHint and idempotentHint metadata. Agents cannot infer safety properties.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Error handling is generic. Geocoding failures return None with no recovery guidance. Should return 'Location not found. Try a broader search (e.g., city name without country)' to guide LLM retry.