MCP Server for Aviation weather
Single tool with critical definition gaps. Tool name 'get_aviation_weather' follows verb_noun convention (+), but description is minimal (67 chars, below 100-char baseline for clarity). Input schema present with type and description for 'airport' parameter (+), but output schema completely undocumented, tool returns raw response.content (bytes) with no structured schema, violating pattern:tool requirement. No error handling guidance: McpError raised but LLM cannot determine recovery path. No pagination, no result limits, no field documentation. Tool lacks idempotency guarantees and does not strip API metadata.
Get aviation weather for a given airport. Args: airport (str): The ICAO code of the airport. Returns: str: The aviation weather report.
Output schema completely undocumented. Tool returns raw response.content (bytes) with no structured field definitions. LLM cannot parse or chain results.
Tool description is 67 characters, below the 100-char minimum for LLM clarity. Lacks WHEN to use, WHAT it returns, and any prerequisites. Does not state that it fetches live data or explain METAR format.
Error handling provides no recovery guidance. McpError(INTERNAL_ERROR) and McpError(INVALID_PARAMS) raised but LLM cannot determine next steps. No actionable error messages.
No input validation. 'airport' parameter accepts any string; no enum, pattern, or length constraint. LLM can pass invalid ICAO codes without feedback.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 39 | 2026-07-28+ | v2 |
Tool returns raw bytes (response.content) instead of structured text. METAR data should be parsed and returned as a documented object with fields (airport, time, wind, visibility, etc.) for LLM reasoning.