A Model Context Protocol server providing weather alerts and forecasts using the National Weather Service API
The Weather MCP Server has two clearly named tools with good descriptions and partial schema coverage. Both tools follow verb_noun naming (get_alerts, get_forecast), matching Arcade baseline conventions. Tool descriptions are substantive (150-250 chars), exceeding the minimum but some lack actionable guidance for LLM selection. Input schemas are present with type declarations and parameter descriptions, though output schemas are undocumented. Error handling is minimal, responses include generic error messages without recovery guidance or categorization. No output schema documentation forces LLMs to infer response structure, violating pattern:tool. Parameters accept user inputs without validation constraints (state codes, coordinates), missing enums, ranges, and format specifications.
Get active weather alerts for a US state. Retrieves current weather alerts, warnings, and watches from the National Weather Service for the specified state. Returns formatted information including event type, affected areas, severity levels, descriptions, and any special instructions.
Get detailed weather forecast for a specific location. Retrieves the current weather forecast from the National Weather Service for the given coordinates. Returns a detailed forecast for the next several periods including temperature, wind conditions, and detailed weather descriptions.
Output schemas are undocumented. Tool descriptions lack specification of return structure, forcing LLMs to infer response fields. Returns dict[str, Any] without documenting which fields are guaranteed, which are conditional, or what data types they contain.
Input parameters lack validation constraints. 'state' parameter accepts free-form strings without enum enforcement, LLM can pass invalid state codes (e.g., 'XX', 'USA'). 'latitude' and 'longitude' lack range constraints (valid: -90 to +90, -180 to +180) and precision guidance.
Error handling lacks recovery guidance. When NWS API fails or returns no data, tool returns generic 'Unable to fetch' message with no suggestions for next steps. Violates pattern:recovery-guide, should guide LLM toward alternatives (e.g., 'State code not found, try search_states() for valid codes').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 56 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 50 | - | v1 |
Tool descriptions lack context for LLM selection. 'get_alerts' and 'get_forecast' both retrieve weather data, but descriptions don't clarify the distinction: when should an LLM call alerts vs. forecast? 'alerts' covers warnings/watches; 'forecast' covers future conditions, this key difference is buried in docstrings, not front-and-center in descriptions.
Parameter descriptions include example values (CA, NY, TX for state; 37.7749 for latitude). Replace examples with format constraints: 'Two-letter US state code: A-Z uppercase only' and 'Decimal degrees: -90 to +90'.