Weather MCP server providing access to US National Weather Service alerts and forecasts
Two tools are present with basic descriptions and schema, but they exhibit significant gaps. Both tools use generic verb_noun naming (get_alerts, get_forecast) which is acceptable, but descriptions lack depth and parameter documentation is incomplete. No output schemas are documented, and error handling provides minimal guidance. The tools return unstructured strings rather than structured objects. Both tools lack parameter validation constraints and input format guidance. The server does not implement any error recovery patterns or field documentation needed for downstream tool chaining. Tool definitions are directly visible in weather.py, avoiding inference penalties, but quality remains mediocre for production use.
Get weather alerts for a US state.
Get weather forecast for a location.
No output schemas documented. Both tools return unstructured string responses instead of structured JSON objects with typed fields. LLMs cannot plan downstream operations or extract specific data reliably.
Parameter descriptions lack constraints and format guidance. 'state' parameter has no validation notes (must be 2 uppercase letters). 'latitude' and 'longitude' lack range constraints (±90, ±180) or format expectations.
Tool descriptions are minimal (19 and 33 characters) and lack WHEN/WHY guidance. No hints about dependencies (get_forecast requires valid lat/long coordinates). No explanation of what data is returned or when to prefer one tool over another.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 45 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 44 | - | v1 |
Error handling provides no recovery guidance. Functions return bare strings like 'Unable to fetch alerts' or 'Unable to fetch forecast data' with no suggested next steps. LLMs cannot determine if error is retryable, user-fixable, or fatal.
No idempotency guarantees stated. Repeated calls to get_alerts or get_forecast with same parameters should return identical results, but documentation does not confirm this. Agents may fear side effects.
Responses lack pagination support. get_alerts may return hundreds of alerts for a state but offers no limit, offset, or cursor mechanism. Large result sets blow context windows and violate enforce-result-limits pattern.