MCP server for retrieving weather alerts and forecasts from the National Weather Service API
Two tools with basic verb-noun naming (get_alerts, get_forecast). Both have short descriptions (34-40 chars, below the 50-200 char LLM-optimized baseline). Input schemas are present with typed parameters and descriptions, but output schemas are completely undocumented, tools return plain strings with no structured format. No error handling guidance, no parameter constraints (e.g., state code validation), and no indication of what fields the LLM should expect in responses. Composition is reasonable (two distinct concerns), but lack of structured output and error recovery patterns significantly limits agent usability.
Get weather alerts for a US state.
Get weather forecast for a location.
Output schemas completely undocumented. Both tools return plain strings with no structured format. LLMs cannot plan downstream calls or extract typed fields.
Descriptions too short (34-40 chars vs. 50-200 char baseline). Lack context for LLM tool selection. 'Get weather alerts for a US state' does not explain when to use this vs. alternatives or what the response contains.
No error handling guidance. make_nws_request() returns None on failure, but tools return generic 'Unable to fetch' strings. LLMs receive no recovery hints (e.g., 'Try again in 30s' or 'Check coordinates are valid').
No input validation or constraints. 'state' parameter accepts any string; no enum of valid US state codes. 'latitude'/'longitude' accept any float with no range validation (±90/±180). LLMs can pass invalid coordinates without feedback.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | 2026-07-28+ | v2 |
No pagination or result limits documented. get_forecast hardcodes limit to 5 periods, but this is not mentioned in the description. If NWS returns 100+ alerts, get_alerts returns all of them, risking context window exhaustion.