An MCP server that provides weather alerts and forecast data from the National Weather Service (NWS) API
Two tools with basic schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. Both tools have action-verb names (get-alerts, get-forecast) and non-empty descriptions (18-27 chars), meeting minimum naming standards. Input schemas are present with type constraints (state: 2-char string; lat/lon: numbers with min/max bounds), but parameter descriptions are minimal (10-20 chars) and lack context about when to use each tool or what the output structure contains. No documented output schemas, error handling guidance, or recovery paths. Tools are read-only (safe), but descriptions do not explicitly state this. Baseline: avg tool description 194 chars; these are 18-27 chars (p10 baseline). Avg param description 72 chars; these are ~15 chars.
Get weather alerts for a state
Get weather forecast for a location
Output schemas not documented. LLMs cannot infer what fields to expect from get-alerts or get-forecast responses, forcing them to guess at downstream field names and risk extraction errors.
Parameter descriptions are too brief (10-20 chars vs baseline 72 chars). 'Two letter state code (e.g. CA, NY, VA)' for state param is adequate, but latitude/longitude descriptions lack context: what coordinate system? What precision? When should the user call this vs get-alerts?
Tool descriptions lack WHEN-to-use guidance. 'Get weather alerts for a state' does not explain: Is this for current alerts only? Historical? What does the response contain? When should an agent choose this over get-forecast?
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | 2026-07-28+ | v2 |
No error handling or recovery guidance. If NWS API returns null (see weather.ts makeNwsRequest), the tool silently fails with no message to guide the LLM on retry or fallback.
State parameter accepts only 2-char codes but description includes examples (CA, NY, VA). Use enum constraint instead.