MCP Server - Connect AI to FlightLabs - Real-Time Flight Tracker & Status API. Live data for flights, airports, schedules, timetables, IATA codes, and more.
MCP ready

MCP Server, connect AI to live flight data

Integrate FlightLabs with Claude Desktop, ChatGPT or any MCP-compatible assistant. Query live flights, schedules, delays, prices, airlines, routes, and airports in your AI conversations.

Ask Claude:

"Where is flight AA217 right now?"

AI calls MCP tool:
{
"tool": "flights.realtime",
"params": {
"flightIata": "AA217"
}
}

What is MCP and why does it matter?

The Model Context Protocol (MCP) lets AI assistants access external data in real time. Instead of outdated training data, your AI can fetch live flight data from FlightLabs — just by asking a question.

Example: Ask Claude "Where is flight AA217 right now?" and it will call our flights.realtime tool automatically.

Real-time flights

Live positions, status, airline and airport filters via /flights.

Natural language

Ask questions like "Show American Airlines flights departing JFK" and get accurate answers.

Same API quota

MCP calls use your existing FlightLabs plan. Each AI request counts as one API call.

Available MCP tools

Ten tools mapped to core FlightLabs REST endpoints. Authenticate with OAuth or Authorization: Bearer — not a key in the URL.

flights.realtime Flights

Get real-time flight positions and status. Filter by flight IATA/ICAO, airline, departure or arrival airport, registration, and more. Maps to GET /flights.

Useful params: flightIata, airlineIata, depIata, arrIata, limit, and more.

flights.historical Flights

Historical departures or arrivals for an airport by date or date range. Maps to GET /historical.

Useful params: flightIata, airlineIata, depIata, arrIata, limit, and more.

flights.prices Flights

Search flight prices between airports (oneway or roundtrip). Maps to GET /retrieveFlights.

Useful params: flightIata, airlineIata, depIata, arrIata, limit, and more.

flights.delays Flights

Find delayed flights above a minimum delay threshold. Maps to GET /flight_delays.

Useful params: flightIata, airlineIata, depIata, arrIata, limit, and more.

flights.schedules Flights

Airport timetable of scheduled departures or arrivals. Maps to GET /advanced-flights-schedules.

Useful params: flightIata, airlineIata, depIata, arrIata, limit, and more.

flights.by_number Flights

Flight info by flight number (e.g. LH811), optionally for a date or range. Maps to GET /flight.

Useful params: flightIata, airlineIata, depIata, arrIata, limit, and more.

flights.by_airline Flights

Live flights operated by a given airline ICAO code. Maps to GET /flights-by-airline.

Useful params: flightIata, airlineIata, depIata, arrIata, limit, and more.

airlines.list Airlines

Airline directory with optional IATA or country filter. Maps to GET /airlines.

Useful params: flightIata, airlineIata, depIata, arrIata, limit, and more.

airlines.routes Airlines

Airline routes between airports, filterable by airline or flight. Maps to GET /routes.

Useful params: flightIata, airlineIata, depIata, arrIata, limit, and more.

airports.by_filter Airports

Look up airports by IATA, ICAO, city, or country code. Maps to GET /airports-by-filter.

Useful params: flightIata, airlineIata, depIata, arrIata, limit, and more.

Getting started

Same URL for every agent. Authenticate with OAuth (trial or paid) or Authorization: Bearer YOUR_ACCESS_KEY. Do not put the key in the URL — Claude Desktop and claude.ai reject tokens in the query string.

MCP endpoint

Need a trial or API key first? Register · OAuth setup

Agent OAuth client ID Secret
Claude (claude.ai / Desktop) 16 Leave empty
Claude Code 16 Leave empty
Cursor 17 Leave empty
ChatGPT 15 Leave empty

These are public PKCE clients — there is no client secret. Full redirect list: /oauth/agent-connect.

Connect to Claude

To connect Claude to the FlightLabs connector, follow these steps. They are the same on claude.ai and in the Claude Desktop app. The connector is saved on your Claude account, not in a file on your computer. If you add it on the website, it also appears in Desktop — and the other way around — as long as you are signed in with the same Claude account.

1. Open Connectors

User menu → SettingsCustomizeConnectorsAdd / Add custom connector. Do not search the official connector directory — FlightLabs is added as a custom connector.

2. Name and URL

In the Add custom connector panel, fill in:

Name: for example MCP FlightLabs

Remote server URL: https://mcp.goflightlabs.com/mcp

3. Authentication

Further down, under Authentication, leave Always required selected (Claude detects it and shows a Detected badge). That means each user signs in through the server’s OAuth flow before any tool can run.

4. OAuth client

Under OAuth client, leave Use your own OAuth client selected (also shown as Detected):

OAuth Client ID: 16

OAuth client secret: leave empty (only fill this if your authorization server requires it)

Leave every other field as the default.

5. Add and Connect

Click Add to save the configuration. Then, on the connector in the list, click Connect.

6. Log in to FlightLabs

You will be redirected to the FlightLabs login. Sign in — or create an account if you do not have one (OAuth needs a trial or paid plan). After you click Authorize, FlightLabs gives Claude a token over OAuth. Never paste an API key into the MCP URL.

Connect with Claude Code

Prefer the steps above on claude.ai or Claude Desktop first. If Claude Code is signed in with the same Claude account, FlightLabs appears automatically as Connected — no CLI command. Use the terminal path below only if you have not added the connector yet.

1. Recommended: connect on claude.ai or Desktop

Follow steps 1–6 above. Then open Claude Code with the same login. Run claude mcp list if you want to confirm it — you should see FlightLabs already connected.

2. Or add it from the CLI

Only if you never connected on claude.ai or Desktop. FlightLabs does not support dynamic client registration, so you must pass the public Claude client ID. From any terminal (outside a claude session):

bash
claude mcp add --transport http --client-id 16 --callback-port 8080 mcp-flightlabs https://mcp.goflightlabs.com/mcp

--client-id 16 is required. Without it the CLI fails with “does not support dynamic client registration”. --callback-port 8080 is the local OAuth callback — use another free port if 8080 is taken. mcp-flightlabs is a local name you choose.

3. Authenticate (OAuth)

Open a Claude Code session:

bash
claude

Then run the slash command:

claude
/mcp

Select the FlightLabs server, press Enter, and choose Authenticate. Approve in the browser. Back in the terminal the status becomes connected.

4. Verify

bash
claude mcp list

A Needs authentication warning is expected until you finish step 3.

Notes

OAuth client ID is always 16; leave the secret empty. Scope defaults to all your projects. To share it on one repo, add a .mcp.json at the project root or use --scope project when adding the server.

Remove a server you added from the CLI with:

bash
claude mcp remove mcp-flightlabs

More OAuth detail: /oauth/agent-connect. After setup, try: "Where is flight AA217 right now?"

Connect to Cursor

To connect Cursor to the FlightLabs connector, follow these steps. You need a trial or paid FlightLabs account. OAuth client ID is 17; leave the secret empty.

If you have a Mac

1. Open Cursor Settings

In the menu bar click Cursor. The item is called Preferences. Open Preferences → Cursor Settings.

2. Open Customize

In the sidebar, click Customize. This opens a new tab.

3. Add an MCP server

Filter by MCPs, then click New MCP Server (“Add a Custom MCP Server”).

4. URL and OAuth

URL: https://mcp.goflightlabs.com/mcp

If it asks for an OAuth client: ID 17, leave the secret empty.

5. Log in to FlightLabs

Approve on the FlightLabs login screen. The server should show a green dot.

If you have Windows

1. Open Cursor Settings

Open the Cursor menu and click Settings. Open Cursor Settings (not the plain editor Settings).

2. Open Customize

In the sidebar, click Customize. This opens a new tab.

3. Add an MCP server

Filter by MCPs, then click New MCP Server (“Add a Custom MCP Server”).

4. URL and OAuth

URL: https://mcp.goflightlabs.com/mcp

If it asks for an OAuth client: ID 17, leave the secret empty.

5. Log in to FlightLabs

Approve on the FlightLabs login screen. The server should show a green dot.

Optional: a settings file instead

Only if you prefer not to use the menus. Paste the JSON below into ~/.cursor/mcp.json on a Mac, or %USERPROFILE%\.cursor\mcp.json on Windows (or .cursor/mcp.json in a project folder for a project-only setup). Save, quit Cursor fully, and open it again.

mcp.json
{
  "mcpServers": {
    "goflightlabs": {
      "url": "https://mcp.goflightlabs.com/mcp",
      "auth": {
        "CLIENT_ID": "17"
      }
    }
  }
}

After setup, try: "Look up flight BA179"

Connect to ChatGPT

To connect ChatGPT to the FlightLabs connector, follow these steps. ChatGPT uses OAuth — client ID 15; leave the secret empty. Never put an API key in the MCP URL.

1. Start a trial

Register and start a free trial, or use a paid FlightLabs account.

2. Name and URL

In ChatGPT, open Settings → Connectors and add a custom MCP connector.

Remote server URL: https://mcp.goflightlabs.com/mcp

3. OAuth client

OAuth Client ID: 15

OAuth client secret: leave empty

4. Log in to FlightLabs

Connect and approve on the FlightLabs login screen. After you click Authorize, FlightLabs gives ChatGPT a token over OAuth.

5. Try it

“Where is flight AA217 right now?”

“Show American Airlines flights departing JFK”

“List live flights arriving at LAX”

More OAuth detail: /oauth/agent-connect.

Python: track a flight example

A complete Python example that fetches real-time data for flight AA217 using the MCP protocol.

get_flight_ba179.py
import httpx
import json
import asyncio

MCP_SERVER_URL = "https://mcp.goflightlabs.com/mcp"
ACCESS_KEY = "YOUR_ACCESS_KEY"

async def call_mcp_tool(tool_name: str, arguments: dict):
    async with httpx.AsyncClient(timeout=60) as client:
        init_response = await client.post(
            MCP_SERVER_URL,
            headers={"Authorization": f"Bearer {ACCESS_KEY}"},
            json={
                "jsonrpc": "2.0",
                "id": "1",
                "method": "initialize",
                "params": {
                    "protocolVersion": "2024-11-05",
                    "capabilities": {},
                    "clientInfo": {"name": "PythonClient"}
                }
            }
        )
        session_id = init_response.headers.get("Mcp-Session-Id")

        response = await client.post(
            MCP_SERVER_URL,
            headers={"Mcp-Session-Id": session_id, "Authorization": f"Bearer {ACCESS_KEY}"},
            json={
                "jsonrpc": "2.0",
                "id": "2",
                "method": "tools/call",
                "params": {
                    "name": tool_name,
                    "arguments": arguments
                }
            }
        )
        return response.json()

async def main():
    result = await call_mcp_tool(
        "flights.realtime",
        {"flightIata": "AA217"}
    )
    print(json.dumps(result, indent=2))

asyncio.run(main())

Frequently asked questions

Use OAuth (Claude client 16, Cursor 17, ChatGPT 15 — public clients, leave the secret empty) or send Authorization: Bearer YOUR_ACCESS_KEY. Do not put the key in the MCP URL — Claude Desktop and claude.ai strip query tokens. Start a free trial first.
MCP requests count toward your existing API quota just like REST API calls. Each tool call equals one API request. Check our pricing page for plan details.
Ten tools cover real-time flights, historical data, prices, delays, schedules, flight-by-number, flights-by-airline, airlines, routes, and airports-by-filter. See Available Tools above for the full list and REST mappings.
Yes! Any platform that supports the Model Context Protocol (MCP) specification can connect to our server. This includes Claude Desktop, custom Python clients, ChatGPT connectors, and any future MCP-compatible platforms.