Skip to main content
Glama
Cyreslab-AI

FlightRadar MCP Server

get_flight_status

Check real-time flight status using IATA or ICAO flight codes to track current location and operational details.

Instructions

Get the current status of a flight by flight number

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
flight_iataNoIATA flight code (e.g., 'BA123')
flight_icaoNoICAO flight code (e.g., 'BAW123')

Implementation Reference

  • The main handler function for the get_flight_status tool. It queries the AviationStack API with the provided flight number (IATA or ICAO), formats a human-readable status summary including departure/arrival details, delays, and live tracking data if available.
    private async handleGetFlightStatus(args: any) {
      const params: Record<string, any> = {};
    
      if (args.flight_iata) {
        params.flight_iata = args.flight_iata;
      } else if (args.flight_icao) {
        params.flight_icao = args.flight_icao;
      } else {
        throw new McpError(
          ErrorCode.InvalidParams,
          "Either flight_iata or flight_icao must be provided"
        );
      }
    
      const response = await this.axiosInstance.get("/flights", { params });
    
      if (!response.data.data || response.data.data.length === 0) {
        return {
          content: [
            {
              type: "text",
              text: "No flight status found for the specified flight number.",
            },
          ],
        };
      }
    
      const flight = response.data.data[0];
    
      // Create a human-readable status summary
      let statusSummary = `Flight ${flight.flight.iata} (${flight.airline.name}) is currently ${flight.flight_status}.`;
    
      // Add departure information
      if (flight.departure) {
        statusSummary += `\n\nDeparture: ${flight.departure.airport} (${flight.departure.iata})`;
    
        if (flight.departure.terminal) {
          statusSummary += `, Terminal ${flight.departure.terminal}`;
        }
    
        if (flight.departure.gate) {
          statusSummary += `, Gate ${flight.departure.gate}`;
        }
    
        if (flight.departure.scheduled) {
          statusSummary += `\nScheduled: ${new Date(flight.departure.scheduled).toLocaleString()}`;
        }
    
        if (flight.departure.estimated) {
          statusSummary += `\nEstimated: ${new Date(flight.departure.estimated).toLocaleString()}`;
        }
    
        if (flight.departure.actual) {
          statusSummary += `\nActual: ${new Date(flight.departure.actual).toLocaleString()}`;
        }
    
        if (flight.departure.delay) {
          statusSummary += `\nDelay: ${flight.departure.delay} minutes`;
        }
      }
    
      // Add arrival information
      if (flight.arrival) {
        statusSummary += `\n\nArrival: ${flight.arrival.airport} (${flight.arrival.iata})`;
    
        if (flight.arrival.terminal) {
          statusSummary += `, Terminal ${flight.arrival.terminal}`;
        }
    
        if (flight.arrival.gate) {
          statusSummary += `, Gate ${flight.arrival.gate}`;
        }
    
        if (flight.arrival.scheduled) {
          statusSummary += `\nScheduled: ${new Date(flight.arrival.scheduled).toLocaleString()}`;
        }
    
        if (flight.arrival.estimated) {
          statusSummary += `\nEstimated: ${new Date(flight.arrival.estimated).toLocaleString()}`;
        }
    
        if (flight.arrival.actual) {
          statusSummary += `\nActual: ${new Date(flight.arrival.actual).toLocaleString()}`;
        }
    
        if (flight.arrival.delay) {
          statusSummary += `\nDelay: ${flight.arrival.delay} minutes`;
        }
      }
    
      // Add live tracking data if available
      if (flight.live) {
        statusSummary += `\n\nLive Tracking:`;
        statusSummary += `\nAltitude: ${flight.live.altitude} feet`;
        statusSummary += `\nSpeed: ${flight.live.speed_horizontal} knots`;
        statusSummary += `\nHeading: ${flight.live.heading} degrees`;
        statusSummary += `\nLatitude: ${flight.live.latitude}`;
        statusSummary += `\nLongitude: ${flight.live.longitude}`;
      }
    
      return {
        content: [
          {
            type: "text",
            text: statusSummary,
          },
        ],
      };
    }
  • Input schema for the get_flight_status tool, requiring either flight_iata or flight_icao.
    inputSchema: {
      type: "object",
      properties: {
        flight_iata: {
          type: "string",
          description: "IATA flight code (e.g., 'BA123')",
        },
        flight_icao: {
          type: "string",
          description: "ICAO flight code (e.g., 'BAW123')",
        },
      },
      oneOf: [
        { required: ["flight_iata"] },
        { required: ["flight_icao"] },
      ],
    },
  • src/index.ts:136-156 (registration)
    Registration of the get_flight_status tool in the ListTools response, including name, description, and input schema.
    {
      name: "get_flight_status",
      description: "Get the current status of a flight by flight number",
      inputSchema: {
        type: "object",
        properties: {
          flight_iata: {
            type: "string",
            description: "IATA flight code (e.g., 'BA123')",
          },
          flight_icao: {
            type: "string",
            description: "ICAO flight code (e.g., 'BAW123')",
          },
        },
        oneOf: [
          { required: ["flight_iata"] },
          { required: ["flight_icao"] },
        ],
      },
    },
  • src/index.ts:181-182 (registration)
    Dispatcher case in CallToolRequestSchema handler that routes get_flight_status calls to the handler function.
    case "get_flight_status":
      return await this.handleGetFlightStatus(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