Skip to main content
Glama
Cyreslab-AI

FlightRadar MCP Server

search_flights

Search for flights by airline, departure/arrival airports, or flight status using real-time flight tracking data.

Instructions

Search for flights by various criteria

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
airline_iataNoIATA airline code (e.g., 'BA' for British Airways)
airline_icaoNoICAO airline code (e.g., 'BAW' for British Airways)
dep_iataNoIATA code of departure airport (e.g., 'LHR')
arr_iataNoIATA code of arrival airport (e.g., 'JFK')
flight_statusNoFlight status (e.g., 'scheduled', 'active', 'landed', 'cancelled')
limitNoMaximum number of results to return (default: 10, max: 100)

Implementation Reference

  • The main handler function for the 'search_flights' tool. It processes input arguments to build API query parameters, calls the AviationStack '/flights' endpoint, handles empty results, formats the response data into a structured list of flights with key details, and returns it as JSON text content.
    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),
          },
        ],
      };
    }
  • Tool registration entry in the ListTools response, defining the name, description, and detailed input schema for search parameters including airline codes, airport codes, flight status enum, and result limit.
    {
      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)
    Tool dispatch in the CallToolRequestSchema handler switch statement, routing 'search_flights' calls to the handleSearchFlights method.
    case "search_flights":
      return await this.handleSearchFlights(request.params.arguments);

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Cyreslab-AI/flightradar-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server