search_flights
Find flights using specific criteria such as airline codes, departure and arrival airports, flight status, and results limit. Provides real-time flight tracking and status updates via the FlightRadar MCP Server.
Instructions
Search for flights by various criteria
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| airline_iata | No | IATA airline code (e.g., 'BA' for British Airways) | |
| airline_icao | No | ICAO airline code (e.g., 'BAW' for British Airways) | |
| arr_iata | No | IATA code of arrival airport (e.g., 'JFK') | |
| dep_iata | No | IATA code of departure airport (e.g., 'LHR') | |
| flight_status | No | Flight status (e.g., 'scheduled', 'active', 'landed', 'cancelled') | |
| limit | No | Maximum number of results to return (default: 10, max: 100) |
Implementation Reference
- src/index.ts:287-342 (handler)The handler function that executes the search_flights tool. It constructs search parameters from input, queries the AviationStack API, handles empty results, formats the flight list, and returns JSON-structured response.private async handleSearchFlights(args: any) { const params: Record<string, any> = {}; // Add all provided search parameters if (args.airline_iata) params.airline_iata = args.airline_iata; if (args.airline_icao) params.airline_icao = args.airline_icao; if (args.dep_iata) params.dep_iata = args.dep_iata; if (args.arr_iata) params.arr_iata = args.arr_iata; if (args.flight_status) params.flight_status = args.flight_status; // Set limit with default and maximum values params.limit = Math.min(args.limit || 10, 100); const response = await this.axiosInstance.get("/flights", { params }); if (!response.data.data || response.data.data.length === 0) { return { content: [ { type: "text", text: "No flights found matching the search criteria.", }, ], }; } // Format the flight list for better readability const flights = response.data.data.map((flight: any) => ({ flight_number: flight.flight.number, flight_iata: flight.flight.iata, airline: flight.airline.name, departure: { airport: flight.departure.airport, iata: flight.departure.iata, scheduled: flight.departure.scheduled, }, arrival: { airport: flight.arrival.airport, iata: flight.arrival.iata, scheduled: flight.arrival.scheduled, }, status: flight.flight_status, })); return { content: [ { type: "text", text: JSON.stringify({ total_results: response.data.pagination.total, flights: flights, }, null, 2), }, ], }; }
- src/index.ts:103-133 (schema)Input schema defining the parameters for the search_flights tool, including airline codes, airport codes, flight status, and result limit with validation.inputSchema: { type: "object", properties: { airline_iata: { type: "string", description: "IATA airline code (e.g., 'BA' for British Airways)", }, airline_icao: { type: "string", description: "ICAO airline code (e.g., 'BAW' for British Airways)", }, dep_iata: { type: "string", description: "IATA code of departure airport (e.g., 'LHR')", }, arr_iata: { type: "string", description: "IATA code of arrival airport (e.g., 'JFK')", }, flight_status: { type: "string", description: "Flight status (e.g., 'scheduled', 'active', 'landed', 'cancelled')", enum: ["scheduled", "active", "landed", "cancelled", "incident", "diverted"], }, limit: { type: "number", description: "Maximum number of results to return (default: 10, max: 100)", minimum: 1, maximum: 100, }, },
- src/index.ts:100-135 (registration)Tool registration in the ListToolsRequestSchema handler, providing name, description, and input schema for search_flights.{ name: "search_flights", description: "Search for flights by various criteria", inputSchema: { type: "object", properties: { airline_iata: { type: "string", description: "IATA airline code (e.g., 'BA' for British Airways)", }, airline_icao: { type: "string", description: "ICAO airline code (e.g., 'BAW' for British Airways)", }, dep_iata: { type: "string", description: "IATA code of departure airport (e.g., 'LHR')", }, arr_iata: { type: "string", description: "IATA code of arrival airport (e.g., 'JFK')", }, flight_status: { type: "string", description: "Flight status (e.g., 'scheduled', 'active', 'landed', 'cancelled')", enum: ["scheduled", "active", "landed", "cancelled", "incident", "diverted"], }, limit: { type: "number", description: "Maximum number of results to return (default: 10, max: 100)", minimum: 1, maximum: 100, }, }, }, },
- src/index.ts:179-180 (registration)Dispatch case in the CallToolRequestSchema handler that routes calls to the search_flights handler function.case "search_flights": return await this.handleSearchFlights(request.params.arguments);