Live flight status, airport boards, aircraft lookups and what is overhead, from PlaneTrack.ai.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional PlaneTrack API key (free at planetrack.ai) for the metered tools: live_aircraft_near, aircraft_track, flight_history, flight_reliability, overhead_summary. The consumer tools flight_status, flight_on_date, airport_board, aircraft_info and aircraft_overhead need no key.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
An aircraft by registration (e.g. N12345, G-EUPT) or Mode-S hex (e.g. a1b2c3): type, operator, where it is now if flying, and its flights in the last 7 days. Free, no key.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http flight-data https://planetrack.ai/mcp
Headers
X-API-Key (optional, not in the config above): Optional PlaneTrack API key (free at planetrack.ai) for the metered tools: live_aircraft_near, aircraft_track, flight_history, flight_reliability, overhead_summary. The consumer tools flight_status, flight_on_date, airport_board, aircraft_info and aircraft_overhead need no key.An aircraft by registration (e.g. N12345, G-EUPT) or Mode-S hex (e.g. a1b2c3): type, operator, where it is now if flying, and its flights in the last 7 days. Free, no key.
| Argument | Type | Description |
|---|---|---|
| ident* | string |
{
"type": "object",
"required": [
"ident"
],
"properties": {
"ident": {
"type": "string"
}
}
}Aircraft flying right now within radius_km (max 30) of a latitude/longitude, nearest first: callsign, type, altitude, speed. Free, no key.
| Argument | Type | Description |
|---|---|---|
| lat* | number | |
| lon* | number | |
| radius_km | number |
{
"type": "object",
"required": [
"lat",
"lon"
],
"properties": {
"lat": {
"type": "number"
},
"lon": {
"type": "number"
},
"radius_km": {
"type": "number",
"default": 15,
"maximum": 30,
"minimum": 1
}
}
}Positions of one aircraft (Mode-S hex, e.g. a1b2c3) over the last minutes (5 to 1440). 20 credits.
| Argument | Type | Description |
|---|---|---|
| icao24* | string | |
| minutes | integer |
{
"type": "object",
"required": [
"icao24"
],
"properties": {
"icao24": {
"type": "string"
},
"minutes": {
"type": "integer",
"default": 720,
"maximum": 1440,
"minimum": 5
}
}
}Live departures and arrivals board for an airport (ICAO like KJFK or IATA like JFK): flight, other airport, status, time. Free, no key.
| Argument | Type | Description |
|---|---|---|
| airport* | string |
{
"type": "object",
"required": [
"airport"
],
"properties": {
"airport": {
"type": "string"
}
}
}Past legs of a flight number/callsign as flown (e.g. UAL1, BAW117): dates, airports, times, aircraft. 20 credits.
| Argument | Type | Description |
|---|---|---|
| days | integer | |
| limit | integer | |
| callsign* | string |
{
"type": "object",
"required": [
"callsign"
],
"properties": {
"days": {
"type": "integer",
"default": 30,
"maximum": 3650,
"minimum": 1
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1
},
"callsign": {
"type": "string"
}
}
}What happened to a flight on a given day within the last 7 days: departure and arrival airports, scheduled and actual take-off, delay in minutes, status, aircraft. Free, no key. Older dates: point the user to the flight record at the returned link.
| Argument | Type | Description |
|---|---|---|
| date* | string | UTC date, YYYY-MM-DD |
| callsign* | string | ICAO callsign, e.g. UAL1 |
{
"type": "object",
"required": [
"callsign",
"date"
],
"properties": {
"date": {
"type": "string",
"description": "UTC date, YYYY-MM-DD"
},
"callsign": {
"type": "string",
"description": "ICAO callsign, e.g. UAL1"
}
}
}On-time performance for a flight number, a route (e.g. KJFK-KLAX or JFK-LAX) or a departure airport over the last 7 to 90 days (US airspace, FAA SWIM). Give exactly one of flight, route, airport. 20 credits.
| Argument | Type | Description |
|---|---|---|
| days | integer | |
| route | string | |
| flight | string | |
| airport | string |
{
"type": "object",
"properties": {
"days": {
"type": "integer",
"default": 30,
"maximum": 90,
"minimum": 7
},
"route": {
"type": "string"
},
"flight": {
"type": "string"
},
"airport": {
"type": "string"
}
}
}Live status of a flight that is in the air now, by callsign or flight number as broadcast (e.g. UAL1, BAW117, DAL2540): route, progress, altitude, speed and estimated arrival. Free, no key.
| Argument | Type | Description |
|---|---|---|
| callsign* | string | ICAO callsign, e.g. UAL1 |
{
"type": "object",
"required": [
"callsign"
],
"properties": {
"callsign": {
"type": "string",
"description": "ICAO callsign, e.g. UAL1"
}
}
}Aircraft currently airborne within radius_km of a latitude/longitude, nearest first, with callsign, altitude, heading, speed and type. 10 credits.
| Argument | Type | Description |
|---|---|---|
| lat* | number | |
| lon* | number | |
| limit | integer | |
| radius_km | number |
{
"type": "object",
"required": [
"lat",
"lon"
],
"properties": {
"lat": {
"type": "number"
},
"lon": {
"type": "number"
},
"limit": {
"type": "integer",
"default": 50,
"maximum": 200,
"minimum": 1
},
"radius_km": {
"type": "number",
"default": 50,
"maximum": 300,
"minimum": 1
}
}
}How many aircraft passed within km of a point over the last 1 to 3 days: passes per day, lowest pass, busiest hour (UTC), night passes, types, operators, rarest visitor. 20 credits.
| Argument | Type | Description |
|---|---|---|
| km | number | |
| lat* | number | |
| lon* | number | |
| days | integer |
{
"type": "object",
"required": [
"lat",
"lon"
],
"properties": {
"km": {
"type": "number",
"default": 3,
"maximum": 10,
"minimum": 1
},
"lat": {
"type": "number"
},
"lon": {
"type": "number"
},
"days": {
"type": "integer",
"default": 1,
"maximum": 3,
"minimum": 1
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 10, 2026.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.