Edgegap

公式

コーディングエージェントからマルチプレイヤーゲームサーバーをデプロイ。Unity、Unreal、またはGodotの専用サーバーをコンテナイメージから接続済みプレイヤーまで導く10のツール。

Edgegap MCPで何ができますか?

  • コンテナイメージからゲームサーバーをデプロイする — アシスタントに、CPU、メモリ、ポート設定を指定してコンテナイメージを登録し、特定のプレイヤーの近くで起動するよう依頼します。
  • デプロイ状況と接続情報を追跡する — アシスタントに、デプロイが準備完了になるまでポーリングさせ、接続アドレスを返してもらうか、実行中のインスタンスのステータスとログを確認します。
  • アプリケーションバージョンを管理する — アシスタントに、既存のアプリとバージョンの一覧を表示させたり、動作中の設定から新しいバージョンを作成して重複を避けたりします。
  • デプロイを正常に停止する — アシスタントに、リクエストIDを指定して特定のデプロイを終了するよう指示し、強制終了ではなくクリーンなシャットダウン信号を送信します。
  • 孤立したサーバーを検索してクリーンアップする — アシスタントに、以前のセッションからのすべてのデプロイを一覧表示させ、未使用のインスタンスを特定して停止できるようにします。

ホスト型 MCP サーバー

npx add-mcp 'https://mcp.edgegap.dev/mcp'

Claude Code、Codex、Cursor などにインストールできます

ドキュメント

edgegap-mcp

Edgegap用のMCPサーバーで、コーディングエージェントが開発者を「ゲームサーバーコンテナを持っている」状態から「プレイヤーが接続している」状態まで、APIリファレンスを読むことなく導くことができます。

厳選された10個のツール。OpenAPI仕様から自動生成されたものではありません。理由はスコープを参照してください。

インストール

実行方法は2つあります。トークンの管理方法をどれだけ重視するかに基づいて選択してください。トークンの保存先を参照してください。

リモートエンドポイント

EdgegapがCloudflare Workerとしてホストしています。インストールは不要です。

{
  "mcpServers": {
    "edgegap": {
      "type": "http",
      "url": "https://mcp.edgegap.dev/mcp",
      "headers": { "Authorization": "token YOUR_API_TOKEN" }
    }
  }
}

claude.aiのカスタムコネクタとしても動作します。https://mcp.edgegap.dev/mcpを追加し、同じトークンを指定してください。

ローカル

自分のマシンで実行され、エディタによって起動されます。MCPクライアント設定に1行追加するだけで、クローンもビルドも不要です。

{
  "mcpServers": {
    "edgegap": {
      "command": "npx",
      "args": ["-y", "@edgegap/mcp"]
    }
  }
}

Claude Code、Cursor、Codex、VS Codeで動作します。本番環境では最新版に追従するのではなく、バージョンを固定してください(@edgegap/mcp@0.1.5)。

公式MCPレジストリにdev.edgegap/mcpとして登録されています。

Nodeバージョン: ローカルサーバーにはNode 18+が必要です。Cloudflare Workerの独自コピーをデプロイするにはNode 22+が必要です。wranglerがそれを必要とするためです。

トークンの保存先

モードによって異なります。この違いが両方のモードが存在する理由です。

ローカル。 サーバーは自分のコンピュータ上でプロセスとして実行されます。最初のツール呼び出しでトークンを求められ、認可内容が表示され、明示的な確認がなければ受け付けられません。その後トークンが保存される場所は、網羅的に:

  • そのプロセスのメモリ内の1つの変数。エディタセッションの間のみ

これが全リストです。ディスク上にはありません。設定ファイルにもありません。ログにもありません。Edgegapサーバーにもありません。Edgegapに送信されるのはAPI呼び出し自体のみで、curlを実行した場合とまったく同じです。エディタを閉じると、このサーバーのアクセスは完全に失効します。

リモート。 トークンはリクエストのたびにmcp.edgegap.devに送信され、そこからEdgegap APIに転送されます。Edgegapが運用するインフラを経由します。ワーカーはリクエストの間だけトークンを保持し、永続化しません。ただし、これは「保存しません」という主張であり、「見ることはありません」という主張ではありません。この2つは異なります。ローカルモードのみが後者を実現します。

https://app.edgegap.com/user-settings?tab=tokensでトークンを生成してください。

ローカルモードでは、EDGEGAP_API_TOKENを設定するとプロンプトより優先されます。CIやプロンプトを表示できないクライアント向けです。トークンをコマンドライン引数として渡さないでください。引数はpsを介して他のプロセスから見えるため、サーバーは検出すると警告を出します。

どちらを使うか。 初回の試用、デモ、セットアップの手間が管理よりも重要な監視付きセッションにはリモート。無人運用、稼働中のゲームがある組織内の運用、および信頼を拡張したくない場合にはローカル。以下で説明するガードレールはローカルモードにのみ存在します。

エージェントを接続する前に必ずお読みください

Edgegap APIトークンはスコープを設定できません。 1つのトークンが、すべてのアプリケーション、すべてのバージョン、すべての実行中デプロイメント、および組織全体での使用を認可します。デプロイ専用トークンもアプリケーションごとのトークンもありません。

慎重に検討すべき結果:

  • このトークンを保持するエージェントは、テスト用に作成したデプロイメントだけでなく、本番デプロイメントも停止できます。
  • リポジトリファイル、イシュー、取得したページからエージェントに到達するプロンプトインジェクションは、トークンにも到達します。
  • エージェントがログに記録、エコー、またはモデルプロバイダーに送信するものはすべて、トークンが流出する可能性のある場所です。このサーバーはログに記録しませんが、エージェントの他の動作を制御することはできません。
  • リモートエンドポイントでは、同じスコープなしトークンが毎回Edgegapのワーカーによって処理されます。

推奨セットアップ(注意度の高い順):

状況セットアップ
無人または自律エージェントローカルモード。別の非本番組織とEDGEGAP_READ_ONLY=1
監視付きエージェント、組織内に稼働中のゲームローカルモード。作業対象アプリにスコープされたEDGEGAP_APP_ALLOWLISTEDGEGAP_MAX_DURATION_MINUTES。最初に許可リストのスコープを読んでください。すでに実行中のデプロイメントは対象外です
個人開発者、本番ワークロードなしどちらのモードでも可。デフォルトで問題ありません。完了したらトークンを失効させてください

許可リストと読み取り専用フラグはローカルサーバーで強制されます。つまり、ミスをするエージェントから保護するものであり、APIを直接呼び出すように侵害されたエージェントから保護するものではありません。爆発半径を狭めますが、除去するものではありません。

許可リストのスコープ

EDGEGAP_APP_ALLOWLISTは、アプリケーション名を取る4つのツールによって強制されます: edgegap_create_appedgegap_list_app_versionsedgegap_create_app_versionedgegap_deploy

request_idをキーとする5つのツールでは強制されません: edgegap_get_deploymentedgegap_wait_for_deploymentedgegap_list_deploymentsedgegap_stop_deploymentedgegap_get_deployment_logs。許可リストが設定されたエージェントは、組織内のすべてのデプロイメントを一覧表示し、そのいずれかを検査、ログの読み取り、または停止できます。リスト外のアプリケーションに属するデプロイメントも含まれます。

つまり、許可リストはエージェントが作成およびデプロイできる範囲を制限するものであり、実行中に操作できる範囲を制限するものではありません。これは、このドキュメントの以前のバージョンが示唆していたよりも狭い範囲です。

より強力な保証が必要な場合は、EDGEGAP_READ_ONLY=1を使用してください。これは5つの変更ツールを一切登録しません。または、エージェントを別の非本番組織に向けてください。どちらもこのギャップの影響を受けません。

Syed Anas Mohiuddin氏による報告、2026年9月。

環境変数

これらはローカルサーバーを設定します。リモートエンドポイントではEdgegapによって設定され、開発者ごとに変更できません。いずれかが必要な場合は、ローカルで実行してください。

変数デフォルト目的
EDGEGAP_API_TOKEN(プロンプト表示)APIトークン。オプション。省略すると、最初の使用時に開発者に求められます。token プレフィックスは自動的に追加されます。
EDGEGAP_READ_ONLY01に設定すると、5つの変更ツールは決して登録されません。エージェントはそれらを見ることができないため、呼び出すように誘導されることもありません。
EDGEGAP_APP_ALLOWLIST(空)カンマ区切りのアプリケーション名。設定すると、4つのアプリケーションキー付きツールは他のものに触れません。5つのrequest_idキー付きツールのスコープは制限しません許可リストのスコープを参照してください。
EDGEGAP_MAX_DURATION_MINUTES60エージェントがバージョンに設定できるmax_durationの上限。無人エージェントによるコスト暴走を防ぎます。
EDGEGAP_TIMEOUT_MS30000リクエストごとのHTTPタイムアウト。

ツール

ゴールデンパスに沿った順序でリストされた10個のツール。両モードで同じ10個です。

ツール変更目的
edgegap_list_apps何かをする前に方向を確認。重複アプリケーションを防ぎます。
edgegap_create_appバージョン用のコンテナを作成します。
edgegap_list_app_versionsデプロイ可能なバージョンを見つけるか、動作中のバージョンから設定をコピーします。
edgegap_create_app_versionCPU、メモリ、ポートを含むコンテナイメージを登録します。
edgegap_deploy指定されたプレイヤーの近くに1つのインスタンスを起動します。
edgegap_get_deployment単一のステータス読み取り。
edgegap_wait_for_deploymentバックオフ付きで準備完了までポーリングし、接続アドレスを返します。
edgegap_list_deployments以前のセッションから孤立したサーバーを見つけます。
edgegap_stop_deploymentグレースフルなSIGTERM、一度に1つのデプロイメント。
edgegap_get_deployment_logs障害後のコンテナ出力とクラッシュ終了コード。

設計上の決定

キュレーションされたものであり、生成されたものではありません。 Edgegap APIには約60の操作があります。操作ごとに1つのツールを自動生成すると、60すべての説明が毎ターンエージェントのコンテキストに入り、ツール選択が測定可能なほど低下します。これら10個は、新しい開発者を変換するパスをカバーしています。

wait_for_deploymentはツールであり、ループではありません。 エージェントに任せると、ステータスエンドポイントをタイトループで呼び出し、ターンを消費し、早期に諦めます。ポーリングとバックオフを1つの呼び出しに折りたたむことで、エージェント駆動デプロイで最も一般的な失敗を排除します。

エラーは自己修正のために書かれています。 424はイメージをプルできなかったことと、確認すべきフィールドを示して返されます。422は異なる座標を試すか、リソース要求を下げるように指示します。エージェントは人間に往復することなくこれらに対応できます。

ワイヤーに送信する前のローカル検証。 メモリとCPUの比率、およびプレイヤーの場所の欠落は、不透明な400として表面化するのではなく、ここで検出されます。

一括操作は意図的に省略されています。 stopは1つのrequest_idを取ります。一括停止ツールはありません。フィルター式とバグを持つエージェントが本番フリートを停止できるためです。

ホスト型エンドポイントとローカルパッケージの両方。 ホスト型エンドポイントは、このサーバーを見つけてからツールを呼び出すまでのすべてのステップを削除します。これはほとんどの開発者が脱落する場所です。ローカルパッケージは、スコープなしトークンの管理を第三者(当社を含む)に拡張せずにサーバーを実行する唯一の方法です。どちらも他方を支配しないため、両方を出荷します。詳細はworker/DECISION.mdを参照してください。

スコープ

意図的に公開されていないもの: マッチメイキング、リレー、プライベートフリート、スマートフリート、エンドポイントストレージ、ACL/ホワイトリストエントリ、デプロイメントタグ、メトリクス、コンテナレジストリ管理、DNS設定。

これらは実際の機能ですが、プラットフォームで既に運用しているスタジオ向けであり、最初のサーバーをデプロイする開発者向けではありません。これらを追加すると、変換パスが表面積と引き換えになります。

既知の制限: トークンを求めること自体

これはローカルモードに適用されます。トークンは設定から読み取るのではなく、elicitationを通じて収集されます。

MCP仕様では、サーバーが機密データの収集にelicitationを使用すべきではないとされています。APIトークンは機密です。このサーバーはそれでも実行します。なぜなら、何かが動作する前に設定ファイルにトークンを要求することは、オンボーディングファネルで最大の脱落ポイントであり、このサーバーの目的はセットアップの摩擦をなくすことだからです。

これは意図的なトレードであり、コピーすべきパターンではありません。これを擁護できるのは、src/auth.tsの一連の緩和策です。メモリのみの保存、平易な言葉での開示、必須の確認、すべての出力からの編集、および環境変数が存在する場合は常に優先されること。これらのいずれかを削除すると、トレードが崩れます。

本当の修正はEdgegap側にあり、両方のモードを改善するでしょう: スコープ付きで、失効可能で、デプロイ専用の認証情報を、シークレットとして貼り付けるのではなくOAuthを通じて発行すること。これらが存在するまで、インタラクティブプロンプトは回避策であり、コード内でそのようにラベル付けされています。

開発

npm run typecheck
node smoke.mjs      # handshake, tool registration, read-only mode
node guards.mjs     # local validation and allowlist enforcement
node elicit.mjs     # token prompt: accept, refuse acknowledgement, decline, no support

これらはネットワーク呼び出しを行いません。elicit.mjsは、プロンプトが組織全体のスコープを述べていること、確認が必須であること、トークンがツール出力に決して表示されないこと、および拒否が再試行ループではなく停止して報告するメッセージを生成することを検証します。