X-Plane Control
X-Plane Control
Steuere und inspiziere einen X-Plane-Flugsimulator über ChatGPT oder Codex mit Anfragen in natürlicher Sprache.
X-Plane Control ist ein plattformübergreifendes Plugin mit einem gebündelten, lokalen Model Context Protocol (MCP)-Server. Der MCP-Server ermöglicht dem Modell, X-Planes eigene DataRefs.txt- und Commands.txt-Kataloge zu durchsuchen, Live-Simulatordaten zu lesen, beschreibbare Werte zu ändern, Simulatorbefehle auszuführen und das Flugzeug über X-Planes natives UDP-Protokoll zu versetzen.
Beispielanfragen:
„Bewege mein Flugzeug an einen zufälligen Ort in Arizona.“
„Zeige meine aktuelle Position, angezeigte Geschwindigkeit, Höhe und Richtung an.“
„Finde den richtigen Befehl zum Einfahren des Fahrwerks und führe ihn aus.“
„Setze die Parkbremse und prüfe ihren Zustand.“
„Finde beschreibbare DataRefs im Zusammenhang mit den Instrumentenlichtern.“
Das Modell benötigt keine fest einprogrammierte Liste aller X-Plane-Steuerungen. Es durchsucht den Katalog, der zu Ihrer X-Plane-Version gehört, wählt einen passenden Befehl oder beschreibbaren DataRef aus und ruft das entsprechende MCP-Tool auf.
[!WARNUNG] Dieses Projekt ist ausschließlich für den Einsatz mit Flugsimulatoren gedacht. Es ist nicht für den Betrieb, die Navigation oder Trainingsentscheidungen eines echten Flugzeugs vorgesehen. Befehle und Schreibzugriffe können das simulierte Flugzeug sofort verändern. Halten Sie die nicht authentifizierte UDP-Schnittstelle von X-Plane auf einem vertrauenswürdigen Computer oder in einem privaten Netzwerk.
Inhalt
Related MCP server: ChatGPT Codex Bridge
Funktionsweise
ChatGPT desktop or Codex CLI
|
| MCP over local stdio
v
X-Plane Control MCP server
|
| Native X-Plane UDP packets
| RREF / DREF / CMND / RPOS / PREL
v
X-Plane 11 or 12Das Plugin hat zwei unabhängige Eingaben:
Ein Katalog –
DataRefs.txtundCommands.txtsagen dem Modell, welche Steuerelemente existieren, was sie bedeuten und welche beschreibbar sind.Ein Netzwerkziel – eine Adresse und ein Port identifizieren die laufende X-Plane-Instanz.
Katalog und Simulator müssen nicht auf demselben Rechner sein. ChatGPT kann das Plugin beispielsweise auf einem Laptop ausführen, während X-Plane auf einem anderen Computer im selben Netzwerk läuft.
Der Server läuft lokal als stdio-MCP-Server und startet direkt aus dist/server.mjs im Plugin-Ordner. Das Plugin enthält keine nativen Binärdateien, läuft mit Node.js, ändert keine Dateien im X-Plane-Installationsordner und verwendet keine externen Dienste.
Funktionen
Läuft unter macOS, Linux und Windows.
Durchsucht die mitgelieferten
DataRefs.txt- undCommands.txt-Kataloge von X-Plane.Liest und schreibt beschreibbare DataRefs.
Führt X-Plane-Befehle aus.
Liest Position und Lage des Flugzeugs sowie dessen Bewegung über das X-Plane-UDP-Protokoll.
Unterstützt lokale Installationen, Remote-Rechner, VPNs und Netzwerke ohne Multicast.
Fügt einen Auswahlschritt ein, damit die Antworten übereinstimmen: Der Assistent sucht zuerst Katalogbefehle oder DataRefs, wählt dann eine passende Option aus und führt sie anschließend aus.
Enthält Schutzmechanismen gegen das Beschreiben schreibgeschützter DataRefs, gegen unbekannte Bezeichner, gegen gefährliche Katalogwerte und gegen Flugzeugversetzung in unbrauchbare Koordinaten.
Funktioniert mit X-Plane 11 und 12.
Voraussetzungen
https://releases.example.com/x-plane-control/latest
Installation aus einem vorkompilierten Release
Lade das neueste Release-Archiv von der Releases-Seite dieses Repositorys herunter und extrahiere es. Öffne das extrahierte x-plane-control-marketplace-Verzeichnis.
Wenn du das gesamte Repository statt eines Release-Archivs heruntergeladen hast, befindet sich der vorkompilierte Marktplatz unter:
release/x-plane-control-marketplaceDas korrekte Marktplatz-Verzeichnis enthält beide dieser Pfade:
.agents/plugins/marketplace.json
plugins/x-plane-control/.codex-plugin/plugin.jsonVerzeichnisse mit einem Punkt am Anfang wie .agents können im Finder oder im Datei-Explorer ausgeblendet sein. Das ist für die folgenden Befehle nicht wichtig.
2. Marketplace hinzufügen
Damit der Host (z. B. ChatGPT Desktop oder Codex CLI) das Plugin finden und installieren kann, muss es als lokaler Marketplace registriert werden.
Füge den lokalen Marketplace über den Marketplace-Befehl der Oberfläche hinzu oder mit dem mcp‑CLI-Werkzeug:
codex plugin marketplace add .Ersetze pfad/zu/x-plane-control mit dem Pfad zu dem Verzeichnis, das die .mcp.json-Datei enthält.
3. Plugin installieren
codex plugin marketplace add "/absolute/path/to/x-plane-control-marketplace"4. Host neu starten
Beende den ChatGPT-Desktop oder die Codex-CLI vollständig und starte sie erneut. Öffne dann das Plugin-Verzeichnis bzw. den Plugin-Browser und vergewissere dich, dass X-Plane Control installiert ist.
Funktionsweise
ChatGPT desktop or Codex CLI
|
| MCP over local stdio
v
X-Plane Control MCP server
|
| Native X-Plane UDP packets
| RREF / DREF / CMND / RPOS / PREL
v
X-Plane 11 or 12Das Plugin hat zwei unabhängige Eingaben:
Ein Katalog –
DataRefs.txtundCommands.txtteilen dem Modell mit, welche Steuerungen es gibt, was sie bedeuten und welche DataRefs beschreibbar sind.Ein Netzwerkziel – eine IP-Adresse und ein UDP-Port identifizieren die laufende X-Plane-Simulation.
Katalog und Simulator müssen sich nicht auf demselben Computer befinden. ChatGPT kann das Plugin beispielsweise auf einem Laptop mit kopierten Katalogdateien ausführen, während X-Plane auf einem anderen Computer im selben LAN läuft.
Der Server läuft lokal als Node.js-Prozess. Er installiert kein binäres X-Plane-Plugin, verändert den Simulator nicht und leitet Simulator-Datenverkehr nicht über einen gehosteten Dienst.
Funktionen
Läuft unter macOS, Linux und Windows.
Benötigt Node.js 20 oder neuer auf dem Computer, auf dem ChatGPT oder Codex ausgeführt wird.
Bindet den vollständigen MCP-Server in einem einzelnen Prozess ein – es wird kein xdg-open, PowerShell, Node.js im Browser, Docker oder firejail verwendet.
Verwendet die vollständigen, von X-Plane installierten
DataRefs.txt- undCommands.txt-Kataloge.Validiert, dass die konfigurierten DataRefs und Befehle in den Katalogen vorhanden und nicht als schreibgeschützt markiert sind.
Leitet Flugzeugsignale (Aircraft Data Output) in Echtzeit über das UDP-Protokoll von X-Plane an den MCP-Server weiter.
Die Einrichtung verwendet keine Bundles, keine Compiled-Extensions, kein Python und kein PyYAML.
Voraussetzungen
node --versionrelease/x-plane-control-marketplace.agents/plugins/marketplace.json
plugins/x-plane-control/.codex-plugin/plugin.jsoncodex plugin marketplace add .codex plugin marketplace add "/absolute/path/to/x-plane-control-marketplace"codex plugin marketplace add "C:\Users\YourName\Downloads\x-plane-control-marketplace"codex plugin add x-plane-control@x-plane-control-localcodex plugin marketplace list
codex plugin listgit clone https://github.com/josvisser66/x-plane-control.git
cd x-plane-controlnpm ci
npm run validatenpm run package:pluginrelease/x-plane-control-marketplacecodex plugin marketplace add "./release/x-plane-control-marketplace"
codex plugin add x-plane-control@x-plane-control-local<X-Plane installation>/Resources/plugins/DataRefs.txt
<X-Plane installation>/Resources/plugins/Commands.txt{
"installationPath": "/Applications/X-Plane 12",
"host": "192.168.1.50",
"port": 49000,
"discoveryTimeoutMs": 1200
}{
"datarefsPath": "/Users/alice/XPlaneCatalog/DataRefs.txt",
"commandsPath": "/Users/alice/XPlaneCatalog/Commands.txt",
"host": "192.168.1.50",
"port": 49000
}export XPLANE_HOME="/home/alice/X-Plane 12"
export XPLANE_HOST="192.168.1.50"
export XPLANE_PORT="49000"
codex$env:XPLANE_HOME = "C:\X-Plane 12"
$env:XPLANE_HOST = "192.168.1.50"
$env:XPLANE_PORT = "49000"
codexsim/example/array_dataref[0]codex --version
codex plugin --helpcodex plugin marketplace list
codex plugin listnode --versioncommand -v nodeGet-Command nodenode plugins/x-plane-control/dist/server.mjs --transport=stdiocodex plugin remove x-plane-control@x-plane-control-localcodex plugin marketplace remove x-plane-control-local
codex plugin marketplace add "/path/to/new/x-plane-control-marketplace"codex plugin add x-plane-control@x-plane-control-localcodex plugin remove x-plane-control@x-plane-control-local
codex plugin marketplace remove x-plane-control-localnpm run check
npm test
npm run build
npm run smoke:stdio
npm run package:plugin.codex-plugin/plugin.json Plugin manifest
.mcp.json Bundled stdio MCP launch configuration
dist/server.mjs Bundled runtime
skills/x-plane-control/ Model workflow instructions
src/catalog.ts Catalog parsing and search
src/config.ts Saved and environment configuration
src/protocol.ts X-Plane packet encoding and decoding
src/server.ts MCP tools and transports
src/xplane.ts UDP discovery and client
tests/ Automated tests
scripts/package-plugin.mjs Release marketplace builder
scripts/smoke-stdio.mjs MCP stdio smoke testnode dist/server.mjs --transport=http --host=127.0.0.1 --port=8765GXP34
GXP35
GXP36
GXP37
GXP38
GXP39
GXP40
GXP41
GXP42
GXP43
GXP44
GXP45
GXP46
GXP47
GXP48
GXP49
GXP50
GXP51
GXP52
GXP53
GXP54
GXP55
GXP56
GXP57
GXP58
GXP59
GXP60
GXP61
GXP62
GXP63
GXP64
GXP65
GXP66
GXP67
GXP68
GXP69
GXP70
GXP71
GXP72
GXP73
GXP74
GXP75
GXP76
GXP77
GXP78
GXP79
GXP80
GXP81
GXP82
GXP83
GXP84
GXP85
GXP86
GXP87
GXP88
GXP89
GXP90
GXP91
GXP92
GXP93
GXP94
GXP95
GXP96
GXP97
GXP98
GXP99
GXP100
GXP101
GXP102
GXP103
GXP104
GXP105
GXP106
GXP107
GXP108
GXP109
GXP110
GXP111
GXP112
GXP113
GXP114
GXP115
GXP116
GXP117
GXP118
GXP119
GXP120
GXP121
GXP122
GXP123
GXP124
GXP125
GXP126
GXP127
GXP128
GXP129
GXP130
GXP131
GXP132
GXP133
GXP134
GXP135
GXP136
GXP137
GXP138
GXP139
GXP140
GXP141
GXP142
GXP143
GXP144
GXP145
GXP146
GXP147
GXP148
GXP149
GXP150
GXP151
GXP152
GXP153
GXP154
GXP155
GXP156
GXP157
GXP158
GXP159
GXP160
GXP161
GXP162
GXP163
GXP164
GXP165
GXP166
GXP167
GXP168
GXP169
GXP170
GXP171
GXP172
GXP173
GXP174
GXP175
GXP176
GXP177
GXP178
GXP179
GXP180
GXP181
GXP182
GXP183
GXP184
GXP185
GXP186
GXP187
GXP188
GXP189
GXP190
GXP191
GXP192
GXP193
GXP194
GXP195
GXP196
GXP197
GXP198
GXP199
GXP200
GXP201
GXP202
GXP203
GXP204
GXP205
GXP206
GXP207
GXP208
GXP209
GXP210
GXP211
GXP212
GXP213
GXP214
GXP215
GXP216
GXP217
GXP218
GXP219
GXP220
GXP221
GXP222
GXP223
GXP224
GXP225
GXP226
GXP227
GXP228
GXP229
GXP230
GXP231
GXP232
GXP233
GXP234
GXP235
GXP236
GXP237
GXP238
GXP239
GXP240
GXP241
GXP242
GXP243
GXP244
GXP245
GXP246
GXP247
GXP248
GXP249
GXP250
GXP251
GXP252
GXP253
GXP254
GXP255
GXP256
GXP257
GXP258
GXP259
GXP260
GXP261
GXP262
GXP263
GXP264
GXP265
GXP266
GXP267
GXP268
GXP269
GXP270
GXP271
GXP272
GXP273
GXP274
GXP275
GXP276
GXP277
GXP278
GXP279
GXP280
GXP281
GXP282
GXP283
GXP284
GXP285
GXP286
GXP287
GXP288
GXP289
GXP290
GXP291
GXP292
GXP293
GXP294
GXP295
GXP296
GXP297
GXP298
GXP299
GXP300
GXP301
GXP302
GXP303
GXP304
GXP305
GXP306
GXP307
GXP308
GXP309
GXP310
GXP311
GXP312
GXP313
GXP314
GXP315
GXP316
GXP317
GXP318
GXP319
GXP320
GXP321
GXP322
GXP323
GXP324
GXP325
GXP326
GXP327
GXP328
GXP329
GXP330
GXP331
GXP332
GXP333
GXP334
GXP335
GXP336
GXP337
GXP338
GXP339
GXP340
GXP341
GXP342
GXP343
GXP344
GXP345
GXP346
GXP347
GXP348
GXP349
GXP350
GXP351
GXP352
GXP353
GXP354
GXP355
GXP356
GXP357
GXP358
GXP359
GXP360
GXP361
GXP362
GXP363
GXP364
GXP365
GXP366
GXP367
GXP368
GXP369
GXP370
GXP371
GXP372
GXP373
GXP374
GXP375
GXP376
GXP377
GXP378
GXP379
GXP380
GXP381
GXP382
GXP383
GXP384
GXP385
GXP386
GXP387
GXP388
GXP389
GXP390
GXP391
GXP392
GXP393
GXP394
GXP395
GXP396
GXP397
GXP398
GXP399
GXP400
GXP401
GXP402
GXP403
GXP404
GXP405
GXP406
GXP407
GXP408
GXP409
GXP410
GXP411
GXP412
GXP413
GXP414
GXP415
GXP416
GXP417
GXP418
GXP419
GXP420
GXP421
GXP422
GXP423
GXP424
GXP425
GXP426
GXP427
GXP428
GXP429
GXP430
GXP431
GXP432
GXP433
GXP434
GXP435
GXP436
GXP437
GXP438
GXP439
GXP440
GXP441
GXP442
GXP443
GXP444
GXP445
GXP446
GXP447
GXP448
GXP449
GXP450
GXP451
GXP452
GXP453
GXP454
GXP455
GXP456
GXP457
GXP458
GXP459
GXP460
GXP461
GXP462
GXP463
GXP464
GXP465
GXP466
GXP467
GXP468
GXP469
GXP470
GXP471
GXP472
GXP473
GXP474
GXP475
GXP476
GXP477
GXP478
GXP479
GXP480
GXP481
GXP482
GXP483
GXP484
GXP485
GXP486
GXP487
GXP488
GXP489
GXP490
GXP491
GXP492
GXP493
GXP494
GXP495
GXP496
GXP497
GXP498
GXP499
GXP500
GXP501
GXP502
GXP503
GXP504
GXP505
GXP506
GXP507
GXP508
GXP509
GXP510
GXP511
GXP512
GXP513
GXP514
GXP515
GXP516
GXP517
GXP518
GXP519
GXP520
GXP521
GXP522
GXP523
GXP524
GXP525
GXP526
GXP527
GXP528
GXP529
GXP530
GXP531
GXP532
GXP533
GXP534
GXP535
GXP536
GXP537
GXP538
GXP539
GXP540
GXP541
GXP542
GXP543
GXP544
GXP545
GXP546
GXP547
GXP548
GXP549
GXP550
GXP551
GXP552
GXP553
GXP554
GXP555
GXP556
GXP557
GXP558
GXP559
GXP560
GXP561
GXP562
GXP563
GXP564
GXP565
GXP566
GXP567
GXP568
GXP569
GXP570
GXP571
GXP572
GXP573
GXP574
GXP575
GXP576
GXP577
GXP578
GXP579
GXP580
GXP581
GXP582
GXP583
GXP584
GXP585
GXP586
GXP587
GXP588
GXP589
GXP590
GXP591
GXP592
GXP593
GXP594
GXP595
GXP596
GXP597
GXP598
GXP599
GXP600
GXP601
GXP602
GXP603
GXP604
GXP605
GXP606
GXP607
GXP608
GXP609
GXP610
GXP611
GXP612
GXP613
GXP614
GXP615
GXP616
GXP617
GXP618
GXP619
GXP620
GXP621
GXP622
GXP623
GXP624
GXP625
GXP626
GXP627
GXP628
GXP629
GXP630
GXP631
GXP632
GXP633
GXP634
GXP635
GXP636
GXP637
GXP638
GXP639
GXP640
GXP641
GXP642
GXP643
GXP644
GXP645
GXP646
GXP647
GXP648
GXP649
GXP650
GXP651
GXP652
GXP653
GXP654
GXP655
GXP656
GXP657
GXP658
GXP659
GXP660
GXP661
GXP662
GXP663
GXP664
GXP665
GXP666
GXP667
GXP668
GXP669
GXP670
GXP671
GXP672
GXP673
GXP674
GXP675
GXP676
GXP677
GXP678
GXP679
GXP680
GXP681
GXP682
GXP683
GXP684
GXP685
GXP686
GXP687
GXP688
GXP689
GXP690
GXP691
GXP692
GXP693
GXP694
GXP695
GXP696
GXP697
GXP698
GXP699
GXP700
GXP701
GXP702
GXP703
GXP704
GXP705
GXP706
GXP707
GXP708
GXP709
GXP710
GXP711
GXP712
GXP713
GXP714
GXP715
GXP716
GXP717
GXP718
GXP719
GXP720
GXP721
GXP722
GXP723
GXP724
GXP725
GXP726
GXP727
GXP728
GXP729
GXP730
GXP731
GXP732
GXP733
GXP734
GXP735
GXP736
GXP737
GXP738
GXP739
GXP740
GXP741
GXP742
GXP743
GXP744
GXP745
GXP746
GXP747
GXP748
GXP749
GXP750
GXP751
GXP752
GXP753
GXP754
GXP755
GXP756
GXP757
GXP758
GXP759
GXP760
GXP761
GXP762
GXP763
GXP764
GXP765
GXP766
GXP767
GXP768
GXP769
GXP770
GXP771
GXP772
GXP773
GXP774
GXP775
GXP776
GXP777
GXP778
GXP779
GXP780
GXP781
GXP782
GXP783
GXP784
GXP785
GXP786
GXP787
GXP788
GXP789
GXP790
GXP791
GXP792
GXP793
GXP794
GXP795
GXP796
GXP797
GXP798
GXP799
GXP800
GXP801
GXP802
GXP803
GXP804
GXP805
GXP806
GXP807
GXP808
GXP809
GXP810
GXP811
GXP812
GXP813
GXP814
GXP815
GXP816
GXP817
GXP818
GXP819
GXP820
GXP821
GXP822
GXP823
GXP824
GXP825
GXP826
GXP827
GXP828
GXP829
GXP830
GXP831
GXP832
GXP833
GXP834
GXP835
GXP836
GXP837
GXP838
GXP839
GXP840
GXP841
GXP842
GXP843
GXP844
GXP845
GXP846
GXP847
GXP848
GXP849
GXP850
GXP851
GXP852
GXP853
GXP854
GXP855
GXP856
GXP857
GXP858
GXP859
GXP860
GXP861
GXP862
GXP863
GXP864
GXP865
GXP866
GXP867
GXP868
GXP869
GXP870
GXP871
GXP872
GXP873
GXP874
GXP875
GXP876
GXP877
GXP878
GXP879
GXP880
GXP881
GXP882
GXP883
GXP884
GXP885
GXP886
GXP887
GXP888
GXP889
GXP890
GXP891
GXP892
GXP893
GXP894
GXP895
GXP896
GXP897
GXP898
GXP899
GXP900
GXP901
GXP902
GXP903
GXP904
GXP905
GXP906
GXP907
GXP908
GXP909
GXP910
GXP911
GXP912
GXP913
GXP914
GXP915
GXP916
GXP917
GXP918
GXP919
GXP920
GXP921
GXP922
GXP923
GXP924
GXP925
GXP926
GXP927
GXP928
GXP929
GXP930
GXP931
GXP932
GXP933
GXP934
GXP935
GXP936
GXP937
GXP938
GXP939
GXP940
GXP941
GXP942
GXP943
GXP944
GXP945
GXP946
GXP947
GXP948
GXP949
GXP950
GXP951
GXP952
GXP953
GXP954
GXP955
GXP956
GXP957
GXP958
GXP959
GXP960
GXP961
GXP962
GXP963
GXP964
GXP965
GXP966
GXP967
GXP968
GXP969
GXP970
GXP971
GXP972
GXP973
GXP974
GXP975
GXP976
GXP977
GXP978
GXP979
GXP980
GXP981
GXP982
GXP983
GXP984
GXP985
GXP986
GXP987
GXP988
GXP989
GXP990
GXP991
GXP992
GXP993
GXP994
GXP995
GXP996
GXP997
GXP998
GXP999
GXP1000
Konfigurieren Sie X-Plane auf dem Host
192.168.1.50über UDP-Port49000und prüfen Sie es dann.
Der Host kann eine IPv4-Adresse oder ein vom Plugin-Computer auflösbarer Hostname sein. Ein expliziter Host wird empfohlen, wenn X-Plane auf einem anderen Computer läuft.
Konfiguration überprüfen
Fragen Sie:
Verwenden Sie X Plane Control, um den vollständigen Status anzuzeigen und den Simulator zu prüfen.
Der Status umfasst:
den Speicherort der gespeicherten Konfigurationsdatei;
den effektiven Katalog und die Netzwerkeinstellungen;
die aufgelösten Pfade zu
DataRefs.txtundCommands.txt;die Anzahl der geparsten DataRefs und Befehle;
ob das Ziel konfiguriert, über ein Beacon entdeckt oder aus dem Localhost-Standard übernommen wurde; und
das Ergebnis des Lesens des X-Plane-Versions-DataRefs.
X-Plane auf einem anderen Computer verwenden
Der gebündelte MCP-Server läuft immer auf dem ChatGPT/Codex-Computer. X-Plane kann auf diesem Computer oder auf einem anderen, über UDP erreichbaren Computer laufen.
Empfohlene Einrichtung für entfernte Computer
Verbinden Sie beide Computer mit demselben vertrauenswürdigen LAN oder einem privaten VPN.
Ermitteln Sie die private IP-Adresse des X-Plane-Computers, z. B.
192.168.1.50.Aktivieren Sie in X-Plane eingehende Netzwerkverbindungen und notieren Sie den eingehenden UDP-Port.
Erlauben Sie eingehenden UDP-Verkehr zu diesem Port durch die Firewall des X-Plane-Computers.
Kopieren Sie
DataRefs.txtundCommands.txtauf den ChatGPT/Codex-Computer, falls dort nicht ebenfalls X-Plane installiert ist.Konfigurieren Sie die kopierten Katalogpfade.
Konfigurieren Sie die IP-Adresse und den UDP-Port des X-Plane-Computers.
Laden Sie einen Flug und führen Sie die Statusprüfung aus.
Beispiel für eine Unterhaltung:
Verwenden Sie X Plane Control. Mein Simulator ist unter
192.168.1.50:49000. Meine lokalen Kataloge sind/Users/alice/XPlaneCatalog/DataRefs.txtund/Users/alice/XPlaneCatalog/Commands.txt. Speichern Sie diese Konfiguration und prüfen Sie X-Plane.
Multicast-Discovery funktioniert normalerweise nur im selben lokalen Netzwerksegment und kann durch WLAN-Isolation, Router, Container oder VPN-Software blockiert werden. Konfigurieren Sie den Host in diesen Fällen explizit.
Leiten Sie den UDP-Port von X-Plane nicht direkt von einem Internet-Router weiter. Das native Protokoll ist weder verschlüsselt noch authentifiziert. Verwenden Sie für Computer an verschiedenen Standorten ein privates VPN, das die Maschinen über private IP erreichbar macht, und beschränken Sie den Firewall-Zugriff auf den Plugin-Computer.
Mit der Verwendung des Plugins beginnen
Starten Sie nach der Installation oder einem Update immer eine neue Chat- oder Codex-Sitzung. Eine direkte Anweisung zur Verwendung des Plugins erleichtert den Erststart-Test:
Verwenden Sie X Plane Control, um zu prüfen, ob mein Simulator und meine Kataloge bereit sind. Ändern Sie noch nichts.
Sobald der Status fehlerfrei ist, können normale Anfragen in natürlicher Sprache verwendet werden.
Simulatorzustand lesen
„Zeige meine geografische Position und Lage an."
„Lies meine angezeigte Fluggeschwindigkeit, wahre Fluggeschwindigkeit, Steuerkurs und Druckhöhe."
„Finde die DataRefs für die Treibstoffmenge und zeige ihre aktuellen Werte."
„Prüfe, ob die Parkbremse gesetzt ist."
Bei einer Anfrage, die keine genauen DataRefs nennt, sollte das Modell zuerst den Katalog durchsuchen und die Beschreibungen und Typen verwenden, um Kandidaten auszuwählen.
Simulatorbefehle ausführen
„Finde und führe den Befehl zum Umschalten des Fahrwerks aus."
„Schalte die Landescheinwerfer mit einem X-Plane-Befehl ein."
„Pausiere den Simulator."
„Führe den Starterbefehl zweimal aus."
Befehle stellen diskrete Aktionen dar. Der aktuelle Server sendet CMND-Einmal-Befehle; er implementiert kein Befehl-Beginn/Befehl-Ende-Halten.
Werte setzen
„Finde ein beschreibbares DataRef für die Parkbremse, setze es auf vollständig angezogen und lies es zurück."
„Setze das Schubverhältnis des ersten Triebwerks auf 0,5."
„Finde beschreibbare DataRefs für die Helligkeit der Instrumentenbeleuchtung für diese Anfrage und zeige mir die Kandidaten, bevor du etwas änderst."
Die Beschreibungen in DataRefs.txt definieren Einheiten und gültige Bedeutungen. Wenn eine Einheit, ein Array-Element oder ein gewünschter Wert mehrdeutig ist, bitten Sie das Modell, die Kandidaten vor dem Schreiben anzuzeigen.
Das Flugzeug bewegen
„Bewege mein Flugzeug an einen zufälligen Ort in Arizona."
„Teleportiere das Benutzerflugzeug auf Breite
34.8697, Länge-111.7609, auf 5.000 Meter MSL, Kurs Ost mit 60 Metern pro Sekunde."„Zeige meine Position, bewege mich zu diesen Koordinaten und zeige die resultierende Position."
Geografische Positions-DataRefs sind schreibgeschützt. Das Plugin verwendet X-Planes natives PREL-Paket für die Verlagerung und fordert dann, wenn möglich, eine separate RPOS-Abtastung an.
Vor jeder Änderung fragen
Wenn Sie die Wahl des Modells zuerst prüfen möchten, sagen Sie dies ausdrücklich:
Finde den besten Befehl oder das beste beschreibbare DataRef zum Einfahren des Fahrwerks. Erkläre, was du gefunden hast, aber führe nichts aus und schreibe nichts, bis ich es bestätige.
Die Schreib-, Befehls- und Verlagerungswerkzeuge sind als verändernde Operationen gekennzeichnet, sodass der Client je nach seinen Sicherheitseinstellungen möglicherweise auch eine Bestätigungs- oder Genehmigungsaufforderung anzeigt.
Verfügbare Werkzeuge
Werkzeug | Zweck | Ändert X-Plane? |
| Effektive Konfiguration, Katalogstatus, Zielauswahl anzeigen und optional den Simulator prüfen. | Nein |
| Katalogpfade, Installationsstamm, Host, Port oder Discovery-Timeout speichern. | Speichert nur lokale Konfiguration |
| DataRefs und Befehle nach Pfad oder Beschreibung durchsuchen; optional nur beschreibbare DataRefs zurückgeben. | Nein |
| Bis zu 32 skalare oder indizierte Werte mit | Nein |
| Bis zu 32 numerische Aktualisierungen mit | Ja |
| Einen genauen Befehl mit | Ja |
| Position, Lage, Geschwindigkeit und Rotation mit | Nein |
| Ein Flugzeug mit | Ja |
| Einen zufälligen Punkt in einer unterstützten Region wählen und das Benutzerflugzeug verlagern. | Ja |
Das aktuelle hochrangige Zufallsregion-Werkzeug unterstützt arizona. Andere geografische Orte können weiterhin über explizite Breiten- und Längengrade mit teleport_xplane_aircraft verwendet werden.
Konfigurationsreferenz
Gespeicherte Konfiguration
Die Konversationskonfiguration wird im normalen benutzerspezifischen Konfigurationsverzeichnis des Betriebssystems gespeichert:
macOS:
~/Library/Application Support/XPlaneControl/config.jsonLinux:
$XDG_CONFIG_HOME/x-plane-control/config.jsonoder~/.config/x-plane-control/config.json, wennXDG_CONFIG_HOMEnicht gesetzt istWindows:
%APPDATA%\XPlaneControl\config.json
Beispiel:
{
"installationPath": "/Applications/X-Plane 12",
"host": "192.168.1.50",
"port": 49000,
"discoveryTimeoutMs": 1200
}Beispiel für eine explizite Katalogdatei:
{
"datarefsPath": "/Users/alice/XPlaneCatalog/DataRefs.txt",
"commandsPath": "/Users/alice/XPlaneCatalog/Commands.txt",
"host": "192.168.1.50",
"port": 49000
}Verwenden Sie entweder installationPath oder das Paar datarefsPath/commandsPath, nicht beides.
Umgebungsvariablen
Umgebungsvariablen überschreiben gespeicherte Werte:
Variable | Bedeutung |
| X-Plane-Installationsstamm mit |
| Exakter Pfad zu |
| Exakter Pfad zu |
| Hostname oder IP-Adresse des Simulators |
| Eingehender UDP-Port des Simulators, von 1 bis 65535 |
| Multicast-Discovery-Timeout, von 100 bis 30000 Millisekunden |
| Alternativer Pfad zur gespeicherten Konfigurationsdatei |
Die Katalogpriorität ist:
das explizite Paar
XPLANE_DATAREFS_PATHundXPLANE_COMMANDS_PATH;XPLANE_HOME; unddie gespeicherte Katalogkonfiguration oder automatische Installationserkennung.
XPLANE_HOST, XPLANE_PORT und XPLANE_DISCOVERY_TIMEOUT_MS überschreiben ihre gespeicherten Entsprechungen einzeln.
Umgebungsvariablen sind mit Codex CLI am einfachsten, da die CLI die Shell-Umgebung erbt:
export XPLANE_HOME="/home/alice/X-Plane 12"
export XPLANE_HOST="192.168.1.50"
export XPLANE_PORT="49000"
codexPowerShell:
$env:XPLANE_HOME = "C:\X-Plane 12"
$env:XPLANE_HOST = "192.168.1.50"
$env:XPLANE_PORT = "49000"
codexEine Desktop-App, die über Finder, das Dock oder das Startmenü gestartet wird, erbt möglicherweise keine in einem Terminal gesetzten Variablen. Verwenden Sie configure_xplane und die gespeicherte Konfiguration für die Desktop-App, es sei denn, Sie starten sie absichtlich mit einer kontrollierten Umgebung.
Gespeicherte Einstellungen löschen
Bitten Sie das Plugin, einzelne Felder zu löschen:
Lösche den gespeicherten X-Plane-Host und -Port und zeige dann das effektive Ziel ohne Prüfung.
Um von expliziten Dateien zurück zur automatischen Installationserkennung zu wechseln:
Lösche beide gespeicherten Pfade zu DataRefs.txt und Commands.txt und zeige dann den Katalogstatus.
Die beiden expliziten Katalogpfade müssen immer zusammen konfiguriert oder gelöscht werden.
Verhalten und Einschränkungen
UDP-Schreibvorgänge werden nicht bestätigt
Die nativen DREF-, CMND- und PREL-Datagramme von X-Plane geben keine Erfolgsbestätigungen zurück. Ein erfolgreiches Werkzeugergebnis bedeutet, dass das Datagramm gesendet wurde, nicht dass X-Plane die Änderung akzeptiert hat.
Wenn die Verifizierung wichtig ist, bitten Sie das Modell, das DataRef oder die Position danach zu lesen. Ein Rücklesen ist eine separate Beobachtung und kann weiterhin durch UDP-Verlust oder Simulatorverhalten beeinflusst werden.
UDP ist ungeordnet und unzuverlässig
Pakete können verloren gehen, dupliziert, verzögert oder in falscher Reihenfolge ankommen. Das Plugin verwendet Timeouts für Lesevorgänge und meldet fehlende Werte. Es bietet keine Transaktionssemantik über mehrere Schreibvorgänge hinweg.
Nur numerische Skalar-Schreibvorgänge werden unterstützt
Das aktuelle DREF-Werkzeug schreibt endliche numerische Werte. Native Arrays und Zeichenfolgen müssen Element für Element über indizierte numerische Elemente angesprochen werden, zum Beispiel:
sim/example/array_dataref[0]Ganze-Array- und Zeichenfolgen-Lese-/Schreibvorgänge sind nicht implementiert.
RREF-Werte sind float32
X-Plane gibt RREF-Abonnementwerte als 32-Bit-Gleitkommazahlen zurück, auch wenn der Katalog ein DataRef als Ganzzahl oder Double beschreibt. Kleine Präzisionsunterschiede sind zu erwarten.
Kataloge garantieren keine Laufzeitverfügbarkeit
DataRefs.txt beschreibt den Basiskatalog von X-Plane. Flugzeuge und Drittanbieter-Plugins können zur Laufzeit zusätzliche DataRefs oder Befehle erstellen. Diese benutzerdefinierten Einträge erscheinen möglicherweise nicht in den Basisdaten.
Die Werkzeuge haben einen allowUnlisted-Notausgang, aber das Modell sollte ihn nur verwenden, wenn ein genauer benutzerdefinierter Pfad aus einer vertrauenswürdigen Flugzeug-/Plugin-Quelle identifiziert wurde. Ein nicht gelisteter Name sollte niemals erraten werden.
Beschreibbar bedeutet nicht, dass jedes Flugzeug einen Wert übernimmt
Ein als beschreibbar markiertes DataRef kann dennoch vom aktiven Flugzeug, Autopiloten, Flugmodell oder einem anderen Plugin gesteuert oder überschrieben werden. Einige DataRefs sind nur für bestimmte Flugzeuge oder Simulatorzustände von Bedeutung.
Einheiten stammen aus dem Katalog
Namen allein zeigen nicht immer, ob ein Wert Grad, Bogenmaß, Knoten, Meter pro Sekunde, Fuß, Meter, ein Verhältnis oder ein Enum ist. Das Modell sollte die Katalogbeschreibung prüfen und um Klärung bitten, wenn die beabsichtigte Einheit nicht klar ist.
Mehrere X-Plane-Instanzen
Die Beacon-Erkennung gibt die erste gültige Instanz zurück, die sie hört. Konfigurieren Sie einen expliziten Host und Port, wenn mehr als ein Simulator vorhanden ist.
Fehlerbehebung
codex: command not found
Installieren oder aktualisieren Sie Codex CLI, öffnen Sie ein neues Terminal und bestätigen Sie:
codex --version
codex plugin --helpDie aktuelle CLI muss die codex plugin-Befehle bereitstellen. Siehe die offizielle OpenAI-Plugin-Dokumentation für unterstützte Installationsoberflächen.
Der Marktplatz oder das Plugin ist nicht sichtbar
Ausführen:
codex plugin marketplace list
codex plugin listStelle Folgendes sicher:
x-plane-control-localerscheint als Marktplatz;x-plane-controlerscheint in der Plugin-Liste;du das Verzeichnis hinzugefügt hast, das
.agents/plugins/marketplace.jsonenthält, nicht das innere Plugin-Verzeichnis;die ChatGPT-Desktop-App vollständig neu gestartet wurde; und
du nach der Installation einen neuen Chat gestartet hast.
Arbeitsbereich-Administratoren können lokale Plugins einschränken. Wenn der Marktplatz von der CLI erkannt wird, aber in der App nicht verfügbar ist, überprüfe die Konto- oder Arbeitsbereichsrichtlinie.
Das Plugin ist installiert, aber sein MCP-Server startet nicht
Überprüfe Node.js in einem Terminal:
node --versionFühre auf macOS oder Linux außerdem aus:
command -v nodeUnter Windows:
Get-Command nodeDie gebündelte .mcp.json startet node, daher muss es im PATH des Hosts sichtbar sein. Wenn Node nur nach dem Laden eines Shell-Profils verfügbar ist, installiere Node systemweit mit dem Standardinstallationsprogramm oder sorge dafür, dass die Desktop-Anwendung den korrekten PATH erbt, und starte die App anschließend vollständig neu.
Um den verpackten Server manuell zu überprüfen, führe dies aus dem Marktplatz-Verzeichnis aus:
node plugins/x-plane-control/dist/server.mjs --transport=stdioEin gesunder stdio-Server wartet still auf MCP-Nachrichten; drücke Ctrl+C, um ihn zu stoppen. Entwickler können den automatisierten Handshake-Test mit npm run smoke:stdio aus dem Quellverzeichnis ausführen.
Der Katalog kann nicht gefunden werden
Frage nach dem Status, ohne X-Plane abzufragen:
Zeige den X-Plane-Control-Status mit deaktivierter Abfrage an, einschließlich der aufgelösten Katalogpfade.
Überprüfe Folgendes:
ein Installationspfad zeigt auf das X-Plane-Wurzelverzeichnis, nicht auf
Resources/plugins;beide Dateien existieren unterhalb von
<root>/Resources/plugins;explizite Dateipfade benennen die Dateien selbst;
beide expliziten Pfade wurden zusammen konfiguriert;
der Plugin-Host die Berechtigung hat, beide Dateien zu lesen; und
Umgebungsvariablen die gespeicherte Konfiguration nicht überschreiben.
Wenn sich X-Plane auf einem anderen Computer befindet, kopiere beide Dateien auf den Plugin-Computer und konfiguriere diese Kopien.
Der UDP-Timeout läuft ab
Überprüfe Folgendes der Reihe nach:
X-Plane läuft und ein Flugzeug ist vollständig geladen.
X-Plane akzeptiert eingehende Netzwerkverbindungen.
Der konfigurierte UDP-Port stimmt mit den Netzwerkeinstellungen von X-Plane überein.
Der konfigurierte Host ist die aktuelle IP-Adresse des X-Plane-Computers.
Die Firewall des Betriebssystems erlaubt den Datenverkehr.
Beide Computer können sich im selben LAN oder privaten VPN erreichen.
Die Client-Isolation ist im Wi-Fi-Netzwerk deaktiviert.
Ein expliziter Host ist konfiguriert, wenn die Multicast-Erkennung die Netzwerkgrenze nicht überqueren kann.
Das Senden eines UDP-Datagramms kann selbst dann erfolgreich erscheinen, wenn kein Simulator zuhört. Verwende die Versionsabfrage oder einen DataRef-Read, um die Erreichbarkeit festzustellen.
Ein Befehl oder ein Write meldet „gesendet", aber nichts ändert sich
Mögliche Ursachen sind:
der Flug lädt noch;
UDP-Paketverlust;
der DataRef-Wert verwendet andere Einheiten oder einen Enum;
der falsche Array-Index wurde ausgewählt;
das aktive Flugzeug oder ein anderes Plugin hat den Wert sofort überschrieben;
der Befehl ist auf das aktive Flugzeug nicht anwendbar; oder
der konfigurierte Katalog stimmt nicht mit der laufenden X-Plane-Version überein.
Bitte das Modell, den Wert zurückzulesen und den von ihm ausgewählten Katalogeintrag anzuzeigen. Bei einer diskreten Cockpit-Aktion bitte es, nach einem exakten Befehl zu suchen, anstatt einen DataRef-Write zu erzwingen.
Ein Add-on-Flugzeugbefehl oder DataRef fehlt
Die Standard-Katalogdateien enthalten nicht unbedingt dynamisch registrierte Add-on-Steuerungen. Konsultiere die Flugzeug- oder Plugin-Dokumentation für den exakten Pfad. Bitte dann das Modell, diesen exakten, nicht gelisteten Namen zu verwenden, und erkläre, warum die Überschreibung angemessen ist.
Werte wirken gerundet oder leicht abweichend
RREF gibt float32-Werte zurück. Die Genauigkeit kann geringer sein als der zugrunde liegende DataRef-Typ, und X-Plane kann Werte zwischen separaten Reads aktualisieren.
Aktualisieren oder Deinstallieren
Ein heruntergeladenes lokales Bundle aktualisieren
Lade die neue Version herunter und entpacke sie.
Entferne die alte installierte Kopie:
codex plugin remove x-plane-control@x-plane-control-localWenn sich das neue Bundle in einem anderen Verzeichnis befindet, ersetze die Marktplatz-Registrierung:
codex plugin marketplace remove x-plane-control-local codex plugin marketplace add "/path/to/new/x-plane-control-marketplace"Installiere das Plugin erneut:
codex plugin add x-plane-control@x-plane-control-localStarte ChatGPT Desktop neu und beginne einen neuen Chat.
Gespeicherte X-Plane-Control-Einstellungen liegen außerhalb des Plugin-Caches, daher entfernt die Neuinstallation des Plugins normalerweise nicht die gespeicherte Simulator-/Katalogkonfiguration.
Deinstallieren
codex plugin remove x-plane-control@x-plane-control-local
codex plugin marketplace remove x-plane-control-localDie Befehle entfernen das installierte Plugin und die Marktplatz-Registrierung. Sie löschen nicht die separat gespeicherte config.json von X-Plane Control. Lösche diese Datei nur manuell, wenn du auch die gespeicherten Pfade und das Netzwerkziel löschen möchtest.
Entwicklung
Häufige Befehle
npm run check
npm test
npm run build
npm run smoke:stdio
npm run package:pluginnpm run checkprüft den TypeScript-Quellcode auf Typen.npm testführt die Paket-, Katalog-, Konfigurations- und Fake-X-Plane-Tests aus.npm run buildbündelt den Server indist/server.mjs.npm run smoke:stdiostartet den gebündelten Server und führt einen MCP-Handshake-/Tool-List-Test durch.npm run package:pluginvalidiert, verpackt und rauchtests das verteilbare Plugin.
Projektstruktur
.codex-plugin/plugin.json Plugin manifest
.mcp.json Bundled stdio MCP launch configuration
dist/server.mjs Bundled runtime
skills/x-plane-control/ Model workflow instructions
src/catalog.ts Catalog parsing and search
src/config.ts Saved and environment configuration
src/protocol.ts X-Plane packet encoding and decoding
src/server.ts MCP tools and transports
src/xplane.ts UDP discovery and client
tests/ Automated tests
scripts/package-plugin.mjs Release marketplace builder
scripts/smoke-stdio.mjs MCP stdio smoke testOptionaler diagnostischer HTTP-Transport
Das normale Plugin verwendet stdio. Ein Loopback-HTTP-Transport wird für lokale Protokolldiagnosen beibehalten:
node dist/server.mjs --transport=http --host=127.0.0.1 --port=8765Endpunkte:
MCP:
http://127.0.0.1:8765/mcpHealth-Check:
http://127.0.0.1:8765/health
Dieser Listener ist nicht authentifiziert und sollte an Loopback gebunden bleiben. Setze ihn nicht öffentlich aus.
Vertriebshinweise
Die Veröffentlichung dieses Repositorys auf GitHub ermöglicht es Benutzern, das lokale Marktplatz-Bundle herunterzuladen und zu installieren. Es listet das Plugin nicht automatisch im universellen öffentlichen Plugins-Verzeichnis von OpenAI auf.
Die GitHub-/lokale-Marktplatz-Ausgabe ist bewusst ein gebündeltes stdio-Plugin, da es auf lokale Katalogdateien und einen Simulator im Netzwerk des Benutzers zugreifen muss. Der öffentliche Plugin-Einreichungsweg von OpenAI erwartet im Allgemeinen einen Produktions-MCP-Dienst an einem stabilen HTTPS-Endpunkt mit entsprechender Authentifizierung und Überprüfung. Das wäre eine separate Architektur und ein separater Release-Kanal.
Vor der Erstellung eines GitHub-Releases:
Aktualisiere die Version und die öffentlichen Autor-/Repository-Metadaten in
.codex-plugin/plugin.jsonundpackage.json.Führe
npm ciaus.Führe
npm run package:pluginaus.Teste das generierte Verzeichnis
release/x-plane-control-marketplaceauf einem sauberen Konto oder Rechner.Archiviere dieses Verzeichnis als Release-Asset und bewahre dabei
.agents/plugins/marketplace.jsonauf.Veröffentliche den Quellcode und das Release-Archiv unter der enthaltenen MIT-Lizenz.
Datenschutz und Sicherheit
Der MCP-Server und der X-Plane-UDP-Client laufen lokal.
Von diesem Server ist kein OpenAI-API-Schlüssel erforderlich.
Es werden keine X-Plane-Anmeldeinformationen verwendet.
Die gespeicherte Konfiguration enthält Dateisystempfade und optional einen Simulator-Hostnamen/die IP und einen Port.
Der X-Plane-UDP-Datenverkehr ist unverschlüsselt und nicht authentifiziert.
Katalogdateien werden lokal gelesen und für Such- und Sicherheitsmetadaten verwendet.
Das Plugin kann den Simulatorzustand ändern. Überprüfe daher die Tool-Freigaben und verwende es nur mit einem Simulator, den du steuern darfst.
Technische Referenzen
Lizenz
MIT. Siehe LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server giving AI agents access to real-time aviation data — live flight tracking, airport weather, airline and airport information.103MIT
- AlicenseNot gradedqualityAmaintenanceSelf-hosted MCP server that lets ChatGPT work with your local codebase through explicit tools.MIT
- AlicenseAqualityBmaintenanceEnables MCP clients like Claude to read live state and control aircraft in Microsoft Flight Simulator 2024 via SimConnect, FSUIPC7, and raw memory, offering 23 tools for simvars, events, autopilot, and more.23MIT
- FlicenseNot gradedqualityBmaintenanceProvides the JSBSim flight-dynamics engine as an MCP service, enabling AI agents to control and simulate aircraft in real-time through natural language.
Related MCP Connectors
MCP server for AI dialogue using various LLM models via AceDataCloud
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/josvisser66/x-plane-control'
If you have feedback or need assistance with the MCP directory API, please join our Discord server