An MCP server that provides weather alerts and forecasts using the National Weather Service API, designed to work with Gemini AI
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 typed parameters and descriptions, but output schemas are completely undocumented, LLMs cannot plan downstream calls or extract structured data. No error handling guidance, no pagination support despite potentially large result sets, no tool annotations (readOnlyHint, idempotentHint). Descriptions lack WHEN/WHY context and dependency hints. Parameters lack constraints (e.g., state should be an enum of valid US state codes). Overall: functional but below production quality.
Get weather alerts for a US state.
Get weather forecast for a location.
Output schemas completely undocumented. Both tools return plain strings with no structured field definitions. LLMs cannot extract data for downstream tool calls or plan multi-step workflows.
Descriptions too short (34-40 chars vs. 50-200 char baseline). Lack WHEN/WHY context. 'Get weather alerts for a US state' does not explain when to call this vs. get_forecast, or what the LLM should do with the result.
No input validation or constraint documentation. 'state' parameter accepts any string; should be an enum of valid US state codes (CA, NY, TX, etc.). LLMs will hallucinate invalid state codes.
No error handling guidance. If NWS API fails or location is invalid, tools return generic strings ('Unable to fetch alerts'). LLMs cannot determine if error is retryable, user-fixable, or fatal.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | 2026-07-28+ | v2 |
No pagination or result limits documented. get_alerts could return hundreds of active alerts; no limit stated, no pagination parameters offered. Large unstructured responses waste tokens and degrade LLM reasoning.