MCP server for Notamify API - Access NOTAMs (Notice to Airmen) data
The server provides a single well-defined tool (get_notams) with strong naming, comprehensive parameter documentation, and proper schema constraints. The tool uses verb_noun naming (get_notams), has a clear 194-character description explaining WHAT it does and HOW it works (auto-fetches all pages), and all parameters include type definitions with validation constraints. Input schema is fully specified with regex patterns, min/max bounds, and meaningful descriptions. However, the output schema is not explicitly documented in the tool definition, we see the API client returns a dict but no formal schema is declared for the LLM. Error handling is minimal (raises httpx exceptions without recovery guidance). The tool correctly injects API credentials via environment variables, avoiding secret leakage in parameters.
Retrieve all NOTAMs for specified airports and time period (automatically fetches all pages)
Output schema not formally documented in tool definition. Tool returns dict with 'notams', 'total_count', 'page', 'per_page' fields, but the schema is never declared to the LLM. This forces LLMs to guess the response structure and risks downstream parsing errors.
No error recovery guidance. Tool may raise httpx.HTTPError or ValidationError on invalid input (e.g. invalid ICAO code, API auth failure, rate limit), but errors are raw exceptions without actionable messages. LLM receives '400 Client Error' with no hint about what to try next.
Parameter descriptions reference 'e.g.' examples (e.g. ["KJFK"], ["EGLL", "EDDM"]) which LLMs tend to reuse literally. Should use formal regex pattern and enum constraints instead, but pattern is present in schema, the example is redundant and risky.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 66 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
No pagination documentation in tool description. The tool auto-fetches all pages internally, but the description does not mention: (1) total_count returned in response for awareness of result size, (2) any practical limits on how many NOTAMs will be returned, (3) whether very large result sets are truncated or paginated. Without this, LLMs cannot plan for large responses.