An 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 type definitions and parameter descriptions, meeting minimum requirements. However, output schemas are completely undocumented, tools return free-text strings with no structured field definitions, forcing LLMs to parse unstructured text. No error handling guidance, no pagination support, no output field documentation. No tool annotations (readOnlyHint, etc.). Descriptions lack WHEN/WHY context and dependency hints. Parameter descriptions are minimal but present.
Get weather alerts for a US state.
Get weather forecast for a location.
Output schemas completely undocumented. Both tools return free-text strings with no structured field definitions. LLMs cannot extract data for downstream tool calls or plan multi-step workflows.
Descriptions are too short (34-40 chars vs 50-200 char baseline). Lack WHEN/WHY context, prerequisites, and dependency hints. 'Get weather alerts for a US state' does not explain when to call this vs get_forecast or what the output contains.
No error handling guidance. make_nws_request() silently returns None on any exception, and tools respond with generic strings like 'Unable to fetch alerts'. LLMs receive no actionable recovery path (retry? call different tool? ask user?).
No tool annotations. Tools lack readOnlyHint, destructiveHint, or idempotentHint metadata. LLMs cannot determine if tools are safe to retry or have side effects.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 42 | 2026-07-28+ | v2 |
get_forecast hardcodes limit to 5 periods with no pagination support. Large result sets could exhaust context; no way to request more data or navigate results.