MCP server that provides weather alerts and forecasts using 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 types and descriptions, but output is unstructured plain text. No error recovery guidance, no pagination support, no structured response schema documented. Lacks tool annotations (readOnlyHint present in metadata but not in schema). No parameter validation constraints (e.g., state code format, lat/lon bounds). Error handling returns generic strings without actionable recovery steps.
Get weather alerts for a US state.
Get weather forecast for a location.
Descriptions too short (34-40 chars). LLM-optimized descriptions should be 50-200 chars and answer WHAT, WHEN, and WHAT IT RETURNS. Current descriptions lack context for tool selection.
Output is unstructured plain text (string return type). No documented output schema. LLMs cannot extract structured data (alert IDs, forecast periods, timestamps) for downstream chaining or parsing.
No input validation constraints. 'state' parameter accepts any string; should validate 2-letter US state codes (enum or regex pattern). 'latitude' and 'longitude' lack bounds (±90, ±180).
Error responses are generic ('Unable to fetch alerts', 'No alerts found'). No recovery guidance. LLM cannot determine if error is retryable, user-fixable, or fatal.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 45 | 2026-07-28+ | v2 |
get_forecast returns only 5 periods (hardcoded limit). No pagination support, no limit parameter, no total count. If API returns 100+ periods, agent cannot access them.