Variflight MCP Server - provides flight search, tracking, weather, and comfort analysis tools
The server registers 9 flight search and information tools with detailed descriptions and Zod-based schemas. Naming follows verb_noun pattern consistently (search*, get*, all action-oriented). Descriptions are comprehensive with usage guidance and constraints (10 - 250 chars, mostly well above the baseline 194-char average). All parameters have type definitions and descriptions. However, output schemas are NOT documented, the code returns raw JSON stringified responses without declaring field structures. Error handling is basic (try-catch with error messages, no recovery guidance). Some parameter naming could be clearer (depcity vs dep confusion; dep_city vs depCityCode inconsistency across tools). The server lacks tool annotations (readOnlyHint, destructiveHint). Per-tool assessment: searchFlightsByDepArr (78), searchFlightsByNumber (78), getFlightTransferInfo (75), flightHappinessIndex (75), getRealtimeLocationByAnum (70), getTodayDate (65), getFutureWeatherByAirport (72), searchFlightItineraries (60, minimal description), getFlightPriceByCities (55, parameter naming inconsistent, description very short). Average: 62.
Use this tool when the user wants comfort-focused details for a known flight, such as punctuality, aircraft type, cabin configuration, seat comfort, meals, entertainment, or other onboard experience details. This tool works best when a specific flight number and date are already known. Do not use it for fare search, itinerary recommendation, or raw price comparison.
Get the lowest flight prices between departure and arrival cities on a specific date.
Search connecting flight options between a departure city and an arrival city on a specific date. Use city IATA 3-letter codes such as BJS, SHA, or LAX. This tool is for transfer or connection itineraries between cities, not for airport weather, airport facilities, or realtime tracking. Date must be in YYYY-MM-DD format. For today's date, use getTodayDate instead of hardcoding.
Get the 3-day airport weather forecast for today, tomorrow, and the day after tomorrow by airport IATA 3-letter code, such as PEK, SHA, CAN, or HFE.
Get realtime flight location by aircraft registration number, also called tail number, such as B2021 or B2022. Use this only when the aircraft registration number is known. If the registration number is unknown, first try to find the flight through searchFlightsByNumber and then use the aircraft registration number from that result.
Output schemas not documented. All 9 tools return raw JSON stringified responses without declaring field names, types, or constraints. LLMs cannot plan downstream calls or extract specific fields reliably.
Parameter naming inconsistency. Tools use both depcity/arrcity (tools 1, 3) and dep_city/arr_city (tool 9); depDate (tool 8) vs date (tools 1-4). Inconsistent suffixes confuse LLMs about parameter semantics across tools.
Tool descriptions for searchFlightItineraries (27 chars) and getFlightPriceByCities (70 chars) are too brief (<194-char baseline). They lack context on WHEN to use each vs overlapping tools (e.g., searchFlightsByDepArr also searches itineraries).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Get today's date in local timezone (YYYY-MM-DD format). Use this tool whenever you need today's date - NEVER hardcode dates.
Search for flight itineraries between departure and arrival cities on a specific date. Use city IATA 3-letter codes. This tool returns comprehensive flight options including direct flights and connections.
Search direct flights by departure and arrival location plus date. Use depcity and arrcity when the user specifies cities such as BJS or SHA. Use dep and arr when the user specifies exact airports such as PEK or PVG. Provide one departure field and one arrival field, and do not mix city and airport codes for the same side. All codes must be valid IATA 3-letter codes. Date must be in YYYY-MM-DD format. For today's date, use getTodayDate instead of hardcoding.
Search a flight by flight number and date. The flight number must include the airline code, for example MU2157 or CZ3969. dep and arr are optional and should only be provided when the exact airports are known. Date must be in YYYY-MM-DD format. For today's date, use getTodayDate instead of hardcoding.
No tool annotations. Tools lack readOnlyHint, destructiveHint, or idempotentHint. All are read-only flight data calls, but LLMs cannot infer this, explicit annotations improve agent reasoning and safety.
Error handling lacks recovery guidance. Catch blocks return generic error messages (e.g., 'Error: <message>'). No actionable next steps, error classification (retryable vs user-fixable), or suggested alternatives.
Parameter descriptions reference example values ('e.g., MU2157') which LLMs tend to reuse literally. Should use regex patterns or enum constraints instead. Code does use regex patterns (e.g., /^[A-Z0-9]{2,3}[0-9]{1,4}$/) but descriptions still include examples that could be hallucinated.