A weather MCP server that provides weather alerts and forecasts using the National Weather Service (NWS) API
Two tools with basic schemas and descriptions, but significant gaps in error handling, output documentation, and parameter constraints. Tool names follow verb_noun convention (get-alerts, get-forecast), which is good. Descriptions are present but minimal (10-40 chars baseline; these are 30-40 chars). Input schemas use Zod with type constraints (latitude/longitude bounds, state length), but output schemas are not documented, LLMs cannot predict response structure. Error handling returns text blobs without actionable recovery guidance. No tool annotations (readOnlyHint, idempotentHint). Missing pagination for alerts (could return hundreds). No rate limiting or timeout documentation.
Get weather alerts for a state
Get weather forecast for a location
Output schemas not documented. LLMs cannot predict response structure (fields, types, nesting). Responses are free-text strings wrapped in content[].type='text', forcing LLMs to parse unstructured output.
Tool descriptions are too brief (30-40 chars). Baseline for A+ tools is 50-200 chars. Current descriptions lack WHEN to use, WHAT it returns, and prerequisites. E.g., 'Get weather alerts for a state' does not explain that only US states are supported or that results may be empty.
Error responses lack recovery guidance. Errors return plain text ('Failed to retrieve alerts data') without suggesting next steps. Pattern requires: 'User not found. Try search_users() with a partial name.' Current errors give LLMs nothing actionable.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | 2026-07-28+ | v2 |
No pagination for get-alerts. NWS API can return many alerts per state. Tool lacks limit/offset parameters and total count in response. Large result sets blow context window and degrade LLM reasoning.
No tool annotations. Tools lack readOnlyHint (both are read-only), idempotentHint (both are idempotent), or destructiveHint. Annotations help agents reason about retry safety and side effects.