Skip to main content
Glama
josvisser66

X-Plane Control

by josvisser66

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 12

Das Plugin hat zwei unabhängige Eingaben:

  1. Ein KatalogDataRefs.txt und Commands.txt sagen dem Modell, welche Steuerelemente existieren, was sie bedeuten und welche beschreibbar sind.

  2. 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- und Commands.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-marketplace

Das korrekte Marktplatz-Verzeichnis enthält beide dieser Pfade:

.agents/plugins/marketplace.json
plugins/x-plane-control/.codex-plugin/plugin.json

Verzeichnisse 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 12

Das Plugin hat zwei unabhängige Eingaben:

  1. Ein KatalogDataRefs.txt und Commands.txt teilen dem Modell mit, welche Steuerungen es gibt, was sie bedeuten und welche DataRefs beschreibbar sind.

  2. 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- und Commands.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 --version
release/x-plane-control-marketplace
.agents/plugins/marketplace.json
plugins/x-plane-control/.codex-plugin/plugin.json
codex 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-local
codex plugin marketplace list
codex plugin list
git clone https://github.com/josvisser66/x-plane-control.git
cd x-plane-control
npm ci
npm run validate
npm run package:plugin
release/x-plane-control-marketplace
codex 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"
codex
sim/example/array_dataref[0]
codex --version
codex plugin --help
codex plugin marketplace list
codex plugin list
node --version
command -v node
Get-Command node
node plugins/x-plane-control/dist/server.mjs --transport=stdio
codex plugin remove x-plane-control@x-plane-control-local
codex 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-local
codex plugin remove x-plane-control@x-plane-control-local
codex plugin marketplace remove x-plane-control-local
npm 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 test
node dist/server.mjs --transport=http --host=127.0.0.1 --port=8765

GXP34

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-Port 49000 und 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.txt und Commands.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

  1. Verbinden Sie beide Computer mit demselben vertrauenswürdigen LAN oder einem privaten VPN.

  2. Ermitteln Sie die private IP-Adresse des X-Plane-Computers, z. B. 192.168.1.50.

  3. Aktivieren Sie in X-Plane eingehende Netzwerkverbindungen und notieren Sie den eingehenden UDP-Port.

  4. Erlauben Sie eingehenden UDP-Verkehr zu diesem Port durch die Firewall des X-Plane-Computers.

  5. Kopieren Sie DataRefs.txt und Commands.txt auf den ChatGPT/Codex-Computer, falls dort nicht ebenfalls X-Plane installiert ist.

  6. Konfigurieren Sie die kopierten Katalogpfade.

  7. Konfigurieren Sie die IP-Adresse und den UDP-Port des X-Plane-Computers.

  8. 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.txt und /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?

get_xplane_status

Effektive Konfiguration, Katalogstatus, Zielauswahl anzeigen und optional den Simulator prüfen.

Nein

configure_xplane

Katalogpfade, Installationsstamm, Host, Port oder Discovery-Timeout speichern.

Speichert nur lokale Konfiguration

search_xplane_catalog

DataRefs und Befehle nach Pfad oder Beschreibung durchsuchen; optional nur beschreibbare DataRefs zurückgeben.

Nein

read_xplane_datarefs

Bis zu 32 skalare oder indizierte Werte mit RREF lesen.

Nein

write_xplane_datarefs

Bis zu 32 numerische Aktualisierungen mit DREF senden.

Ja

execute_xplane_command

Einen genauen Befehl mit CMND ausführen, optional mehrfach.

Ja

get_xplane_position

Position, Lage, Geschwindigkeit und Rotation mit RPOS lesen.

Nein

teleport_xplane_aircraft

Ein Flugzeug mit PREL zu expliziten geografischen Koordinaten verlagern.

Ja

move_xplane_aircraft_random

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.json

  • Linux: $XDG_CONFIG_HOME/x-plane-control/config.json oder ~/.config/x-plane-control/config.json, wenn XDG_CONFIG_HOME nicht gesetzt ist

  • Windows: %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

XPLANE_HOME

X-Plane-Installationsstamm mit Resources/plugins

XPLANE_DATAREFS_PATH

Exakter Pfad zu DataRefs.txt; erfordert XPLANE_COMMANDS_PATH

XPLANE_COMMANDS_PATH

Exakter Pfad zu Commands.txt; erfordert XPLANE_DATAREFS_PATH

XPLANE_HOST

Hostname oder IP-Adresse des Simulators

XPLANE_PORT

Eingehender UDP-Port des Simulators, von 1 bis 65535

XPLANE_DISCOVERY_TIMEOUT_MS

Multicast-Discovery-Timeout, von 100 bis 30000 Millisekunden

XPLANE_CONTROL_CONFIG_PATH

Alternativer Pfad zur gespeicherten Konfigurationsdatei

Die Katalogpriorität ist:

  1. das explizite Paar XPLANE_DATAREFS_PATH und XPLANE_COMMANDS_PATH;

  2. XPLANE_HOME; und

  3. die 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"
codex

PowerShell:

$env:XPLANE_HOME = "C:\X-Plane 12"
$env:XPLANE_HOST = "192.168.1.50"
$env:XPLANE_PORT = "49000"
codex

Eine 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 --help

Die 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 list

Stelle Folgendes sicher:

  • x-plane-control-local erscheint als Marktplatz;

  • x-plane-control erscheint in der Plugin-Liste;

  • du das Verzeichnis hinzugefügt hast, das .agents/plugins/marketplace.json enthä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 --version

Führe auf macOS oder Linux außerdem aus:

command -v node

Unter Windows:

Get-Command node

Die 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=stdio

Ein 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:

  1. X-Plane läuft und ein Flugzeug ist vollständig geladen.

  2. X-Plane akzeptiert eingehende Netzwerkverbindungen.

  3. Der konfigurierte UDP-Port stimmt mit den Netzwerkeinstellungen von X-Plane überein.

  4. Der konfigurierte Host ist die aktuelle IP-Adresse des X-Plane-Computers.

  5. Die Firewall des Betriebssystems erlaubt den Datenverkehr.

  6. Beide Computer können sich im selben LAN oder privaten VPN erreichen.

  7. Die Client-Isolation ist im Wi-Fi-Netzwerk deaktiviert.

  8. 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

  1. Lade die neue Version herunter und entpacke sie.

  2. Entferne die alte installierte Kopie:

    codex plugin remove x-plane-control@x-plane-control-local
  3. Wenn 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"
  4. Installiere das Plugin erneut:

    codex plugin add x-plane-control@x-plane-control-local
  5. Starte 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-local

Die 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:plugin
  • npm run check prüft den TypeScript-Quellcode auf Typen.

  • npm test führt die Paket-, Katalog-, Konfigurations- und Fake-X-Plane-Tests aus.

  • npm run build bündelt den Server in dist/server.mjs.

  • npm run smoke:stdio startet den gebündelten Server und führt einen MCP-Handshake-/Tool-List-Test durch.

  • npm run package:plugin validiert, 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 test

Optionaler 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=8765

Endpunkte:

  • MCP: http://127.0.0.1:8765/mcp

  • Health-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:

  1. Aktualisiere die Version und die öffentlichen Autor-/Repository-Metadaten in .codex-plugin/plugin.json und package.json.

  2. Führe npm ci aus.

  3. Führe npm run package:plugin aus.

  4. Teste das generierte Verzeichnis release/x-plane-control-marketplace auf einem sauberen Konto oder Rechner.

  5. Archiviere dieses Verzeichnis als Release-Asset und bewahre dabei .agents/plugins/marketplace.json auf.

  6. 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.

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

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

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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