Weather MCP Server providing access to National Weather Service alerts and forecasts
Weather MCP server has two clearly defined tools with proper schemas and descriptions, but falls short of production quality in several key areas. Both tools use explicit Zod schemas with proper type constraints (latitude/longitude ranges, state code length). Descriptions are present and reasonably specific ('Get weather alerts for a state', 'Get weather forecast for a location'). However, error handling is minimal (generic 'Failed to retrieve' messages with no actionable recovery guidance), output schemas are undocumented (no specification of what fields the formatted text will contain), and there is no pagination support despite potentially returning large alert lists. The implementation is functional but lacks sophistication in error classification and response structuring that would allow agents to reason about failures and adapt.
Get weather alerts for a state
Get weather forecast for a location
Error responses lack actionable recovery guidance. All failures return generic text like 'Failed to retrieve alerts data' with no suggestion for next steps (e.g., 'Try again in 30s', 'Check if state code is valid', 'This API only supports US locations').
Output schema not documented. Tools return formatted text responses but do not declare the structure or fields the LLM should expect. The content is wrapped in a generic text/content array with no type hints or field descriptions.
get_alerts lacks pagination. The NWS API may return dozens or hundreds of active alerts for a large state, but the tool has no limit, offset, or cursor parameters. This could exhaust token budgets or degrade LLM reasoning on large result sets.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 54 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 42 | - | v1 |
Missing error classification. Errors are not categorized as retryable (timeout, rate limit), user-fixable (invalid coordinates), or fatal. The LLM cannot distinguish between 'try again in 30s' vs 'fix your input' vs 'this service is down'.
Tool descriptions lack context about prerequisites and API limitations. For get_forecast, the description does not mention that only US coordinates are supported, the error message hints at this but the main description does not. LLMs may attempt non-US coordinates without knowing they'll fail.
Parameter descriptions lack format guidance. 'Two-letter state code (e.g. CA, NY)' includes an example, which LLMs may reuse literally. Should specify 'Two-letter US state code in uppercase: CA, NY, TX, etc.' or use an enum.