A Model Context Protocol server providing weather forecasts and alerts using the National Weather Service API
Critical issues: 4 of 8 tools are exact duplicates (greeting, add appear twice; get_alerts, get_forecast appear twice), indicating broken tool registration or multiple conflicting server instances. The 4 unique tools have minimal descriptions (10-50 chars, well below the 194-char baseline). Parameter 'b' in add() has null description. No output schemas documented. No error handling guidance. Tool definitions are scattered across multiple files (server.py, weather.py, greeting.py) with inconsistent registration patterns. FastMCP decorators visible but schemas are inferred from Python type hints rather than explicitly declared.
This tool is used to add two numbers.
This tool is used to add two numbers.
Get weather alerts for a US state.
Get weather alerts for a US state.
Get weather forecast for a location.
Get weather forecast for a location.
This tool just displays a message.
Duplicate tool registration: greeting, add, get_alerts, and get_forecast each appear twice in the tool list. This indicates either multiple conflicting MCP server instances or broken tool deduplication in the framework.
Parameter descriptions missing or incomplete: add() parameter 'b' has null description. greeting() parameter 'hint' description is trivial ('The hint is always "MCP Server"'). LLMs cannot infer parameter semantics from names alone.
No output schemas documented. Tools return strings (greeting, add, get_alerts, get_forecast) but LLMs have no formal schema describing return structure, field names, or data types. This prevents downstream tool chaining and structured parsing.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2026-07-28+ | v2 |
This tool just displays a message.
Minimal tool descriptions: greeting (31 chars), add (40 chars), get_alerts (50 chars), get_forecast (50 chars). All fall below the 194-char baseline. Descriptions lack context on WHEN to use each tool, prerequisites, or what the output contains.
No error handling guidance. get_alerts and get_forecast call external NWS API but return bare strings on failure ('Unable to fetch alerts or no alerts found'). LLMs receive no actionable recovery steps, retry guidance, or error classification.