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.
"Where is flight AA217 right now?"
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.
Live positions, status, airline and airport filters via /flights.
Ask questions like "Show American Airlines flights departing JFK" and get accurate answers.
MCP calls use your existing FlightLabs plan. Each AI request counts as one API call.
Ten tools mapped to core FlightLabs REST endpoints. Authenticate with OAuth or Authorization: Bearer — not a key in the URL.
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.
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.
Search flight prices between airports (oneway or roundtrip). Maps to GET /retrieveFlights.
Useful params: flightIata, airlineIata, depIata, arrIata, limit, and more.
Find delayed flights above a minimum delay threshold. Maps to GET /flight_delays.
Useful params: flightIata, airlineIata, depIata, arrIata, limit, and more.
Airport timetable of scheduled departures or arrivals. Maps to GET /advanced-flights-schedules.
Useful params: flightIata, airlineIata, depIata, arrIata, limit, and more.
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.
Live flights operated by a given airline ICAO code. Maps to GET /flights-by-airline.
Useful params: flightIata, airlineIata, depIata, arrIata, limit, and more.
Airline directory with optional IATA or country filter. Maps to GET /airlines.
Useful params: flightIata, airlineIata, depIata, arrIata, limit, and more.
Airline routes between airports, filterable by airline or flight. Maps to GET /routes.
Useful params: flightIata, airlineIata, depIata, arrIata, limit, and more.
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.
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.
| 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.
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.
User menu → Settings → Customize → Connectors → Add / Add custom connector. Do not search the official connector directory — FlightLabs is added as a custom connector.
In the Add custom connector panel, fill in:
Name: for example MCP FlightLabs
Remote server URL: https://mcp.goflightlabs.com/mcp
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.
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.
Click Add to save the configuration. Then, on the connector in the list, click Connect.
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.
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.
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.
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):
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.
Open a Claude Code session:
claude
Then run the slash command:
/mcp
Select the FlightLabs server, press Enter, and choose Authenticate. Approve in the browser. Back in the terminal the status becomes connected.
claude mcp list
A Needs authentication warning is expected until you finish step 3.
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:
claude mcp remove mcp-flightlabs
More OAuth detail: /oauth/agent-connect. After setup, try: "Where is flight AA217 right now?"
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.
In the menu bar click Cursor. The item is called Preferences. Open Preferences → Cursor Settings.
In the sidebar, click Customize. This opens a new tab.
Filter by MCPs, then click New MCP Server (“Add a Custom MCP Server”).
URL: https://mcp.goflightlabs.com/mcp
If it asks for an OAuth client: ID 17, leave the secret empty.
Approve on the FlightLabs login screen. The server should show a green dot.
Open the Cursor menu and click Settings. Open Cursor Settings (not the plain editor Settings).
In the sidebar, click Customize. This opens a new tab.
Filter by MCPs, then click New MCP Server (“Add a Custom MCP Server”).
URL: https://mcp.goflightlabs.com/mcp
If it asks for an OAuth client: ID 17, leave the secret empty.
Approve on the FlightLabs login screen. The server should show a green dot.
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.
{
"mcpServers": {
"goflightlabs": {
"url": "https://mcp.goflightlabs.com/mcp",
"auth": {
"CLIENT_ID": "17"
}
}
}
}
After setup, try: "Look up flight BA179"
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.
Register and start a free trial, or use a paid FlightLabs account.
In ChatGPT, open Settings → Connectors and add a custom MCP connector.
Remote server URL: https://mcp.goflightlabs.com/mcp
OAuth Client ID: 15
OAuth client secret: leave empty
Connect and approve on the FlightLabs login screen. After you click Authorize, FlightLabs gives ChatGPT a token over OAuth.
“Where is flight AA217 right now?”
“Show American Airlines flights departing JFK”
“List live flights arriving at LAX”
More OAuth detail: /oauth/agent-connect.
A complete Python example that fetches real-time data for flight AA217 using the MCP protocol.
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())
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.