Skip to main content
Glama
X-Plane Control

X-Plane Control

by josvisser66

X-Plane Control

自然言語リクエストを使用して、ChatGPTまたはCodexからX-Planeフライトシミュレータを制御・検査します。

X-Plane Controlは、バンドルされたローカルのModel Context Protocol (MCP)サーバーを含むクロスプラットフォームのプラグインです。MCPサーバーにより、モデルはX-Plane独自のDataRefs.txtおよびCommands.txtカタログを検索し、ライブのシミュレータデータを読み取り、書き込み可能な値を変更し、シミュレータコマンドを実行し、X-PlaneのネイティブUDPプロトコルを通じて航空機を移動させることができます。

リクエストの例:

  • 「飛行機をアリゾナのランダムな場所に移動して。」

  • 「現在位置、対気速度、高度、針路を表示して。」

  • 「降着装置を下げる正しいコマンドを見つけて、実行して。」

  • 「パーキングブレーキを設定して、その状態を確認して。」

  • 「計器灯に関連する書き込み可能なDataRefを見つけて。」

モデルは、すべてのX-Planeコントロールのハードコードされたリストを必要としません。お使いのX-Planeバージョンに属するカタログを検索し、適切なコマンドまたは書き込み可能なDataRefを選択し、対応するMCPツールを呼び出します。

[!WARNING] このプロジェクトはフライトシミュレータ専用です。実航空機の運航、ナビゲーション、または訓練の判断を目的としたものではありません。コマンドと書き込みは、シミュレートされた航空機を即座に変更できます。X-Planeの認証されていないUDPインターフェースは、信頼できるコンピュータまたはプライベートネットワーク上に置いてください。

目次

Related MCP server: ChatGPT Codex Bridge

仕組み

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

このプラグインには2つの独立した入力があります:

  1. カタログ — DataRefs.txtとCommands.txtは、どのようなコントロールが存在し、それらが何を意味し、どのDataRefが書き込み可能かをモデルに伝えます。

  2. ネットワークターゲット — IPアドレスとUDPポートが、実行中のX-Planeシミュレータを識別します。

カタログとシミュレータは同じコンピュータ上にある必要はありません。たとえば、ChatGPTはコピーしたカタログファイルを使用してラップトップ上でプラグインを実行し、X-Planeは同じLAN上の別のゲーミングPCで実行できます。

サーバーはローカルのNode.jsプロセスとして実行されます。X-Planeのバイナリプラグインをインストールしたり、シミュレータを変更したり、PythonやPyYAMLを必要としたり、ホスト型サービスを介してシミュレータのトラフィックを送信したりすることはありません。

機能

  • Node.js 20以降を搭載したmacOS、Linux、Windowsで動作します。

  • 完全なMCPランタイムを単一のdist/server.mjsファイルにバンドルします。

  • ユーザー自身のX-Plane DataRefおよびコマンドカタログを検索します。

  • X-Planeのインストールルート、または明示的に選択された2つのカタログファイルを使用します。

  • いくつかの一般的なX-Plane 11および12のインストール場所を自動検出します。

  • 可能な場合はマルチキャストビーコンからX-Planeを自動検出します。

  • リモートコンピュータ、VPN、マルチキャストが利用できないネットワーク向けの明示的なホストとポートをサポートします。

  • RREFでスカラー値を読み取ります。

  • DREFで数値スカラー値を書き込みます。

  • CMNDで正確なコマンドを実行します。

  • RPOSで地理的位置、姿勢、速度、回転を読み取ります。

  • 読み取り専用の地理的DataRefへの書き込みを試みるのではなく、PRELを通じて航空機を移動させます。

  • アリゾナ州内のランダムな内陸地点を選択する高水準ツールが含まれています。

  • 読み取り専用としてマークされたカタログDataRefを拒否します。

  • デフォルトで不明なDataRefとコマンドを拒否します。

  • 終了、リセット、リプレイ、障害、火災、クラッシュに関連するコマンド名には明示的なオーバーライドが必要です。

要件

すべてのユーザー向け

  • X-Plane 11またはX-Plane 12。

  • ChatGPTまたはCodexを実行しているコンピュータ上のNode.js 20以降。

  • サポートされているローカルプラグインホスト:

    • プラグインサポート付きのChatGPTデスクトップ、または

    • Codex CLI。

  • 制御するX-PlaneバージョンのDataRefs.txtおよびCommands.txtファイル。

インストールする前にNode.jsを確認してください:

node --version

結果はv20、v21、v22、またはそれ以降のバージョンで始まる必要があります。パッケージ化されたリリースには、npm、TypeScript、Python、または個別の依存関係のインストールは必要ありません。

node実行可能ファイルは、PATHを通じてプラグインホストが利用できる必要があります。標準のNode.jsインストーラが一般的にmacOSとWindowsで最も簡単な選択肢です。Nodeがnvmなどのシェル固有のバージョンマネージャを介してのみインストールされている場合は、プラグインはインストールされていますが、MCPサーバーが起動しませんを参照してください。

ソースからビルドする場合の追加要件

  • Node.jsに同梱されているnpm。

  • リポジトリをZIPアーカイブとしてダウンロードするのではなくクローンする場合は、Git。

サポートされているChatGPTおよびCodexサーフェス

このリポジトリは、バンドルされたstdio MCPサーバーを備えたローカルマーケットプレイスプラグインを配布します。

  • ChatGPTデスクトップ: ローカルプラグインが利用可能な場所でサポートされています。

  • Codex CLI: サポートされています。マーケットプレイスを追加した後、/pluginsと入力してプラグインブラウザを使用します。

  • Codex IDE拡張機能: IDE拡張機能が現在プラグインをサポートしていないため、サポートされていません。

  • ChatGPTウェブおよびモバイル: このコンピュータのバンドルされたstdioサーバーを直接起動することはできません。これらのサーフェスには、別途ホストされ公開されたエディションが必要になります。

このローカルマーケットプレイスのインストールでは、通常、ChatGPTデベロッパーモードやパブリックなHTTPSエンドポイントは必要ありません。デベロッパーモードは、リモートMCPサーバー接続を登録およびテストするときに使用されます。代わりに、このパッケージは.mcp.jsonから独自のMCPサーバーをローカルで起動します。アカウントまたはワークスペースのポリシーによって、プラグインの利用可能性が制限される場合があります。

現在のプラグインの利用可能性とインストールおよびプラグインパッケージングについては、公式のOpenAIドキュメントを参照してください。

ビルド済みリリースをインストールする

これは、ほとんどのユーザーに推奨されるインストール方法です。

1. バンドルをダウンロードして解凍する

このリポジトリのReleasesページから最新のリリースアーカイブをダウンロードして解凍します。解凍したx-plane-control-marketplaceディレクトリを開きます。

リリースアーカイブではなくリポジトリ全体をダウンロードした場合、ビルド済みマーケットプレイスは次の場所にあります:

release/x-plane-control-marketplace

正しいマーケットプレイスディレクトリには、次の両方のパスが含まれています:

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

.agentsなどのドット接頭辞の付いたディレクトリは、Finderやファイルエクスプローラでは非表示になっている場合があります。ターミナルコマンドが機能するために、それらを表示する必要はありません。

2. ダウンロードしたマーケットプレイスを追加する

macOSまたはLinuxではターミナルを、WindowsではPowerShellを開きます。解凍したマーケットプレイスディレクトリに移動して、次を実行します:

codex plugin marketplace add .

ディレクトリを変更せずに、コマンドに絶対パスを指定することもできます:

codex plugin marketplace add "/absolute/path/to/x-plane-control-marketplace"

PowerShellの例:

codex plugin marketplace add "C:\Users\YourName\Downloads\x-plane-control-marketplace"

3. プラグインをインストールする

codex plugin add x-plane-control@x-plane-control-local

Codexがマーケットプレイスとプラグインを認識できることを確認します:

codex plugin marketplace list
codex plugin list

4. ホストを再起動する

ChatGPTデスクトップアプリを完全に終了して再度開き、プラグインディレクトリを開いてX Plane Controlがインストールされ有効になっていることを確認します。新しいスキルとMCPツールが読み込まれるように、新しいチャットを開始します。

Codex CLIでは、インストール後に新しいセッションを開始します。/pluginsと入力して、インストールされているプラグインを確認することもできます。

ソースからインストールする

この方法は、プラグインを開発したり、ソースを検査したり、自分でリリースをビルドしたりする場合に使用します。

1. リポジトリをダウンロードする

GitHubのCode → Download ZIPアクションを使用してアーカイブを抽出するか、リポジトリをクローンします:

git clone https://github.com/josvisser66/x-plane-control.git
cd x-plane-control

リポジトリにx-plane-controlがサブディレクトリとして含まれている場合は、続行する前にそのディレクトリに移動します。package.jsonを含むディレクトリです。

2. 依存関係をインストールしてプロジェクトを検証する

npm ci
npm run validate

検証により、TypeScriptチェックの実行、自動テストの実行、dist/server.mjsの作成が行われます。

3. 配布可能なマーケットプレイスを作成する

npm run package:plugin

これにより、次が作成されます:

release/x-plane-control-marketplace

ランタイムプラグイン、そのマーケットプレイスメタデータ、ライセンス、スキル、ドキュメントのみがこのディレクトリにコピーされます。ソースファイル、テスト、開発依存関係は、インストールされたプラグインには必要ありません。

4. ローカルマーケットプレイスを追加してインストールする

codex plugin marketplace add "./release/x-plane-control-marketplace"
codex plugin add x-plane-control@x-plane-control-local

ChatGPTデスクトップを再起動するか、新しいCodex CLIセッションを開始します。

X-Planeを準備する

1. カタログを見つける

通常のX-Planeインストールでは、ファイルは次の場所にあります:

<X-Plane installation>/Resources/plugins/DataRefs.txt
<X-Plane installation>/Resources/plugins/Commands.txt

ディレクトリ名はResources/pluginsで、現在のX-Planeインストールではpluginsは小文字です。プラグインは、互換性のためにいくつかの大文字小文字のバリエーションもチェックします。

インストールパスとしてResources/pluginsを設定しないでください。Resourcesを含むX-Planeインストールルートを設定します。例:

  • macOS: /Applications/X-Plane 12または/Users/alice/X-Plane 12

  • Windows: C:\X-Plane 12

  • Windows Steam: C:\Program Files (x86)\Steam\steamapps\common\X-Plane 12

  • Linux: /home/alice/X-Plane 12

  • Linux Steam: /home/alice/.steam/steam/steamapps/common/X-Plane 12

DataRefs.txtとCommands.txtは、意図的にこのリポジトリには含まれていません。シミュレータに付属のファイルを読み込むことで、ユーザーのインストール済みX-Planeバージョンに合わせた検出が可能になります。ローカルにX-Planeのインストールがない場合は、両方のファイルを任意の読み取り可能なディレクトリにコピーし、それらの正確なパスを個別に設定します。

2. UDPネットワーキングを有効にする

X-PlaneのSettings → Network画面を開きます。X-Planeが着信ネットワーク/UDP接続を受け入れることを確認し、インバウンドUDPポートをメモします。標準のX-Planeポートは一般的に49000ですが、シミュレータに表示される値を使用してください。

プロンプトが表示されたら、オペレーティングシステムのファイアウォールでX-Planeを許可します。X-Planeが別のコンピュータにある場合は、そのファイアウォールが、プラグインを実行しているコンピュータからの設定済みX-PlaneポートでのインバウンドUDPトラフィックを許可している必要があります。

3. フライトを読み込む

MCPサーバーはX-Planeより先に起動でき、X-Planeは起動中にネットワーキングを初期化します。信頼性の高いDataRef値、コマンド、再配置を行うには、航空機とシーナリーがフライトに読み込まれるまで待ちます。

スプラッシュ画面、メインメニュー、またはフライトの読み込み中:

  • ステータスプローブが応答を受信しない場合があります。

  • 一部のDataRefが利用できないか、プレースホルダー値が含まれている場合があります。

  • コマンドが無視される場合があります。

  • 位置またはDataRefへの書き込みが、読み込みプロセスによって上書きされる場合があります。

プラグインを設定する

設定は、会話形式で保存する方法が最も簡単で、環境変数で指定することもできます。

オプションA: X-Planeのインストールルートを設定する

プラグインをインストールした状態で新しいチャットを開始し、次のように言います:

X Plane Controlを使用して。X-Planeのインストールディレクトリを/Applications/X-Plane 12に設定して、シミュレータを変更せずにステータスを表示して。

Windowsの例:

X Plane Controlを使用して。X-PlaneのインストールディレクトリをC:\X-Plane 12に設定して、カタログを確認して。

プラグインは、ルートの下のResources/plugins/DataRefs.txtとCommands.txtを探します。パスを保存する前に、両方のファイルを検証します。

オプションB: 2つのカタログファイルを設定する

X-Planeが別のコンピュータにインストールされている場合、またはカタログファイルが別の場所に保存されている場合は、このモードを使用します:

X Plane Controlを使用して。DataRefs.txtを/Users/alice/XPlaneCatalog/DataRefs.txtとして、Commands.txtを/Users/alice/XPlaneCatalog/Commands.txtとして設定して、ステータスを表示して。

両方のパスを一緒に指定する必要があります。ファイルは別々のディレクトリにあってもかまいません。明示的なカタログパスを設定すると、以前に保存されたインストールルートが置き換えられます。インストールルートを設定すると、以前に保存された明示的なパスが置き換えられます。

UDPターゲットを設定する

同じコンピュータ上のX-Planeの場合、通常は自動検出で十分です。検出が利用できない場合、プラグインは127.0.0.1:49000にフォールバックします。

明示的なターゲットを設定するには:

ホスト 192.168.1.50 のUDPポート 49000 でX-Planeを設定し、プローブします。

ホストはIPv4アドレスか、プラグインを実行するコンピュータから解決可能なホスト名のいずれかです。X-Planeが別のコンピュータで動作している場合は、明示的なホストを指定することを推奨します。

設定を検証する

次のように依頼します。

X Plane Controlを使用して、完全なステータスを表示し、シミュレータをプローブしてください。

ステータスには以下が含まれます。

  • 保存された設定ファイルの場所。

  • 有効なカタログとネットワーク設定。

  • 解決された DataRefs.txt と Commands.txt のパス。

  • 解析されたDataRefとコマンドの数。

  • ターゲットが設定されたものか、ビーコンから検出されたものか、localhostのデフォルトから取得されたものか。

  • X-PlaneのバージョンDataRefの読み取り結果。

別のコンピュータでX-Planeを使用する

同梱のMCPサーバーは常にChatGPT/Codexコンピュータ上で実行されます。X-Planeはそのコンピュータ上、またはUDP経由で到達可能な別のコンピュータ上で実行できます。

推奨されるリモートコンピュータのセットアップ

  1. 両方のコンピュータを同じ信頼できるLANまたはプライベートVPNに接続します。

  2. X-PlaneコンピュータのプライベートIPアドレスを確認します(例:192.168.1.50)。

  3. X-Planeで、受信ネットワーク接続を有効にし、受信UDPポートをメモします。

  4. X-Planeコンピュータのファイアウォールで、そのポートへの受信UDPトラフィックを許可します。

  5. ChatGPT/CodexコンピュータにX-Planeがインストールされていない場合は、DataRefs.txt と Commands.txt をそのコンピュータにコピーします。

  6. コピーしたカタログパスを設定します。

  7. X-PlaneコンピュータのIPアドレスとUDPポートを設定します。

  8. フライトを読み込み、ステータスプローブを実行します。

会話の例:

X Plane Controlを使用してください。シミュレータは 192.168.1.50:49000 にあります。ローカルカタログは /Users/alice/XPlaneCatalog/DataRefs.txt と /Users/alice/XPlaneCatalog/Commands.txt です。その設定を保存してX-Planeをプローブしてください。

マルチキャスト検出は通常、同じローカルネットワークセグメントでのみ機能し、Wi-Fi分離、ルーター、コンテナ、またはVPNソフトウェアによってブロックされる場合があります。そのような場合は、ホストを明示的に設定してください。

X-PlaneのUDPポートをインターネットルーターから直接転送しないでください。ネイティブプロトコルは暗号化も認証もされていません。異なる場所にあるコンピュータの場合は、マシンがプライベートIPで到達可能になるプライベートVPNを使用し、ファイアウォールアクセスをプラグインコンピュータに制限してください。

プラグインの使用を開始する

インストールまたはアップデート後は、常に新しいチャットまたはCodexセッションを開始してください。プラグインを使用する直接的な指示により、初回実行時のテストが容易になります。

X Plane Controlを使用して、シミュレータとカタログの準備ができているか確認してください。まだ何も変更しないでください。

ステータスが正常になったら、通常の自然言語リクエストを使用できます。

シミュレータの状態を読み取る

  • 「私の地理的位置と姿勢を表示してください。」

  • 「指示対気速度、真対気速度、針路、気圧高度を読み取ってください。」

  • 「燃料量のDataRefを見つけて、現在の値を表示してください。」

  • 「パーキングブレーキが設定されているか確認してください。」

正確なDataRefを指定しないリクエストの場合、モデルはまずカタログを検索し、説明とタイプを使用して候補を選択する必要があります。

シミュレータコマンドを実行する

  • 「降着装置をトグルするコマンドを見つけて実行してください。」

  • 「X-Planeコマンドを使用して着陸灯をオンにしてください。」

  • 「シミュレータを一時停止してください。」

  • 「スターターコマンドを2回実行してください。」

コマンドは個別のアクションを表します。現在のサーバーは CMND コマンドワンショットパケットを送信します。コマンド開始/コマンド終了の保持は実装されていません。

値を設定する

  • 「パーキングブレーキの書き込み可能なDataRefを見つけて、完全に作動するように設定し、読み戻してください。」

  • 「最初のエンジンのスロットル比を0.5に設定してください。」

  • 「このリクエストの書き込み可能な計器灯の明るさDataRefを見つけて、何も変更する前に候補を表示してください。」

DataRefs.txt の説明は、単位と有効な意味を定義しています。単位、配列要素、または目的の値が曖昧な場合は、書き込む前にモデルに候補を表示するよう依頼してください。

航空機を移動する

  • 「私の飛行機をアリゾナのランダムな場所に移動してください。」

  • 「ユーザー航空機を緯度 34.8697、経度 -111.7609、MSL 5,000メートル、東向き、毎秒60メートルにテレポートしてください。」

  • 「私の位置を表示し、これらの座標に移動して、結果の位置を表示してください。」

地理的位置のDataRefは読み取り専用です。プラグインは、再配置にX-Planeのネイティブ PREL パケットを使用し、可能な場合は別途 RPOS サンプルを要求します。

何かを変更する前に確認を求める

まずモデルの選択を確認したい場合は、明示的に次のように言います。

降着装置を下げるための最適なコマンドまたは書き込み可能なDataRefを見つけてください。見つけたものを説明してください。ただし、私が確認するまで何も実行または書き込みしないでください。

書き込み、コマンド、再配置ツールは変更操作としてマークされているため、クライアントはセキュリティ設定に応じて確認または承認プロンプトを表示する場合もあります。

利用可能なツール

ツール

目的

X-Planeを変更しますか?

get_xplane_status

有効な設定、カタログステータス、ターゲット選択を表示し、オプションでシミュレータをプローブします。

いいえ

configure_xplane

カタログパス、インストールルート、ホスト、ポート、または検出タイムアウトを保存します。

ローカル設定のみ保存します

search_xplane_catalog

パスまたは説明でDataRefとコマンドを検索します。オプションで書き込み可能なDataRefのみを返します。

いいえ

read_xplane_datarefs

RREF を使用して最大32個のスカラーまたはインデックス付きの値を読み取ります。

いいえ

write_xplane_datarefs

DREF を使用して最大32個の数値更新を送信します。

はい

execute_xplane_command

CMND で正確なコマンドを実行します。オプションで複数回実行します。

はい

get_xplane_position

RPOS で位置、姿勢、速度、回転を読み取ります。

いいえ

teleport_xplane_aircraft

PREL で航空機を明示的な地理座標に再配置します。

はい

move_xplane_aircraft_random

サポートされている地域のランダムなポイントを選択し、ユーザー航空機を再配置します。

はい

現在の高レベルランダム地域ツールは arizona をサポートしています。他の地理的位置は、teleport_xplane_aircraft で明示的な緯度と経度を使用して引き続き使用できます。

設定リファレンス

保存された設定

会話設定は、オペレーティングシステムの通常のユーザーごとの設定ディレクトリに保存されます。

  • macOS: ~/Library/Application Support/XPlaneControl/config.json

  • Linux: $XDG_CONFIG_HOME/x-plane-control/config.json、または XDG_CONFIG_HOME が設定されていない場合は ~/.config/x-plane-control/config.json

  • Windows: %APPDATA%\XPlaneControl\config.json

例:

{
  "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
}

installationPath または datarefsPath/commandsPath のペアのいずれかを使用してください。両方は使用しないでください。

環境変数

環境変数は保存された値を上書きします。

変数

意味

XPLANE_HOME

Resources/plugins を含むX-Planeインストールルート

XPLANE_DATAREFS_PATH

DataRefs.txt の正確なパス。XPLANE_COMMANDS_PATH が必要です

XPLANE_COMMANDS_PATH

Commands.txt の正確なパス。XPLANE_DATAREFS_PATH が必要です

XPLANE_HOST

シミュレータのホスト名またはIPアドレス

XPLANE_PORT

シミュレータの受信UDPポート(1〜65535)

XPLANE_DISCOVERY_TIMEOUT_MS

マルチキャスト検出タイムアウト(100〜30000ミリ秒)

XPLANE_CONTROL_CONFIG_PATH

代替の保存設定ファイルパス

カタログの優先順位は次のとおりです。

  1. 明示的な XPLANE_DATAREFS_PATH と XPLANE_COMMANDS_PATH のペア。

  2. XPLANE_HOME。

  3. 保存されたカタログ設定または自動インストール検出。

XPLANE_HOST、XPLANE_PORT、XPLANE_DISCOVERY_TIMEOUT_MS は、それぞれ保存された同等の値を個別に上書きします。

環境変数は、CLIがシェル環境を継承するため、Codex CLIで最も簡単に使用できます。

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

Finder、Dock、またはスタートメニューから起動したデスクトップアプリは、ターミナルで設定された変数を継承しない場合があります。デスクトップアプリには、意図的に制御された環境で起動しない限り、configure_xplane と保存された設定を使用してください。

保存された設定をクリアする

プラグインに個々のフィールドをクリアするよう依頼します。

保存されたX-Planeのホストとポートをクリアして、プローブせずに有効なターゲットを表示してください。

明示的なファイルから自動インストール検出に戻すには:

保存されたDataRefs.txtとCommands.txtの両方のパスをクリアして、カタログステータスを表示してください。

2つの明示的なカタログパスは、常に一緒に設定またはクリアする必要があります。

動作と制限事項

UDP書き込みは確認応答されません

X-Planeのネイティブ DREF、CMND、PREL データグラムは、成功の確認応答を返しません。ツールの結果が成功したということは、データグラムが送信されたことを意味し、X-Planeが変更を受け入れたことを意味するものではありません。

検証が重要な場合は、モデルに後でDataRefまたは位置を読み取るよう依頼してください。読み戻しは別の観測であり、UDP損失やシミュレータの動作の影響を受ける可能性があります。

UDPは順序なしで信頼性がありません

パケットは失われたり、重複したり、遅延したり、順序が入れ替わって到着したりする可能性があります。プラグインは読み取りにタイムアウトを使用し、欠落した値を報告します。複数の書き込みにわたるトランザクションセマンティクスは提供しません。

数値スカラー書き込みのみがサポートされています

現在の DREF ツールは有限の数値を書き込みます。ネイティブ配列と文字列は、一度に1つのインデックス付き数値要素として扱う必要があります。例:

sim/example/array_dataref[0]

配列全体および文字列の読み取り/書き込みは実装されていません。

RREF 値はfloat32です

X-Planeは、カタログがDataRefを整数またはdoubleとして説明している場合でも、RREF サブスクリプション値を32ビット浮動小数点数として返します。小さな精度の違いは予想されます。

カタログは実行時の可用性を保証しません

DataRefs.txt はX-Planeの基本カタログを説明しています。航空機とサードパーティのプラグインは、実行時に追加のDataRefまたはコマンドを作成できます。これらのカスタムエントリは基本ファイルに表示されない場合があります。

ツールには allowUnlisted エスケープハッチがありますが、モデルは信頼できる航空機/プラグインソースから正確なカスタムパスが特定された場合にのみ使用する必要があります。リストにない名前を推測してはなりません。

書き込み可能とは、すべての航空機が値を尊重することを意味しません

書き込み可能とマークされたDataRefでも、アクティブな航空機、オートパイロット、フライトモデル、または別のプラグインによって制御または上書きされる可能性があります。一部のDataRefは、特定の航空機またはシミュレータの状態でのみ意味を持ちます。

単位はカタログから取得されます

名前だけでは、値が度、ラジアン、ノット、メートル毎秒、フィート、メートル、比率、または列挙型のいずれであるかが常に明らかになるとは限りません。モデルはカタログの説明を調べ、意図した単位が明確でない場合は明確化を求める必要があります。

複数のX-Planeインスタンス

ビーコン検出は、最初に聞こえた有効なインスタンスを返します。複数のシミュレータが存在する場合は、明示的なホストとポートを設定してください。

トラブルシューティング

codex: command not found

Codex CLIをインストールまたは更新し、新しいターミナルを開いて確認します。

codex --version
codex plugin --help

現在のCLIはcodex pluginコマンドを提供しなければなりません。対応するインストール方法については、公式のOpenAIプラグイン文書を参照してください。

マーケットプレイスまたはプラグインが表示されない場合

以下を実行してください:

codex plugin marketplace list
codex plugin list

以下を確認してください:

  • x-plane-controlがマーケットプレイスとして表示されること;

  • x-plane-controlがプラグイン一覧に表示されること;

  • .agents/plugins/marketplace.jsonを含むディレクトリを追加したこと(内側のプラグインディレクトリではないこと);

  • ChatGPTデスクトップアプリを完全に再起動したこと; そして

  • インストール後に新しいチャットを開始したこと。

ワークスペース管理者はローカルプラグインを制限できます。マーケットプレイスがCLIでは認識されるがアプリでは利用できない場合、アカウントまたはワークスペースのポリシーを確認してください。

プラグインはインストールされているが、MCPサーバーが起動しない場合

ターミナルでNode.jsを確認してください:

node --version

macOSまたはLinuxでは、以下も実行してください:

command -v node

Windowsでは:

Get-Command node

同梱の.mcp.jsonはnodeを起動するため、nodeがホストのPATH上に存在している必要があります。Nodeがシェルプロファイルの読み込み後にのみ利用可能な場合は、Nodeをシステム全体に標準インストーラーでインストールするか、デスクトップアプリケーションが正しいPATHを継承するように設定し、その後アプリを完全に再起動してください。

パッケージ化されたサーバーを手動で確認するには、マーケットプレイスディレクトリから以下を実行してください:

node plugins/x-plane-control/dist/server.mjs --transport=stdio

正常なstdioサーバーはMCPメッセージを待機します。停止するにはCtrl+Cを押してください。開発者はソースディレクトリからnpm run smoke:stdioで自動化されたハンドシェイクテストを実行できます。

カタログが見つからない場合

プロービングを無効にしてステータスを問い合わせてください:

X-Plane Controlのステータスを、プロービング無効で、解決されたカタログパスを含めて表示してください。

以下を確認してください:

  • インストールパスがX-Planeのルートディレクトリを指していること(Resources/pluginsではないこと);

  • 両方のファイルが<root>/Resources/pluginsの下に存在すること;

  • 明示的なファイルパスがファイル自体を指していること;

  • 両方の明示的なパスが一緒に設定されていること;

  • プラグインホストが両方のファイルを読み取る権限を持っていること; そして

  • 環境変数が保存済み設定を上書きしていないこと。

X-Planeが別のコンピューター上にある場合は、両方のファイルをプラグインのコンピューターにコピーし、それらのコピーを設定してください。

UDPプローブがタイムアウトする場合

以下の順序で確認してください:

  1. X-Planeが実行中で、航空機の読み込みが完了していること。

  2. X-Planeが着信ネットワーク接続を受け入れていること。

  3. 設定されたUDPポートがX-Planeのネットワーク設定と一致していること。

  4. 設定されたホストがX-Planeコンピューターの現在のIPアドレスであること。

  5. オペレーティングシステムのファイアウォールがトラフィックを許可していること。

  6. 両方のコンピューターが同じLANまたはプライベートVPN上で相互に到達可能であること。

  7. Wi-Fiネットワークでクライアント分離が無効になっていること。

  8. マルチキャスト検出がネットワーク境界を越えられない場合は、明示的なホストが設定されていること。

UDPデータグラムの送信は、シミュレーターがリッスンしていなくても成功したように見えることがあります。バージョンプローブまたはDataRef読み取りを使用して到達可能性を確認してください。

コマンドまたは書き込みが「送信済み」と表示されるが、何も変化しない場合

考えられる原因は次のとおりです:

  • フライトがまだ読み込み中である;

  • UDPパケットロスが発生している;

  • DataRefの値が異なる単位または列挙型を使用している;

  • 間違った配列インデックスが選択された;

  • アクティブな航空機または別のプラグインが値をすぐに上書きした;

  • コマンドがアクティブな航空機に適用されない; または

  • 設定されたカタログが実行中のX-Planeのバージョンと一致しない。

モデルに値を読み戻させ、選択したカタログエントリを表示させてください。個別のコックピット操作の場合は、DataRefの書き込みを強制するのではなく、正確なコマンドを検索するように依頼してください。

アドオン航空機のコマンドまたはDataRefが見つからない場合

標準カタログには、動的に登録されたアドオンコントロールが必ずしも含まれているとは限りません。航空機またはプラグインの文書を参照して正確なパスを確認してください。その後、モデルにその正確な非掲載名を使用させ、なぜそのオーバーライドが適切かを説明させてください。

値が少し異なって見える、または丸められている場合

RREFはfloat32値を返します。基になるDataRefの型よりも精度が低くなることがあります。また、X-Planeは個別の読み取りの間に値を更新することがあります。

更新またはアンインストール

ダウンロードしたローカルバンドルを更新する場合

  1. 新しいリリースをダウンロードして解凍します。

  2. 古いインストール済みコピーを削除します:

    codex plugin remove x-plane-control@x-plane-control-local
  3. 新しいバンドルが別のディレクトリにある場合は、マーケットプレイスの登録を置き換えます:

    codex plugin marketplace remove x-plane-control-local
    codex plugin marketplace add "/path/to/new/x-plane-control-marketplace"
  4. プラグインを再度インストールします:

    codex plugin add x-plane-control@x-plane-control-local
  5. ChatGPTデスクトップを再起動し、新しいチャットを開始します。

保存されたX-Plane Control設定はプラグインキャッシュの外に存在するため、プラグインを再インストールしても通常は保存済みのシミュレーター/カタログ設定は削除されません。

アンインストール

codex plugin remove x-plane-control@x-plane-control-local
codex plugin marketplace remove x-plane-control-local

上記のコマンドは、インストールされたプラグインとマーケットプレイスの登録を削除します。別途保存されたX-Plane Controlのconfig.jsonは削除されません。保存されたパスとネットワークターゲットも消去する場合にのみ、そのファイルを手動で削除してください。

開発

一般的なコマンド

npm run check
npm test
npm run build
npm run smoke:stdio
npm run package:plugin
  • npm run checkはTypeScriptソースの型チェックを行います。

  • npm testはパケット、カタログ、設定、およびフェイクX-Planeのテストを実行します。

  • npm run buildはサーバーをdist/server.mjsにバンドルします。

  • npm run smoke:stdioはバンドルされたサーバーを起動し、MCPハンドシェイク/ツール一覧テストを実行します。

  • 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

オプションの診断用HTTPトランスポート

通常のプラグインはstdioを使用します。ローカルのプロトコル診断のために、ループバックHTTPトランスポートが保持されています:

node dist/server.mjs --transport=http --host=127.0.0.1 --port=8765

エンドポイント:

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

  • ヘルスチェック: http://127.0.0.1:8765/health

このリスナーは認証されておらず、ループバックにバインドされたままにしてください。公開してはなりません。

配布に関する注意

このリポジトリをGitHubで公開すると、ユーザーはローカルマーケットプレイスのバンドルをダウンロードしてインストールできます。プラグインがOpenAIの公開プラグインディレクトリに自動的にリストされるわけではありません。

GitHub/ローカルマーケットプレイス版は、ローカルのカタログファイルとシミュレーターのネットワークにアクセスする必要があるため、意図的にバンドルされたstdioプラグインとなっています。OpenAIの公開プラグイン提出パスは通常、安定したHTTPSエンドポイントを持つ本番MCPサービスを想定しており、適切な認証とレビューが必要です。それは別のアーキテクチャとリリースチャネルになります。

GitHubリリースを作成する前に:

  1. .codex-plugin/plugin.jsonとpackage.jsonのバージョンと公開著者/リポジトリメタデータを更新します。

  2. npm ciを実行します。

  3. npm run package:pluginを実行します。

  4. 生成されたrelease/x-plane-control-marketplaceディレクトリをクリーンなアカウントまたはマシンでテストします。

  5. そのディレクトリをリリースアセットとしてアーカイブし、.agents/plugins/marketplace.jsonを保持します。

  6. ソースとリリースアーカイブを同梱のMITライセンスの下で公開します。

プライバシーとセキュリティ

  • MCPサーバーとX-Plane UDPクライアントはローカルで実行されます。

  • このサーバーにはOpenAI APIキーは必要ありません。

  • X-Planeの認証情報は使用されません。

  • 保存された設定には、ファイルシステムのパスと、オプションでシミュレーターのホスト名/IPおよびポートが含まれます。

  • X-Plane UDPトラフィックは暗号化されておらず、認証もありません。

  • カタログファイルはローカルで読み取られ、検索と安全メタデータに使用されます。

  • プラグインはシミュレーターの状態を変更できるため、ツールの承認を確認し、承認されたシミュレーターでのみ使用してください。

技術リファレンス

ライセンス

MIT。 LICENSEを参照してください。

Related MCP Connectors

Related MCP Servers