get_flight_positions
Retrieve real-time flight positions filtered by airports, geographic bounds, aircraft categories, or result limits.
Instructions
Get real-time flight positions with various filtering options
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| airports | No | Comma-separated list of airport ICAO codes | |
| bounds | No | Geographical bounds (lat1,lon1,lat2,lon2) | |
| categories | No | Aircraft categories (P,C,J) | |
| limit | No | Maximum number of results |
Implementation Reference
- src/index.ts:111-135 (handler)The handler for the 'get_flight_positions' tool. It extracts parameters from tool arguments, validates them via isValidFlightTrackingParams, then calls the Flightradar24 API endpoint '/api/live/flight-positions/light' and returns the response.
case 'get_flight_positions': { const params: FlightTrackingParams = { ...toolArgs, limit: toolArgs?.limit ? parseInt(toolArgs.limit as string) : undefined }; if (!isValidFlightTrackingParams(params)) { throw new McpError( ErrorCode.InvalidParams, 'Invalid or missing query parameters. At least one valid parameter is required.' ); } const response = await fr24Client.get<FlightPositionsResponse>( '/api/live/flight-positions/light', { params } ); return { content: [{ type: "text", text: JSON.stringify(response.data, null, 2) }] }; } - src/index.ts:75-86 (registration)Registration of the 'get_flight_positions' tool in the ListToolsRequestSchema handler, defining its name, description, and input schema (airports, bounds, categories, limit).
name: 'get_flight_positions', description: 'Get real-time flight positions with various filtering options', inputSchema: { type: 'object', properties: { airports: { type: 'string', description: 'Comma-separated list of airport ICAO codes' }, bounds: { type: 'string', description: 'Geographical bounds (lat1,lon1,lat2,lon2)' }, categories: { type: 'string', description: 'Aircraft categories (P,C,J)' }, limit: { type: 'number', description: 'Maximum number of results' } } } }, - src/types.ts:58-74 (schema)FlightTrackingParams interface defining all possible input parameters for the flight positions query (bounds, flights, callsigns, airports, categories, limit, etc.).
export interface FlightTrackingParams { bounds?: string; flights?: string; callsigns?: string; registrations?: string; painted_as?: string; operating_as?: string; airports?: string; routes?: string; aircraft?: string; altitude_ranges?: string; squawks?: string; categories?: string; data_sources?: string; airspaces?: string; limit?: number; } - src/types.ts:33-35 (schema)FlightPositionsResponse interface defining the response shape containing an array of FlightPosition objects.
export interface FlightPositionsResponse { data: FlightPosition[]; } - src/types.ts:79-102 (helper)isValidFlightTrackingParams validation function that checks at least one valid parameter is provided before making the API call.
export function isValidFlightTrackingParams(params: unknown): params is FlightTrackingParams { if (!params || typeof params !== 'object') { return false; } const typedParams = params as Record<string, unknown>; // Check that at least one valid parameter is provided const validParams = [ 'bounds', 'flights', 'callsigns', 'registrations', 'painted_as', 'operating_as', 'airports', 'routes', 'aircraft', 'altitude_ranges', 'squawks', 'categories', 'data_sources', 'airspaces', 'limit' ]; const hasValidParam = validParams.some(param => { const value = typedParams[param]; if (param === 'limit') { return typeof value === 'number' && value > 0; } return typeof value === 'string' && value.length > 0; }); return hasValidParam; }