MCP server that provides weather alerts and forecasts using the National Weather Service (NWS) API
Two tools with clear verb-noun naming (get_alerts, get_forecast) and reasonable descriptions (95-120 chars). Input schemas present with typed parameters and descriptions. However, output schemas are undocumented (tools return plain strings, not structured objects), and parameter descriptions lack format constraints, ranges, or validation guidance. No error handling guidance for LLMs. Missing pagination for potentially large alert lists. Descriptions are adequate but could better explain when to use each tool and what to expect.
Retrieves active weather alerts for a specified U.S. state.
Retrieves a 7-day weather forecast for a given geographic coordinate.
Output schemas undocumented. Both tools return plain strings instead of structured objects. LLMs cannot parse forecast periods, alert fields, or extract IDs for downstream operations. Violates pattern:response-shaper.
Parameter descriptions lack format constraints. 'state' parameter has no validation hint (must be 2-letter uppercase code). 'latitude'/'longitude' lack range constraints (±90, ±180). Invites invalid LLM input.
No error handling guidance. Tools silently return 'Unable to fetch' or 'No alerts found' without telling LLM what to do next (retry? ask user? try different location?). Violates pattern:recovery-guide.
get_alerts lacks pagination. Large alert lists (50+ states with active alerts) return all results as one string, risking context window exhaustion. No limit parameter or next_cursor documented.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Tool descriptions do not explain when to use each tool or what distinguishes them. 'Retrieves a 7-day weather forecast' does not clarify: is this hourly? daily? what's the difference from get_alerts?