Weather MCP Server that provides weather alerts and forecasts using the National Weather Service API
Two tools with basic schemas and descriptions, but significant gaps in parameter documentation and output structure. Both tools have verb-noun naming (get-alerts, get-forecast) which is correct. Descriptions exist but are minimal (18-27 chars, below the 50-200 char LLM-optimized baseline). Input schemas use Zod with type constraints (latitude/longitude bounds, state length), but lack detailed parameter descriptions beyond the constraint hints. No output schema documentation. Error handling returns text responses but lacks actionable recovery guidance. No tool annotations (readOnlyHint, idempotentHint). Tool composition is reasonable, each does one thing, but responses are unstructured text rather than typed objects.
Get weather alerts for a state
Get weather forecast for a location
Minimal tool descriptions (18-27 chars). LLM-optimized descriptions should be 50-200 chars and answer WHAT, WHEN, and WHAT IT RETURNS. Current descriptions lack context for tool selection and downstream planning.
No output schema documentation. Responses are unstructured text (content[].text). LLMs cannot plan downstream calls or extract structured data. Should document return type: array of alert objects with event, area, severity, status, headline fields; or forecast periods with name, temperature, windSpeed, shortForecast.
Parameter descriptions are minimal. 'Two-letter state code (e.g. CA, NY)' and 'Latitude of the location' lack context on when to use the tool or what happens if constraints are violated. Should explain: 'US state code for alert lookup. Only active alerts returned; no alerts means no active warnings.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | 2026-07-28+ | v2 |
Error responses lack actionable recovery guidance. 'Failed to retrieve alerts data' and 'This location may not be supported by the NWS API' tell the LLM nothing about what to do next. Should include: 'Try a different state code' or 'Only US locations supported; try a US coordinate.'
No tool annotations. Tools are read-only (no state modification) but lack readOnlyHint annotation. This prevents agents from understanding retry safety and idempotency guarantees.