MCP server providing weather alerts and forecasts using the National Weather Service API
The Weather MCP server provides two functional tools with explicit descriptions and input schemas. Both tools have acceptable naming (verb_noun pattern: get_alerts, get_forecast) and documented parameters. However, the definitions have significant gaps that prevent higher scores: (1) parameter descriptions lack detail on constraints and formats (e.g., state code validation, latitude/longitude bounds); (2) output schemas are completely undocumented, the tools return plain strings rather than structured objects, making it impossible for LLMs to chain results or extract specific fields; (3) error handling is minimal with generic fallback messages that don't guide recovery; (4) no pagination support despite potentially returning variable-length alert lists; (5) tool descriptions are functional but brief (18 - 24 chars), missing context on when to use each tool or dependencies between them. The server shows basic competence but lacks the rigor expected of production tools.
Get weather alerts for a US state.
Get weather forecast for a location.
Output schemas completely undocumented. Both tools return plain strings, but LLMs cannot infer structure, field names, or downstream chaining opportunities. No documented return type means agents cannot plan sequential calls or extract specific data fields.
Parameter constraints not documented in descriptions. 'state' parameter accepts two-letter US state codes but no validation rules are stated (e.g., uppercase only? Is validation case-insensitive?). Latitude/longitude bounds not specified, LLMs may pass invalid coordinates like latitude=95 or longitude=200.
No pagination or result limiting documented. get_alerts may return hundreds of active alerts for a large state, but tool description and schema provide no limit, offset, or pagination mechanism. Returning all results can exceed context windows.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 49 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 42 | - | v1 |
Error handling lacks recovery guidance. Both tools return generic fallback strings ('Unable to fetch alerts or no alerts found') with no actionable next steps. LLMs do not know if the failure is transient (retry?) or permanent (try another tool?), or what caused it.
Tool descriptions are under 30 characters and lack context on when to use them or dependencies. 'Get weather alerts for a US state' does not explain when to call this instead of get_forecast, whether state codes are required, or how results relate to geographic queries.
Plain text output wastes tokens and prevents structured reasoning. Both tools format results as free-form strings. Returning structured JSON objects (list of alert objects with event, severity, area; forecast periods with temperature, wind, description) would enable LLMs to filter, summarize, or extract specific alerts without parsing text.