MCP Tools — SimConnect Mode
All 19 MCP tools listed here are available when the server runs with MCP_MODE=simconnect. This mode provides live simulator data via the SimConnect SDK.
Requirements: Windows only. Microsoft Flight Simulator 2020 or 2024 must be running with SimConnect enabled before issuing any read or transmit calls. The get_sim_state tool is safe to call at any time regardless of connection state.
Tools are called over the Model Context Protocol using JSON-RPC 2.0 with the tools/call method. Error responses are returned as text content (not JSON-RPC errors) with a prefix token followed by a colon and a human-readable message.
Tool Overview
| Tool | Description |
|---|---|
get_simvar_value |
Read a single simulation variable value from the running simulator |
get_simvar_values |
Read up to 20 simulation variables in one call |
set_simvar_value |
Write a numeric simulation variable to the user aircraft |
transmit_event |
Transmit a named SimConnect client event to the simulator |
get_sim_state |
Return a snapshot of current simulator connection state and flight status |
get_nearby_traffic |
List AI and player aircraft within a radius of the user aircraft |
get_traffic_with_phase |
Like get_nearby_traffic with enriched telemetry and inferred flight phase |
get_airports_in_range |
List airports in the simulator’s loaded scenery area sorted by distance |
get_nearest_airport |
Return the single closest airport to the player aircraft |
get_airport_details |
Return detailed facility data for a specific airport by ICAO code |
get_vors_in_range |
List VOR navigation stations sorted by distance from the player aircraft |
get_vor_details |
Return detailed data for a specific VOR by ICAO code |
get_ndbs_in_range |
List NDB navigation stations sorted by distance from the player aircraft |
get_ndb_details |
Return detailed data for a specific NDB by ICAO code |
get_waypoints_in_range |
List waypoints sorted by distance from the player aircraft |
get_waypoint_details |
Return detailed data for a specific waypoint by ICAO code |
get_airport_taxiways |
Return the taxiway network graph for a specific airport by ICAO code |
get_taxiway_names |
Return only the taxiway letter/name strings for an airport (lightweight alternative) |
get_airport_parkings |
Return all parking stands, gates, and ramps at a specific airport by ICAO code |
get_simvar_value
Read a single live simulation variable from the running simulator.
Requirements: Windows + MSFS 2020 or 2024 running with SimConnect enabled.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
name |
string | Yes | — | SimVar name, e.g. "PLANE ALTITUDE" |
unit |
string | Yes | — | SimConnect unit string, e.g. "feet" |
Returns
| Field | Type | Description |
|---|---|---|
name |
string | SimVar name as supplied by the caller |
value |
number | Current value of the simulation variable |
unit |
string | Unit string as supplied by the caller |
sim_time |
number | Simulator absolute time in seconds at the moment of the read |
Example request
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_simvar_value",
"arguments": {
"name": "PLANE ALTITUDE",
"unit": "feet"
}
}
}
Example response (connected)
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": "{\"name\":\"PLANE ALTITUDE\",\"value\":5280.0,\"unit\":\"feet\",\"sim_time\":3742.5}"
}
]
}
}
Example response (disconnected)
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": "BRIDGE_DISCONNECTED: no active simulator connection"
}
],
"isError": true
}
}
Error codes
BRIDGE_DISCONNECTED: The SimConnect bridge is not connected to the simulator. Start the simulator and ensure SimConnect is enabled.INVALID_ARGUMENT:nameorunitwas not provided or is empty.UNKNOWN_VARIABLE: The variable name or unit is not recognised by SimConnect. Check the name against the SimConnect SDK reference.INTERNAL_ERROR: Unexpected bridge or SimConnect failure.
get_simvar_values
Read up to 20 live simulation variables in a single call. Per-item failures are embedded in the response array and do not abort the batch.
Requirements: Windows + MSFS 2020 or 2024 running with SimConnect enabled.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
vars |
array | Yes | — | List of SimVar name/unit pairs to read. Maximum 20 items. Each item must be an object with name (string) and unit (string) fields. |
Returns
An array of result objects. Each object has:
| Field | Type | Description |
|---|---|---|
name |
string | SimVar name as supplied in the request |
value |
number | Current value of the simulation variable; omitted when error is present |
unit |
string | Unit string as supplied in the request |
sim_time |
number | Simulator absolute time in seconds at the moment of the read; omitted when error is present |
error |
string | Per-item error message; present only when this specific variable could not be read |
Example request
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "get_simvar_values",
"arguments": {
"vars": [
{ "name": "PLANE ALTITUDE", "unit": "feet" },
{ "name": "AIRSPEED INDICATED", "unit": "knots" }
]
}
}
}
Example response (connected)
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"content": [
{
"type": "text",
"text": "[{\"name\":\"PLANE ALTITUDE\",\"value\":5280.0,\"unit\":\"feet\",\"sim_time\":3742.5},{\"name\":\"AIRSPEED INDICATED\",\"value\":142.3,\"unit\":\"knots\",\"sim_time\":3742.5}]"
}
]
}
}
Error codes
BRIDGE_DISCONNECTED: The SimConnect bridge is not connected to the simulator.INVALID_ARGUMENT:varswas not provided, is empty, exceeds 20 items, or contains an item missingnameorunit.UNKNOWN_VARIABLE: One or more variable names or units in the batch are not recognised by SimConnect.INTERNAL_ERROR: Unexpected bridge or SimConnect failure.
transmit_event
Transmit a named SimConnect client event to the running simulator.
Requirements: Windows + MSFS 2020 or 2024 running with SimConnect enabled.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
name |
string | Yes | — | SimConnect event name, e.g. "LANDING_LIGHTS_TOGGLE" |
value |
number | No | 0 |
Optional uint32 event parameter. Must be an integer in the range 0–4294967295. |
Returns
| Field | Type | Description |
|---|---|---|
success |
boolean | Always true on success |
event |
string | Event name as supplied by the caller |
value |
number | The uint32 value transmitted with the event |
Example request
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "transmit_event",
"arguments": {
"name": "LANDING_LIGHTS_TOGGLE"
}
}
}
Example response (connected)
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"content": [
{
"type": "text",
"text": "{\"event\":\"LANDING_LIGHTS_TOGGLE\",\"success\":true,\"value\":0}"
}
]
}
}
Example response (disconnected)
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"content": [
{
"type": "text",
"text": "BRIDGE_DISCONNECTED: no active simulator connection"
}
],
"isError": true
}
}
Error codes
BRIDGE_DISCONNECTED: The SimConnect bridge is not connected to the simulator.INVALID_ARGUMENT:namewas not provided or is empty, orvalueis not an integer in the range[0, 4294967295].INTERNAL_ERROR: Unexpected bridge or SimConnect failure.
get_sim_state
Return a snapshot of current simulator connection state and flight status. This tool never returns an error — it returns {"connected": false} when the bridge is not connected, allowing clients to safely poll at any connection state.
Requirements: Windows. The simulator does not need to be running.
Parameters: None.
Returns
| Field | Type | Description |
|---|---|---|
connected |
boolean | true when the bridge has an active SimConnect session |
paused |
boolean | true when the simulator is paused; only present when connected is true |
current_flight |
string | Path or name of the currently loaded flight file; only present when connected is true |
sim_time |
number | Simulator absolute time in seconds; only present when connected is true |
simulator_version |
string | Simulator version string reported by SimConnect; only present when connected is true |
Example request
{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "get_sim_state",
"arguments": {}
}
}
Example response (connected)
{
"jsonrpc": "2.0",
"id": 4,
"result": {
"content": [
{
"type": "text",
"text": "{\"connected\":true,\"current_flight\":\"LAST.FLT\",\"paused\":false,\"sim_time\":3742.5,\"simulator_version\":\"11.0.282174.0\"}"
}
]
}
}
Example response (disconnected)
{
"jsonrpc": "2.0",
"id": 4,
"result": {
"content": [
{
"type": "text",
"text": "{\"connected\":false}"
}
],
"isError": false
}
}
Error codes: None. This tool always succeeds.
set_simvar_value
Write a numeric simulation variable to the user aircraft. Only writable SimVars will take effect. Use get_simvar (docs mode) to check whether a variable is settable before calling this tool.
Requirements: Windows + MSFS 2020 or 2024 running with SimConnect enabled.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
name |
string | Yes | — | SimVar name, e.g. "AUTOPILOT ALTITUDE LOCK VAR" |
unit |
string | Yes | — | SimConnect unit string, e.g. "feet" |
value |
number | Yes | — | Numeric value to write |
Returns
| Field | Type | Description |
|---|---|---|
success |
boolean | Always true on success |
name |
string | SimVar name as supplied by the caller |
unit |
string | Unit string as supplied by the caller |
value |
number | The value written to the simulator |
Example request
{
"jsonrpc": "2.0",
"id": 5,
"method": "tools/call",
"params": {
"name": "set_simvar_value",
"arguments": {
"name": "AUTOPILOT ALTITUDE LOCK VAR",
"unit": "feet",
"value": 10000
}
}
}
Example response
{
"jsonrpc": "2.0",
"id": 5,
"result": {
"content": [
{
"type": "text",
"text": "{\"name\":\"AUTOPILOT ALTITUDE LOCK VAR\",\"success\":true,\"unit\":\"feet\",\"value\":10000}"
}
]
}
}
Error codes
BRIDGE_DISCONNECTED: The SimConnect bridge is not connected to the simulator.INVALID_ARGUMENT:name,unit, orvaluewas not provided or has the wrong type.INTERNAL_ERROR: Unexpected bridge or SimConnect failure.
get_nearby_traffic
Return a list of AI and player aircraft within a given radius of the user aircraft. The player aircraft is always included. Returns position, heading, speed, and on-ground status for each aircraft.
Requirements: Windows + MSFS 2020 or 2024 running with SimConnect enabled.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
radius_meters |
number | No | 25000 |
Search radius in metres. Maximum 200000. |
Returns
| Field | Type | Description |
|---|---|---|
sim_time |
number | Simulator Zulu time in seconds since midnight at the moment of the scan |
radius_meters |
number | The radius used for the scan |
count |
number | Number of aircraft returned |
traffic |
array | Array of traffic entries (see below) |
error |
string | Present only when the bridge is not connected or the scan failed |
Each entry in traffic:
| Field | Type | Description |
|---|---|---|
object_id |
number | SimConnect object ID |
title |
string | Aircraft title (livery name) |
atc_id |
string | ATC callsign / tail number |
atc_airline |
string | ATC airline name |
latitude |
number | Latitude in decimal degrees |
longitude |
number | Longitude in decimal degrees |
altitude_ft |
number | Altitude in feet MSL |
true_heading_deg |
number | Magnetic heading in degrees |
ground_speed_kts |
number | Ground speed in knots |
on_ground |
boolean | true when the aircraft is on the ground |
Example request
{
"jsonrpc": "2.0",
"id": 6,
"method": "tools/call",
"params": {
"name": "get_nearby_traffic",
"arguments": { "radius_meters": 50000 }
}
}
Example response
{
"jsonrpc": "2.0",
"id": 6,
"result": {
"content": [
{
"type": "text",
"text": "{\"count\":2,\"radius_meters\":50000,\"traffic\":[{\"object_id\":1,\"title\":\"Airbus A320 Neo\",\"atc_id\":\"TAP123\",\"atc_airline\":\"TAP Air Portugal\",\"latitude\":38.77,\"longitude\":-9.13,\"altitude_ft\":8200,\"true_heading_deg\":274.0,\"ground_speed_kts\":210.5,\"on_ground\":false}]}"
}
]
}
}
Error codes: None. Errors (not connected, scan failure) are embedded as an error field in the response body rather than returned as MCP errors.
get_traffic_with_phase
Return nearby aircraft with enriched telemetry: vertical speed, actual ground track, inferred flight phase, parking state, runway occupancy, and aircraft category. Uses a single SimConnect round-trip with the same latency as get_nearby_traffic.
Requirements: Windows + MSFS 2020 or 2024 running with SimConnect enabled.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
radius_meters |
number | No | 25000 |
Search radius in metres. Maximum 200000. |
Returns
| Field | Type | Description |
|---|---|---|
sim_time |
number | Simulator Zulu time in seconds since midnight at the moment of the scan |
radius_meters |
number | The radius used for the scan |
count |
number | Number of aircraft returned |
traffic |
array | Array of enriched traffic entries (see below) |
error |
string | Present only when the bridge is not connected or the scan failed |
Each entry in traffic (all fields from get_nearby_traffic plus):
| Field | Type | Description |
|---|---|---|
category |
string | SimConnect aircraft category (e.g. "Jet", "Prop", "HelicopterAircraft") |
track_deg |
number | Actual ground track derived from velocity vectors, in degrees |
vertical_speed_fpm |
number | Vertical speed in feet per minute (positive = climbing) |
in_parking_state |
boolean | true when the aircraft is in a parking / pushback state |
on_any_runway |
boolean | true when the aircraft is occupying a runway |
flight_phase |
string | Inferred phase: PARKED, TAXI, CLIMB, CLIMB SHALLOW, LEVEL, DESCENT, APPROACH, or FINAL |
Example request
{
"jsonrpc": "2.0",
"id": 7,
"method": "tools/call",
"params": {
"name": "get_traffic_with_phase",
"arguments": {}
}
}
Example response
{
"jsonrpc": "2.0",
"id": 7,
"result": {
"content": [
{
"type": "text",
"text": "{\"count\":1,\"radius_meters\":25000,\"traffic\":[{\"object_id\":1,\"title\":\"Cessna 172\",\"atc_id\":\"N12345\",\"atc_airline\":\"\",\"category\":\"Prop\",\"latitude\":38.77,\"longitude\":-9.13,\"altitude_ft\":4500,\"true_heading_deg\":090.0,\"track_deg\":088.5,\"ground_speed_kts\":110.0,\"vertical_speed_fpm\":-200,\"on_ground\":false,\"in_parking_state\":false,\"on_any_runway\":false,\"flight_phase\":\"DESCENT\"}]}"
}
]
}
}
Error codes: None. Errors are embedded in the response body.
get_airports_in_range
Return a list of airports in the simulator’s loaded scenery area (reality bubble), sorted by distance from the player aircraft. By default only standard ICAO-format airports are returned.
Requirements: Windows + MSFS 2020 or 2024 running with SimConnect enabled.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
radius_km |
number | No | 50 |
Maximum distance from the player aircraft in kilometres. Maximum 500. |
expanded |
boolean | No | false |
When true, include non-standard identifiers (private fields, military strips, simulator-only codes). |
Returns
| Field | Type | Description |
|---|---|---|
radius_km |
number | The radius used for filtering |
expanded |
boolean | Whether non-standard airports were included |
count |
number | Number of airports returned |
airports |
array | Array of airport entries (see below) |
error |
string | Present only when not connected or the scan failed |
Each entry in airports:
| Field | Type | Description |
|---|---|---|
icao |
string | ICAO airport code |
region |
string | ICAO region prefix |
latitude |
number | Airport reference latitude in decimal degrees |
longitude |
number | Airport reference longitude in decimal degrees |
altitude_m |
number | Airport elevation in metres MSL |
distance_km |
number | Haversine distance from the player aircraft in kilometres |
Example request
{
"jsonrpc": "2.0",
"id": 8,
"method": "tools/call",
"params": {
"name": "get_airports_in_range",
"arguments": { "radius_km": 100 }
}
}
Example response
{
"jsonrpc": "2.0",
"id": 8,
"result": {
"content": [
{
"type": "text",
"text": "{\"airports\":[{\"icao\":\"LPMA\",\"region\":\"LP\",\"latitude\":32.697,\"longitude\":-16.778,\"altitude_m\":58.0,\"distance_km\":0.3},{\"icao\":\"LPCC\",\"region\":\"LP\",\"latitude\":32.699,\"longitude\":-16.645,\"altitude_m\":98.0,\"distance_km\":14.9}],\"count\":2,\"expanded\":false,\"radius_km\":100}"
}
]
}
}
Error codes: None. Errors are embedded in the response body.
get_nearest_airport
Return the single closest airport to the player aircraft. Note: SimConnect’s facility list APIs may exclude the airport the player is currently on; use get_airports_in_range with expanded=true if you need to detect the current airport.
Requirements: Windows + MSFS 2020 or 2024 running with SimConnect enabled.
Parameters: None.
Returns
An airport entry object with the same fields as entries returned by get_airports_in_range, or an object with an error field when not connected, no airports are found, or the scan fails.
| Field | Type | Description |
|---|---|---|
icao |
string | ICAO airport code |
region |
string | ICAO region prefix |
latitude |
number | Airport reference latitude in decimal degrees |
longitude |
number | Airport reference longitude in decimal degrees |
altitude_m |
number | Airport elevation in metres MSL |
distance_km |
number | Distance from the player aircraft in kilometres |
Example request
{
"jsonrpc": "2.0",
"id": 9,
"method": "tools/call",
"params": {
"name": "get_nearest_airport",
"arguments": {}
}
}
Example response
{
"jsonrpc": "2.0",
"id": 9,
"result": {
"content": [
{
"type": "text",
"text": "{\"icao\":\"LPCC\",\"region\":\"LP\",\"latitude\":32.699,\"longitude\":-16.645,\"altitude_m\":98.0,\"distance_km\":14.9}"
}
]
}
}
Error codes: None. Errors are embedded in the response body.
get_airport_details
Return detailed facility data for a specific airport by ICAO code. The default response includes name, coordinates, elevation, magnetic variation, closed status, runways, and ATC frequencies. Set expanded=true to also receive parking stands, helipads, instrument approaches, SIDs, and STARs.
Requirements: Windows + MSFS 2020 or 2024 running with SimConnect enabled.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
icao |
string | Yes | — | ICAO airport code, e.g. "LPMA" or "EDDM". |
region |
string | No | "" |
ICAO region code, e.g. "LP". Leave empty for best results — SimConnect’s region filter is strict. |
expanded |
boolean | No | false |
When true, also return stands, helipads, approaches, SIDs, and STARs. |
Returns (default)
| Field | Type | Description |
|---|---|---|
icao |
string | ICAO code |
region |
string | ICAO region prefix |
name |
string | Short airport name |
name64 |
string | Full airport name (up to 64 characters) |
latitude |
number | Reference latitude in decimal degrees |
longitude |
number | Reference longitude in decimal degrees |
altitude_m |
number | Elevation in metres MSL |
magvar_deg |
number | Magnetic variation in degrees (positive = east) |
is_closed |
boolean | true when the airport is marked closed |
runway_count |
number | Number of runways |
runways |
array | Runway entries: name, heading_deg, length_m, width_m, surface |
frequencies |
array | ATC frequency entries: type, freq_mhz, name |
Additional fields when expanded=true
| Field | Type | Description |
|---|---|---|
stand_count |
number | Number of parking stands |
stands |
array | Stand entries: number, type, heading_deg |
helipad_count |
number | Number of helipads |
helipads |
array | Helipad entries: latitude, longitude, altitude_m, heading_deg, length_m, width_m, surface, type |
approach_count |
number | Number of instrument approaches |
approaches |
array | Approach entries: type, runway, has_lnav, has_lnavvnav, has_lp, has_lpv |
departure_count |
number | Number of departure procedures (SIDs) |
departures |
array | SID entries: name, runway_transitions, enroute_transitions |
arrival_count |
number | Number of arrival procedures (STARs) |
arrivals |
array | STAR entries: name, runway_transitions, enroute_transitions |
Example request
{
"jsonrpc": "2.0",
"id": 10,
"method": "tools/call",
"params": {
"name": "get_airport_details",
"arguments": { "icao": "LPMA" }
}
}
Example response
{
"jsonrpc": "2.0",
"id": 10,
"result": {
"content": [
{
"type": "text",
"text": "{\"icao\":\"LPMA\",\"region\":\"LP\",\"name\":\"Madeira\",\"name64\":\"Cristiano Ronaldo International Airport\",\"latitude\":32.697,\"longitude\":-16.778,\"altitude_m\":58.0,\"magvar_deg\":-5.2,\"is_closed\":false,\"runway_count\":1,\"runways\":[{\"name\":\"05/23\",\"heading_deg\":54.0,\"length_m\":2781,\"width_m\":45,\"surface\":\"Asphalt\"}],\"frequencies\":[{\"type\":\"ATIS\",\"freq_mhz\":126.9,\"name\":\"Madeira ATIS\"}]}"
}
]
}
}
Error codes
BRIDGE_DISCONNECTED: Not connected to the simulator.INVALID_ARGUMENT:icaomust be 1–9 uppercase alphanumeric characters;regionmust be 0–4 uppercase alphanumeric characters.AIRPORT_NOT_FOUND: No airport matching the given ICAO code was found.AIRPORT_DETAILS_ERROR: SimConnect returned an error while fetching facility data.
get_vors_in_range
Return a list of VOR navigation stations in the simulator’s reality bubble, sorted by distance from the player aircraft.
Requirements: Windows + MSFS 2020 or 2024 running with SimConnect enabled.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
radius_km |
number | No | 200 |
Maximum distance from the player aircraft in kilometres. Maximum 500. |
Returns
| Field | Type | Description |
|---|---|---|
radius_km |
number | The radius used for filtering |
count |
number | Number of VORs returned |
vors |
array | Array of VOR entries (see below) |
Each entry in vors:
| Field | Type | Description |
|---|---|---|
icao |
string | ICAO identifier |
region |
string | ICAO region prefix |
latitude |
number | Latitude in decimal degrees |
longitude |
number | Longitude in decimal degrees |
altitude_m |
number | Elevation in metres MSL |
frequency_hz |
number | VOR frequency in Hz |
magvar_deg |
number | Magnetic variation in degrees |
distance_km |
number | Haversine distance from the player aircraft in kilometres |
Error codes: None. Errors (not connected) are embedded as an error field in the response body.
get_vor_details
Return detailed data for a specific VOR navigation station by ICAO code.
Requirements: Windows + MSFS 2020 or 2024 running with SimConnect enabled.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
icao |
string | Yes | — | ICAO identifier of the VOR, e.g. "OPO". |
region |
string | No | "" |
ICAO region code. Leave empty for best results. |
Returns
| Field | Type | Description |
|---|---|---|
icao |
string | ICAO identifier |
region |
string | ICAO region prefix |
name |
string | Station name |
latitude |
number | Latitude in decimal degrees |
longitude |
number | Longitude in decimal degrees |
altitude_m |
number | Elevation in metres MSL |
frequency_hz |
number | Frequency in Hz |
frequency_mhz |
number | Frequency in MHz |
magvar_deg |
number | Magnetic variation in degrees |
nav_range_nm |
number | Navigational range in nautical miles |
is_nav |
boolean | true when the station transmits a VOR signal |
is_dme |
boolean | true when the station has DME |
is_tacan |
boolean | true when the station is TACAN |
has_glide_slope |
boolean | true when the station has a glide slope (ILS) |
has_back_course |
boolean | true when the station has a back course |
Error codes
BRIDGE_DISCONNECTED: Not connected to the simulator.INVALID_ARGUMENT:icaowas not provided or is empty.VOR_NOT_FOUND: No VOR matching the given ICAO code was found.
get_ndbs_in_range
Return a list of NDB navigation stations in the simulator’s reality bubble, sorted by distance from the player aircraft.
Requirements: Windows + MSFS 2020 or 2024 running with SimConnect enabled.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
radius_km |
number | No | 200 |
Maximum distance from the player aircraft in kilometres. Maximum 500. |
Returns
| Field | Type | Description |
|---|---|---|
radius_km |
number | The radius used for filtering |
count |
number | Number of NDBs returned |
ndbs |
array | Array of NDB entries (see below) |
Each entry in ndbs:
| Field | Type | Description |
|---|---|---|
icao |
string | ICAO identifier |
region |
string | ICAO region prefix |
latitude |
number | Latitude in decimal degrees |
longitude |
number | Longitude in decimal degrees |
altitude_m |
number | Elevation in metres MSL |
frequency_hz |
number | NDB frequency in Hz |
magvar_deg |
number | Magnetic variation in degrees |
distance_km |
number | Haversine distance from the player aircraft in kilometres |
Error codes: None. Errors are embedded as an error field in the response body.
get_ndb_details
Return detailed data for a specific NDB navigation station by ICAO code.
Requirements: Windows + MSFS 2020 or 2024 running with SimConnect enabled.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
icao |
string | Yes | — | ICAO identifier of the NDB, e.g. "LIS". |
region |
string | No | "" |
ICAO region code. Leave empty for best results. |
Returns
| Field | Type | Description |
|---|---|---|
icao |
string | ICAO identifier |
region |
string | ICAO region prefix |
name |
string | Station name |
latitude |
number | Latitude in decimal degrees |
longitude |
number | Longitude in decimal degrees |
altitude_m |
number | Elevation in metres MSL |
frequency_hz |
number | Frequency in Hz |
frequency_khz |
number | Frequency in kHz |
type |
number | NDB type code from SimConnect |
range_nm |
number | Navigational range in nautical miles |
magvar_deg |
number | Magnetic variation in degrees |
is_terminal |
boolean | true when this is a terminal NDB |
Error codes
BRIDGE_DISCONNECTED: Not connected to the simulator.INVALID_ARGUMENT:icaowas not provided or is empty.NDB_NOT_FOUND: No NDB matching the given ICAO code was found.
get_waypoints_in_range
Return a list of waypoints in the simulator’s reality bubble, sorted by distance from the player aircraft.
Requirements: Windows + MSFS 2020 or 2024 running with SimConnect enabled.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
radius_km |
number | No | 100 |
Maximum distance from the player aircraft in kilometres. Maximum 500. |
limit |
number | No | 200 |
Maximum number of waypoints to return. Maximum 1000. |
Returns
| Field | Type | Description |
|---|---|---|
radius_km |
number | The radius used for filtering |
limit |
number | The count cap applied |
count |
number | Number of waypoints returned |
waypoints |
array | Array of waypoint entries (see below) |
Each entry in waypoints:
| Field | Type | Description |
|---|---|---|
icao |
string | ICAO identifier |
region |
string | ICAO region prefix |
latitude |
number | Latitude in decimal degrees |
longitude |
number | Longitude in decimal degrees |
altitude_m |
number | Elevation in metres MSL |
magvar_deg |
number | Magnetic variation in degrees |
distance_km |
number | Haversine distance from the player aircraft in kilometres |
Error codes: None. Errors are embedded as an error field in the response body.
get_waypoint_details
Return detailed data for a specific waypoint by ICAO code.
Requirements: Windows + MSFS 2020 or 2024 running with SimConnect enabled.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
icao |
string | Yes | — | ICAO identifier of the waypoint, e.g. "ABRIX". |
region |
string | No | "" |
ICAO region code. Leave empty for best results. |
Returns
| Field | Type | Description |
|---|---|---|
icao |
string | ICAO identifier |
region |
string | ICAO region prefix |
latitude |
number | Latitude in decimal degrees |
longitude |
number | Longitude in decimal degrees |
altitude_m |
number | Elevation in metres MSL |
type |
number | Waypoint type code from SimConnect |
magvar_deg |
number | Magnetic variation in degrees |
n_routes |
number | Number of airways routes passing through this waypoint |
is_terminal |
boolean | true when this is a terminal waypoint |
Error codes
BRIDGE_DISCONNECTED: Not connected to the simulator.INVALID_ARGUMENT:icaomust be 1–9 uppercase alphanumeric characters;regionmust be 0–4 uppercase alphanumeric characters.WAYPOINT_NOT_FOUND: No waypoint matching the given ICAO code was found.
get_airport_taxiways
Return the taxiway network graph for a specific airport by ICAO code. The response contains three correlated arrays: names (taxiway letter strings), paths (directed edges referencing start/end node indices and a name index), and points (graph nodes including hold-short positions). Leave region empty for best results.
Requirements: Windows + MSFS 2020 or 2024 running with SimConnect enabled.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
icao |
string | Yes | — | ICAO airport code, e.g. "EDDM" or "KLAX". Must be 1–9 uppercase alphanumeric characters. |
region |
string | No | "" |
ICAO region code, e.g. "ED" or "K6". Leave empty for best results. |
max_paths |
number | No | 500 |
Maximum number of path entries to return. Range 1–2000. Large airports (EDDM, KJFK) can exceed 1000 paths; use this to keep the response within MCP client size limits. |
Returns
| Field | Type | Description |
|---|---|---|
name_count |
number | Total number of taxiway names |
point_count |
number | Total number of graph nodes |
path_count |
number | Total number of paths before truncation |
names |
array | List of taxiway name strings (e.g. ["A", "B", "C"]) |
paths |
array | Directed edges, capped at max_paths (see below) |
points |
array | Graph nodes (see below) |
truncated |
boolean | Present and true when paths were capped by max_paths |
truncated_to |
number | Present when truncated=true; the number of paths actually returned |
Each entry in paths:
| Field | Type | Description |
|---|---|---|
type |
string | Path type (e.g. "TAXIWAY", "RUNWAY", "VEHICLE") |
width_m |
number | Path width in metres |
left_half_width_m |
number | Left half-width in metres |
right_half_width_m |
number | Right half-width in metres |
weight |
number | Path weight / priority value |
runway_number |
number | Associated runway number (0 if not runway-related) |
runway_designator |
number | Associated runway designator code |
left_edge |
string | Left edge lighting type |
right_edge |
string | Right edge lighting type |
center_line |
string | Center line type |
start_node |
number | Index into points array for the path start |
end_node |
number | Index into points array for the path end |
name_index |
number | Index into names array identifying the taxiway letter |
Each entry in points:
| Field | Type | Description |
|---|---|---|
type |
string | Node type (e.g. "NORMAL", "HOLD_SHORT", "ILS_HOLD_SHORT") |
orientation |
string | Orientation descriptor |
bias_x_m |
number | X offset from the airport reference point in metres |
bias_z_m |
number | Z offset from the airport reference point in metres |
Example request
{
"jsonrpc": "2.0",
"id": 17,
"method": "tools/call",
"params": {
"name": "get_airport_taxiways",
"arguments": { "icao": "EDDM" }
}
}
Example response
{
"jsonrpc": "2.0",
"id": 17,
"result": {
"content": [
{
"type": "text",
"text": "{\"names\":[\"A\",\"B\",\"N\"],\"paths\":[{\"type\":\"TAXIWAY\",\"width_m\":23.0,\"start_node\":0,\"end_node\":1,\"name_index\":0,...}],\"points\":[{\"type\":\"NORMAL\",\"orientation\":\"NONE\",\"bias_x_m\":-823.5,\"bias_z_m\":441.2}]}"
}
]
}
}
Error codes
BRIDGE_DISCONNECTED: Not connected to the simulator.INVALID_ARGUMENT:icaomust be 1–9 uppercase alphanumeric characters;regionmust be 0–4 uppercase alphanumeric characters.TAXIWAY_NOT_FOUND: No taxiway data was found for the given ICAO code.TAXIWAY_ERROR: SimConnect returned an error while fetching taxiway data.
get_taxiway_names
Return only the taxiway letter/name strings for an airport by ICAO code. Lightweight alternative to get_airport_taxiways when only the taxiway label list is needed — no paths or points are returned.
Requirements: Windows + MSFS 2020 or 2024 running with SimConnect enabled.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
icao |
string | Yes | — | ICAO airport code, e.g. "EDDM" or "KLAX". Must be 1–9 uppercase alphanumeric characters. |
region |
string | No | "" |
ICAO region code, e.g. "ED" or "K6". Leave empty for best results. |
Returns
| Field | Type | Description |
|---|---|---|
icao |
string | Airport ICAO code |
name_count |
number | Number of taxiway names |
names |
array | List of taxiway name strings (e.g. ["A", "B", "C", "N"]) |
Example request
{
"jsonrpc": "2.0",
"id": 19,
"method": "tools/call",
"params": {
"name": "get_taxiway_names",
"arguments": { "icao": "EDDM" }
}
}
Example response
{
"jsonrpc": "2.0",
"id": 19,
"result": {
"content": [
{
"type": "text",
"text": "{\"icao\":\"EDDM\",\"name_count\":12,\"names\":[\"A\",\"B\",\"C\",\"D\",\"E\",\"F\",\"G\",\"H\",\"J\",\"K\",\"M\",\"N\"]}"
}
]
}
}
Error codes
BRIDGE_DISCONNECTED: Not connected to the simulator.INVALID_ARGUMENT:icaomust be 1–9 uppercase alphanumeric characters;regionmust be 0–4 uppercase alphanumeric characters.TAXIWAY_NOT_FOUND: No taxiway data was found for the given ICAO code.TAXIWAY_ERROR: SimConnect returned an error while fetching taxiway data.
get_airport_parkings
Return all parking stands, gates, and ramps at a specific airport by ICAO code. Each entry includes type, name, suffix, number, heading, radius, and position offsets from the airport reference point. Returns the full TAXI_PARKING record — more fields than the abbreviated stands array in get_airport_details. Leave region empty for best results.
Requirements: Windows + MSFS 2020 or 2024 running with SimConnect enabled.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
icao |
string | Yes | — | ICAO airport code, e.g. "EDDM" or "KLAX". Must be 1–9 uppercase alphanumeric characters. |
region |
string | No | "" |
ICAO region code, e.g. "ED" or "K6". Leave empty for best results. |
Returns
| Field | Type | Description |
|---|---|---|
count |
number | Number of parking stands returned |
parkings |
array | Array of parking entries (see below) |
Each entry in parkings:
| Field | Type | Description |
|---|---|---|
type |
string | Parking type (e.g. "GATE", "RAMP_GA", "RAMP_CARGO", "FUEL", "VEHICLE") |
name |
string | Parking name label (derived from type) |
suffix |
string | Parking suffix letter (e.g. "A", "L", "R") |
number |
number | Parking stand number |
orientation |
string | Push-back orientation descriptor |
heading_deg |
number | Parking heading in degrees true |
radius_m |
number | Parking radius in metres (aircraft size constraint) |
bias_x_m |
number | X offset from the airport reference point in metres |
bias_z_m |
number | Z offset from the airport reference point in metres |
Example request
{
"jsonrpc": "2.0",
"id": 18,
"method": "tools/call",
"params": {
"name": "get_airport_parkings",
"arguments": { "icao": "EDDM" }
}
}
Example response
{
"jsonrpc": "2.0",
"id": 18,
"result": {
"content": [
{
"type": "text",
"text": "{\"count\":2,\"parkings\":[{\"type\":\"GATE\",\"name\":\"Gate\",\"suffix\":\"A\",\"number\":1,\"orientation\":\"NONE\",\"heading_deg\":180.0,\"radius_m\":40.0,\"bias_x_m\":120.5,\"bias_z_m\":-310.2},{\"type\":\"RAMP_GA\",\"name\":\"Ramp GA\",\"suffix\":\"\",\"number\":2,\"orientation\":\"NONE\",\"heading_deg\":90.0,\"radius_m\":12.0,\"bias_x_m\":-50.0,\"bias_z_m\":80.0}]}"
}
]
}
}
Error codes
BRIDGE_DISCONNECTED: Not connected to the simulator.INVALID_ARGUMENT:icaomust be 1–9 uppercase alphanumeric characters;regionmust be 0–4 uppercase alphanumeric characters.PARKING_NOT_FOUND: No parking data was found for the given ICAO code.PARKING_ERROR: SimConnect returned an error while fetching parking data.