MCP サーバーを使うと、モデルは、イメージを 1 つのキューブとして、または複数のキューブをまとめてデプロイし、ログを読み、以前のバージョンに戻せます。サンドボックスを作成し、中でコマンドを実行し、ファイルを読み書きし、ポートを開き、スナップショットを取ってロールバックできます。サンドボックスより長く残るディスクであるドライブを作成し、マウントし、スナップショットを保持し、バックアップを取れます。ドメインをアプリやサンドボックスに向けたり、プロジェクトとアカウントを確認したりもできます。MCP サーバー自身は状態を持たず、すべては TypeScript SDK を通じて API に送られます。
Node 23.6 以降が必要で、npm から glac-mcp として実行します。その基盤である公式の MCP TypeScript SDK も一緒に入ります。
GLAC_API_URL=https://api.glac.ai GLAC_API_KEY=ak_... npx glac-mcpクライアントの接続
Claude Code の場合:
claude mcp add glac -e GLAC_API_URL=https://api.glac.ai -e GLAC_API_KEY=ak_... -- npx glac-mcpClaude Desktop(claude_desktop_config.json。macOS では ~/Library/Application Support/Claude/)と Cursor(~/.cursor/mcp.json、またはプロジェクト内の .cursor/mcp.json)にも同じエントリを書きます。
{
"mcpServers": {
"glac": {
"command": "npx",
"args": ["glac-mcp"],
"env": { "GLAC_API_URL": "https://api.glac.ai", "GLAC_API_KEY": "ak_..." }
}
}
}HTTP 経由
glac-mcp serve --http は、同じツールを MCP の Streamable HTTP トランスポートで /mcp に提供します。プロセスを起動するのではなくアドレスに接続するクライアント向けです。
npx glac-mcp serve --http 127.0.0.1:7071
claude mcp add --transport http glac http://127.0.0.1:7071/mcp --header "Authorization: Bearer ak_..."サーバーは自分のキーを持ちません。各リクエストが API キーを Bearer トークンとして運び、サーバーはそれを API で確認して(30 秒間有効とみなし)、ツールはそのキーだけを使います。キーのないリクエストや、API が知らないキーのリクエストには、エンドポイントの保護リソースメタデータ(RFC 9728、/.well-known/oauth-protected-resource/mcp)を示す WWW-Authenticate: Bearer チャレンジ付きで 401 が返ります。各リクエストはセッションなしで個別に処理されるため、1 つのアドレスの背後にいくつでもサーバーを置けます。指定しなければこのマシン上でのみ待ち受けます。ほかのアドレスで待ち受ける場合は、前段に TLS を置き、クライアントが使うアドレスを GLAC_MCP_PUBLIC_URL に設定してください。
キーを貼り付ける代わりにサインイン
Glac が提供するエンドポイントは、サインインによって Glac に接続したアプリのアクセストークンも受け付けます。[TODO:提供が始まったら、エンドポイントとその認可サーバーのアドレスを記載。] Claude、ChatGPT、Cursor などのクライアントは、キーも設定もなしに接続できます。エンドポイントのアドレスをリモート MCP サーバー(Claude ではカスタムコネクタ)として追加すると、クライアントはエンドポイントの保護リソースメタデータを読み、そこで Glac の認可サーバー(Ory Hydra。スコープは下記)を見つけ、自身を登録します。登録には、クライアント自身の Client ID Metadata Document(MCP のリビジョン 2026-07-28 が最初に求める方法)を使い、それがなければ RFC 7591 による登録を使います。リダイレクト先のアドレスは https か、手元のコンピューター上のアプリなら localhost でなければなりません。ブラウザでコンソールが開くので、サインインします(パスワード、GitHub、Google)。コンソールには、アプリの名前、アプリが自身を登録したのか説明を公開しているのか、戻り先のアドレス、そしてアプリが求めるものが表示されます。アカウントとプロジェクト(追加で選ばなければ 1 つ)、そしてアプリに許可することを選びます。
| スコープ | アプリに許可されること |
|---|---|
sandboxes:read |
サンドボックスとそのスナップショット、ドライブ、バックアップ、SSH キー、ブラウザのセッションの閲覧 |
sandboxes:write |
それらの作成、変更、削除。コマンドの実行、ファイルの読み書き、ターミナルとポートへのリンクの利用 |
apps:read |
キューブ上のアプリとそのバージョン、ログ、メトリクス、デプロイ、ドメイン、共有変数、データベース、マネージドアプリケーションの閲覧 |
apps:deploy |
アプリ、デプロイ、共有変数、データベースのデプロイ、ロールバック、スケール、削除と、マネージドアプリケーションのインストール |
billing:read |
アカウントのプラン、請求、クレジット、使用量、制限の閲覧(オーナーが許可) |
許可すると、アプリは API と MCP エンドポイント用のアクセストークン(有効期間は 10 分。アプリが更新します)を受け取り、許可した範囲で、選んだプロジェクトでのみ動作します。スコープ外のツールは、必要なスコープを示して拒否されます(403 insufficient_scope)。また、スコープにかかわらず、接続したアプリには許されないこともあり、それらも拒否されます。API キー、Webhook、監査ログ、課金やアカウントの設定の変更、ドメイン、シークレット、ログのエクスポート先です。アカウントでのご自身のロールでできないことは、アプリにもできません。接続したアプリは、コンソールの設定(Connected apps)に、それぞれ許可されていること、その範囲、最後に使われた日時とともに一覧表示されます。Revoke を押すと、そのアプリのトークンはすべて、API ではすぐに、MCP エンドポイントでは 30 秒以内に無効になります。
ご自身で運用するエンドポイントには、認可サーバーはトークンを発行しません。そうしたエンドポイントは API キーを受け付けます。
ツール
73 個のツールは、REST の呼び出しを 1 つずつなぞるのではなく、モデルがすべきことに沿っています。製品ごとにまとめられ、名前もそれに従います。キューブ(cube_*。同じツールは一覧にない worker_* にも応答します)、サンドボックス(sandbox_*)、ドライブ(drive_*)、ドメイン(domain_*)、ブラウザ(browser_*)、データベース(database_*)、マネージドアプリケーション(catalogue_*、installation_*)、次にプロジェクト(project_*)とアカウント(account_*)で、この順に並んでいます。
キューブ
キューブは、イメージを固有のアドレスを持つサービスであるキューブとして実行します。API ではこれをアプリと呼び、ツールの引数も同じです(app)。この 7 つにはプラットフォームのコントロールプレーンが必要です。
| ツール | 内容 |
|---|---|
cube_deploy |
指定した名前のアプリにイメージをデプロイする(初回はアプリを作成)。すぐに反映されるもの(public、regions、スケール、checkpoint_seconds:キー別インスタンスのチェックポイント。0 ならなし)を先に変更する。すぐに反映されるものには concurrency、depends_on、network(エイリアス、アクセス方法)、metadata も指定できる。バージョンには、ボリューム(サーバーの接頭辞の下のもの)、kind、user、working_dir、stop_signal、stop_grace_ms、hostname、runtime(制限、sysctl、tmpfs、リゾルバー、/dev/shm のサイズ)も指定できる。ファイルは指定できない(アプリにシークレットを渡す手段になってしまうため)。しばらくバージョンを待ち、準備ができたか、失敗したか(イメージ自身の出力付き)、まだビルド中かを伝える |
cube_list |
アプリの一覧、または 1 つのアプリの詳細:バージョン、トラフィックの行き先、キー別インスタンス、キーの署名に使うシークレット(先頭の数文字のみ。値は含まない)、ログが数えた量。データベースのアプリは、どのデータベースか(managed_by)を示す。そのデータベースがデプロイと削除を行うため、ここでのデプロイやロールバックは拒否される |
cube_rollback |
アプリのトラフィックを以前のバージョンに戻す |
cube_metrics |
アプリを処理するマシンが計測した値(1 分ごと、または 1 時間ごと):リクエスト、拒否されたリクエスト、ステータスのクラス別のリクエスト、p50 と p99、稼働中と停止中のインスタンス、復帰、作成されたインスタンス、CPU、メモリ。値のある区間と、その合計 |
cube_logs |
アプリのログを読む:インスタンスの出力、リクエスト、プラットフォームの動作。インスタンス、バージョン、種類、ステータス、テキストで絞り込み、カーソルから続きを読める |
cube_instance |
キーのインスタンスを作成または削除する。インスタンスをその場で別のバージョンに移すとマシンが置き換わって接続が切れ、リバートでも同じことが起きる。そのため、それらの開始、取り消し、追跡は人が行うもので(glac cube upgrade、glac cube upgrades revert|cancel、SDK の upgrade と revert)、アプリの複数のキーにまとめて行うバッチならなおさら(glac cube upgrades batch)。これを行うツールはない |
cube_instance_ports |
インスタンスがどこにあっても、キーのインスタンスが持つ専用のパブリック IPv6 アドレスと、そこで開いているポート。open は、from で指定した送信元(IPv6 のプレフィックスかアドレス。全員なら ::/0 を明示する)に対してポート(TCP または UDP)を開き、close は閉じる。開いたポートは、インスタンスのスリープ中(パケットで復帰する)も、移動しても開いたまま。同じキーの新しいインスタンスには引き継がれない。プログラムは :: で待ち受ける必要がある |
サンドボックス
| ツール | 内容 |
|---|---|
sandbox_run |
コマンドを実行して待つ。sandbox で名前を指定すると、初回にサンドボックスを作成して保持する。指定しなければ使い捨てのサンドボックスを使って削除する。作成するサンドボックスでは(sandbox_exec が作る場合も)、起動時に始まる専用のサービス(start、start_command、ready)、project_network、hostname、stop を指定できる。init: "systemd" で作成するサンドボックスはシステム全体で、イメージ自身の systemd が PID 1 になる(image を指定しなければ、systemd と OpenSSH 入りのプラットフォームの Ubuntu)。パッケージ、systemctl で起動するサービス、cron、ジャーナルが通常のマシンと同じように動く。sandbox_exec でも指定でき、sandbox_list は各サンドボックスの init を表示する |
sandbox_exec, sandbox_output, sandbox_stdin, sandbox_signal |
長いコマンドを開始する。指定した位置から出力を読む。入力に書き込む。シグナルを送る |
sandbox_read_file, sandbox_write_file, sandbox_list_files |
ファイル。画像は画像として返り、それ以外のバイナリファイルは説明だけが返る |
sandbox_url |
ポートへのリンク |
sandbox_ports |
サンドボックス専用のパブリック IPv6 アドレス(ある場合)と、そこで開いているポート。open は、from で指定した送信元(IPv6 のプレフィックスかアドレス。全員なら ::/0 を明示する)に対してポート(TCP または UDP)を開き、close は閉じる。受信はデフォルトで閉じている。開いたポートは、スリープ中(パケットで復帰する)も、移動しても開いたまま。プログラムは :: で待ち受ける必要がある |
sandbox_revoke_tokens |
サンドボックス用にそれまでに発行したトークンをすべて無効にする。プレビューリンクや Cookie の中のトークン、SSH セッションが持つトークンも含む(以降は 401 invalid_token)。その後に作ったトークンは有効。token(トークンそのもの、またはその ID)を指定すると、そのトークンだけを無効にする |
sandbox_egress |
サンドボックスがインターネット上で到達できる範囲:default、allow、deny(デフォルトで拒否し、許可リストを使うと、信用できないコードを閉じ込められる)、または clear。初めて名前を指定したサンドボックスは、このルールで作成される。リクエストにシークレットを追加するルールや、ホストに送れるリクエストを指定するルールはプロジェクトのもので、変更しない |
sandbox_checkpoint |
実行中のサンドボックスのチェックポイントの表示と、every_seconds(1〜600 秒。0 でオフ)による設定。マシンが失われると、サンドボックスは最後のチェックポイントから、プロセスごと別の場所で再開する。デフォルトはオフで、初めて名前を指定したサンドボックスはチェックポイント付きで作成される。チェックポイントを取れるマシンがなければ拒否される(checkpoints_unavailable) |
sandbox_list, sandbox_sleep, sandbox_delete |
サンドボックスとスナップショットの一覧、または 1 つの詳細(チェックポイントがあればその状況も)。すぐにスリープさせる。削除 |
sandbox_snapshot, sandbox_fork, sandbox_restore |
スナップショット、フォーク、その場でのスナップショットへの復元 |
sandbox_add_ssh_key, sandbox_list_ssh_keys, sandbox_delete_ssh_key |
1 つのサンドボックス用の SSH キー。指定しなければ 1 日有効(最長 30 日) |
ドライブ
ドライブは、使用するサンドボックスより長く残るプロジェクトのディスクです。一度に 1 つのサンドボックスが読み書き可能でマウントし、中身ごと次のサンドボックスのために保持されます。次のサンドボックスは同じリージョンのもの、またはマシンがドライブのホームのオブジェクトストアを読める別のリージョンのものです。スナップショットは、ある瞬間のドライブを、オブジェクトストア内のバージョンとして保持します。何もコピーされません。バックアップは、ある瞬間のドライブのコピーで、期限が来るまでオブジェクトストアに保持されます。この 16 個にはプラットフォームのコントロールプレーンが必要です。接頭辞を設定すると、サーバーのドライブはその接頭辞を持ち、サーバーはそれを自分のサンドボックスにしかマウントしないため、ドライブは名前を付けて作成します。
| ツール | 内容 |
|---|---|
drive_create |
名前、サイズ(GiB。指定しなければ 64、無料プランでは 5)、リージョン、standard か strict(ドライブを持つサンドボックス内の fsync が、それ以前のすべての書き込みをオブジェクトストアが保持してから戻る。作成後は変わらない)を指定してドライブを作成する。課金されるのは書き込まれたものだけ |
drive_list, drive_get |
ドライブの一覧、または 1 つの詳細:サイズ、書き込まれた量、リージョン、持っているサンドボックスとその場所、書き込むノード、ホーム(コピーを保持するオブジェクトストアのリージョン)と移動の進み具合(home_move:ドライブのホームは、別のリージョンに移って 1 時間後にそこへ追従する。それより早く移すツールはなく、glac drives home で行う)、フォークの作成元のドライブ、データベースのドライブが属するデータベース(managed_by:読み書き可能でマウントできるのはそのインスタンスだけで、名前の変更、復元、削除は拒否される) |
drive_cache |
ドライブのうちホストが NVMe に置く量を GiB で設定する(cache_gib。null なら全量でデフォルト。drive_create も cache_gib を受け付ける)。それを超えた分は読み取り時にオブジェクトストアから読まれて遅くなり、キャッシュは、ドライブが保持するデータとは別に、埋まっている量に応じて 1 時間ごとに課金される。キャッシュを小さくすると、超えた分はストアが保持した時点で手放される。実行中のサンドボックスが全量キャッシュでマウントしたドライブは、そのサンドボックスがスリープまたは停止するまでそのまま。ツールが返すドライブはすべて、cache_bytes と、そのうち実際にある量(cached_bytes)を示す。データベースのドライブは独自の設定を保つ |
drive_attach |
ドライブをサンドボックスのパスに、読み書き可能ですぐにマウントする。ほかのサンドボックスが持っているドライブは拒否され、結果がどのサンドボックスが持っているかを示す。snapshot を指定すると、代わりにそのスナップショットの 1 つを読み取り専用でマウントし、いくつものサンドボックスが同時にマウントできる |
drive_detach |
再び外す(プロセスがまだ使っている間は force)。ドライブは中身を保持する。snapshot を指定すると、そのスナップショットの読み取り専用のマウントを外す |
drive_delete |
ドライブとその中身を削除する。マウント中のドライブは削除されない。スナップショットは残り、結果がそれらを示す |
drive_snapshot, drive_snapshot_list, drive_snapshot_delete |
ドライブのスナップショットを取得する(fs_consistent で、書き込んでいるサンドボックスのファイルシステムを凍結する。指定しなければ、停電時と同じように、マシンを短時間だけ一時停止する)。ドライブのスナップショットを一覧表示する(ドライブを指定しなければ、削除済みのものを含む全ドライブのもの)。1 つを削除する |
drive_fork |
スナップショット、またはドライブの現在の状態から、名前を付けた新しいドライブを作る。何もコピーされず、すぐにマウントできる |
drive_restore |
ドライブをスナップショットの 1 つに戻す。サンドボックスが持っているドライブは拒否されるので、先に drive_detach する |
drive_versions |
ウィンドウが設定されている場合(history_seconds:書き込みがあった 30 秒ごとに 1 つ)にドライブが保持する自身のバージョン(新しい順)。at を指定すると、その時刻への復元やフォークで使われるバージョン |
drive_backup, drive_backup_list, drive_backup_get, drive_backup_delete |
ドライブのバックアップを取得する(書き込んでいるサンドボックスはファイルシステムを数ミリ秒凍結され、静止した状態のコピーになる)。期限(expires_in_days、またはドライブのルール。設定しなければ 30 日)まで保持する。サーバーのドライブ、または 1 つのドライブのバックアップを、新しい順に、それぞれ取得した理由(manual、ドライブのルールによる daily、サービスの新しいバージョンの前の before_version)とともに一覧表示する。1 つを表示する。1 つを削除する |
drive_backup_restore |
準備ができたバックアップから、名前を付けた新しいドライブを作る。サイズはバックアップ元のドライブと同じで、そのリージョンに作られ、オブジェクトストアからすべて戻るまでは restoring、その後は ready(drive_get で確認)で、それまでは何からもマウントされない。作成先のマシンで復元できない場合、プラットフォームは別のマシンでもう一度試みる |
モデルは、スナップショットを名前か ID(dsnap-…)で、常にドライブとともに指定します。drive_snapshot は、1 つのドライブのスナップショットに同じ名前を 2 回付けることはなく、接頭辞を設定している場合は、それぞれの名前を接頭辞の下に付け、指定がなければ名前を作ります(ドライブの名前と時刻)。スナップショットはドライブより長く残ります。drive_delete の結果は残ったスナップショットを示し、それらにはドライブの ID でアクセスします。スナップショットは、削除されるまで、単独で保持する量に対してドライブのデータの料金(1 GB-月あたり $0.02)で課金されます。フォークはほかのドライブと同じく、保持するものすべてで課金されます(10 GB のスナップショットのフォークは、10 GB のドライブとして課金されます)。読み取り専用のマウントがオブジェクトストアから読むものに料金はかかりません。復元では、その間のバージョンは、スナップショットかフォークが保持している限り残るため、古いスナップショットに復元したドライブを、後で新しいスナップショットに復元することもできます。どのスナップショットも保持していなかった中身は失われます。
バックアップはスナップショットではありません。スナップショットはドライブのバージョンですが、バックアップはそれ自体が独立したコピーで、名前を持たず ID(bak-…)で指定し、それだけからドライブを作れます。ドライブのバックアップは前回以降に変わったものだけを保持し、複数のバックアップが必要とするブロックは、そのうち最も古いもので 1 回だけ課金されます。各行には、課金の基準(stored_bytes)、削除すると減る量(own_bytes)、共有している量(shared_bytes)があります。オブジェクトストアがすべてを受け取るまでは making、その後は ready で、それ以降は、期限が来るか削除されるまで、スリープ中のサンドボックスが保持するものと同じ料金(1 GB-月あたり $0.02)で課金されます。バックアップはドライブより長く残り、元のドライブがどうなっていても、そこから新しいドライブを作れます。接頭辞を設定している場合、サーバーに見えるのは自分のドライブのバックアップだけで、バックアップから作るドライブには接頭辞の下で名前を付けます。マシンがオブジェクトストアに何もコピーしないドライブにはバックアップはなく、drive_backup がそう伝えます。
ドメイン
| ツール | 内容 |
|---|---|
domain_create |
サーバーのアプリ、またはそのサンドボックスのポートに、ユーザー独自の名前を登録する。結果が示すレコード(名前をここへ向ける役割も兼ねる CNAME か、TXT レコード)が DNS に現れるまでは pending_verification で、現れた時点で証明書が発行される。レコードはユーザーが DNS プロバイダーで追加する |
domain_list, domain_update, domain_delete |
サーバーのアプリとサンドボックスへ向かうドメインの一覧(証明されるまでは、それぞれを証明するレコード付き)。別のアプリ、サンドボックス、ポートへの変更。削除 |
ブラウザ
**未公開。**Glac のブラウザはまだ利用できません。以下は公開に先立つ、現時点でのサーバーの機能です。
セッションは Glac がホストする Chromium で、Chrome DevTools Protocol(CDP)のクライアントが接続している間は稼働し、最後のクライアントが離れると数秒後に、ページを保持したままスリープします。サーバーはセッションを開いて閉じます。ブラウザでの操作は、セッションのアドレスに接続した Playwright の MCP サーバーが行います(npx @playwright/mcp --cdp-endpoint <cdp_url>)。この 3 つにはプラットフォームのコントロールプレーンが必要です。接頭辞を設定している場合、サーバーのセッションの名前にはそれが付き、サーバーに見えて閉じられるのは自分のセッションだけです。
| ツール | 内容 |
|---|---|
browser_open |
セッションを開く(headful でなければヘッドレス)。または指定した名前のセッションをページごと復帰させ、その CDP アドレス(cdp_url)と、人がページをライブで見る場所(live_url)を返す。アドレスは認証情報で、持っている人なら誰でもブラウザを操作できる |
browser_list |
サーバーのセッションの一覧:名前、種類、それぞれ稼働中かどうか(または failed とその理由:ブラウザが停止して戻らなかった)、接続中のクライアントの数。アドレスは含まない |
browser_close |
セッションを完全に終了する:ブラウザ、ページ、接続ごと |
セッションは、ほかのインスタンスと同じく、使用したキューブのリソースで課金されます。処理している間の CPU、稼働中のメモリ、送信トラフィックです(料金とプラン)。account_usage は、セッションの使用量をそのサンドボックスと並べて示します。
データベース
データベースはマネージド Postgres で、何も要求がないときはスリープし、接続があればセッションを保ったまま復帰します。サーバーはデータベースとそのブランチを作成し、確認します。データベースやブランチの削除、スリープ、復帰、新しいパスワードの発行は人が行うものです(glac db rm、glac db branches rm、glac db sleep、glac db wake、glac db reset-password)。この 4 つにはプラットフォームのコントロールプレーンが必要です。接頭辞を設定している場合、サーバーのデータベースの名前にはそれが付き、サーバーに見えるのは自分のデータベースだけです。
| ツール | 内容 |
|---|---|
database_create |
データベースを作成し(version を指定しなければ PostgreSQL 18)、数秒で準備ができると、オーナーのパスワード入りの接続文字列を返す。パスワードが返るのはこのときだけなので、モデルは、接続するプログラムが必要とする場所(DATABASE_URL のような環境変数)に保存する。既存のデータベースの名前を指定すると、パスワードなしでそのデータベースを返す。無料プランでは sleep_after_seconds は 1 で固定 |
database_list |
サーバーのデータベースの一覧:名前、バージョン、ステータス、稼働中・一時停止中・スリープ中のどれか、パスワードなしの接続文字列 |
database_get |
1 つのデータベースとそのブランチ(main、次にそこから作られたもの)。それぞれエンドポイント、状態、パスワードなしの接続文字列付き。branch を指定すると、そのブランチだけ。データベースの休止の設定(スリープ前に一時停止したままでいる時間、毎日の復帰)、ルートブランチを復元できる起点、WAL アーカイブの欠落(オブジェクトストアが WAL を長く拒否したために手放された期間。その間の時刻には、ドライブのウィンドウから 1 分単位でしか復元できない)も示す。復元は人が行う(glac db restore) |
database_branch_create |
データベースのブランチ:main(または parent)の現在の状態のコピーで、サイズにかかわらずすぐに作られ、専用の PostgreSQL を持つ。実データに触れずに、マイグレーションや変更を試すためのもの。ブランチの接続文字列をパスワードなしで返す。ロールとパスワードは親のものなので、オーナーは database_create が返したパスワードでログインする。expires_in_hours を指定するとその時点で自動で削除され、指定しなければ人が削除する(glac db branches rm) |
データベースの履歴(どこまで遡って復元できるか。glac db update --history)と、その場での復元(glac db restore:ルートブランチをある時刻に戻し、接続を切断し、復元前の状態をブランチとして保持する)は人が行うもので、どちらを行うツールもありません。ドライブのバージョンのウィンドウは、SDK と glac drives versions|history にあり、これらのツールにはまだありません。
データベースには、プロジェクトのネットワーク上で、project_network: true で作ったサンドボックス(とプロジェクトのアプリ)から、名前でアクセスします。
マネージドアプリケーション
カタログのアプリケーション(たとえば Rivet)は、プロジェクトに専用のキューブのリソースとしてインストールされ、インストールのラベルが付き、インストールを通じてのみ変更されます(マネージドアプリケーション)。サーバーはカタログを確認し、インストールし、インストールを確認します。インストールの変更と、ボリュームとバケットを中身ごと削除するインストールの削除は人が行います(glac installations update、glac installations rm)。この 5 つにはプラットフォームのコントロールプレーンが必要です。接頭辞を設定している場合、サーバーのインストールの名前にはそれが付き、サーバーに見えるのは自分のインストールだけです。
| ツール | 内容 |
|---|---|
catalogue_list |
カタログのアプリケーションの一覧。それぞれ概要、ライセンス、プラットフォームがパッケージ化したかどうか、1 か月分がキューブの計測項目でどれだけになるか |
catalogue_get |
1 つのアプリケーション(app、version):インストールが受け付けるパラメーター(JSON Schema)、出力値、キューブの計測項目での 1 か月分 |
installation_create |
インストールし(app、name、version、region、parameters、requires)、サーバーの待ち時間まで待って、秘密のものも含む出力値を返す。モデルはそれを、使うプログラムが必要とする場所に保存する |
installation_list |
サーバーのインストールの一覧:アプリケーション、バージョン、ステータス、リージョン、それぞれの構成と出力値 |
installation_get |
1 つのインストール:ステータス(失敗した場合はその理由)、アプリ、ボリューム、バケット、出力値(サーバーのキーにプロジェクトの管理権限がなければ、秘密の出力値は隠される) |
プロジェクトとアカウント
| ツール | 内容 |
|---|---|
project_get, project_set_variable |
プロジェクトとそのイベント(それぞれ短い説明付き。たとえば、実行後に失敗したブラウザのセッション、データベースの作成、削除、ブランチ作成、復元、WAL アーカイブの失敗と再開、その欠落の発生と解消。その他のイベントは対象を示す)、そしてアプリの環境変数が参照する共有変数。コントロールプレーンの機能。project_get は、プロジェクトの利用上限額と今月の支出額、Webhook、API キー、アプリのログのエクスポート先も表示する(シークレット、キー、ヘッダーの値は表示しない。Webhook とキーは admin スコープを持つキーの場合)。これらは人が設定するもので、作成や変更を行うツールはない。アカウントの上限の引き上げの申請も人が行う(glac limits request) |
project_secrets |
プロジェクトのシークレット:名前とホストのみ。値は表示しない |
project_deploy |
サーバーの複数のアプリを、プロジェクトの 1 つのデプロイ(/v1/deploys)としてまとめてデプロイする。それぞれに cube_deploy がバージョンについて受け付けるもの({} ならそのまま)を指定し、それぞれが待つものの順に進めて、まとめて切り替える。しばらくデプロイを待ち、各アプリのバージョンとその状況、または失敗したアプリとその理由を伝える。コントロールプレーンの機能 |
project_deploys |
サーバーのアプリの最新のデプロイの一覧。または 1 つのデプロイ(各アプリのバージョン、各ステップにかかった時間、失敗した場合はその理由。wait:終わるまで待つ)。コントロールプレーンの機能 |
project_audit |
プロジェクトの監査ログの 1 ページ分。新しい順:読み取り以外のすべての呼び出し(拒否されたものも含む)を、日時、実行者(名前で示すキー、サンドボックスのトークン、コンソールのユーザー、プラットフォーム、オペレーター)、メソッド、パス、ステータス、送信元とともに記録。オペレーターによるアプリのログの読み取りもすべて記録。admin スコープを持つキーが必要。コントロールプレーンの機能 |
account_billing, account_usage |
プラン、請求、使用量:読み取りのみ。請求には、キーのプロジェクトが保持するボリュームとドライブの、作成時に適用される数値での状況(keeps。追加は人が申請する)、アカウントの請求先住所と税番号も含まれ、アカウントの購入をすぐに受け取るには購入者の明示的な要求が必要かどうか(14 日以内に撤回できる、EEA または英国の消費者の場合)を、要求の文言とともに示す |
account_statement |
1 か月の明細(period、YYYY-MM。指定しなければ今月):計測項目ごとの行、それを定価で換算した額、有料プランの期間に含まれる量を超えた使用量の額(残高の範囲で残高から差し引かれる)、その月の期間の区切り、料金、引き落とされたクレジットと帳消しになったクレジット、月末時点でアカウントが保持していたもの、プロジェクトごとの使用量、データベースごとの行(使用量を定価で換算した額。履歴と階層化データは別記)。読み取りのみ |
account_documents |
Stripe にある請求書(PDF のリンク付き。返金された請求にはクレジットノート)、アカウントに送られたメール、EEA または英国の消費者としてまだ撤回できる購入と、行った撤回。読み取りのみ。撤回は購入者自身の意思表示で、エージェントが行うことはない(glac billing withdraw) |
account_settings |
アカウントの通知の送信先、その言語、インターネットへの月間送信量に対するアカウント独自の上限。表示し、依頼主の求めがあれば変更する。アドレスがまだ確認されていないこと(email_verified:送られたリンクが開かれるまで、通知は届かない)や、そのアドレスへのメールが不達だったこと(email_undeliverable:アドレスが設定し直されるまで何も届かない)も示す |
サーバーが守るいくつかのルール:
- **状態は名前に従います。**モデルが名前を付けたサンドボックスは、ファイル、パッケージ、プロセスとともに、会話をまたいでモデルのものであり続けます。
- **失敗したコマンドはエラーではなく結果です。**0 以外の終了コード、タイムアウト、シグナルは、1 行目に終了コードを示す通常の結果として返ります。存在しないサンドボックス、到達できない API、誤った引数はエラーで、対処方法が示されます。
- **長い出力は途中が省略されます。**1 回の呼び出しで最大 16,384 バイトで、先頭と末尾を返し、残りを読む呼び出しを示します。
- **呼び出しが待つのは最大 45 秒です。**まだ実行中のコマンドは ID とともに
runningとして返り、sandbox_outputで待ち続けます。 - **支払いは人の仕事です。**チャージ、プランの変更、自動チャージのオン、購入の撤回、シークレットの保存を行うツールはなく、結果がそれを行う
glacコマンドを示します。アカウントが EEA または英国の消費者として購入する場合、購入をすぐに受け取るには購入者自身の明示的な要求が必要です。その要求は本人が伝えるもので(glac billingコマンドの--start-now、またはコンソールの課金のページのチェックボックス)、エージェントが伝えることはありません。結果が示すコマンドには、その場合--start-nowが付いています。 - **シークレットはモデルの手の届かないところに置かれます。**ここでデプロイするアプリ(
cube_deploy、project_deploy)は、このサーバーからシークレットもファイルも受け取らず、envが参照するのは共有変数だけです。イメージのプルシークレットは、そのために設定されたレジストリにだけ送られます(GLAC_MCP_IMAGE_PULL_SECRETS=GHCR=ghcr.io,HUB=docker.io)。
設定
| 変数 | 設定するもの | 指定しない場合 |
|---|---|---|
GLAC_API_URL, GLAC_API_KEY |
API のアドレスとキー | https://api.glac.ai、キーなし |
GLAC_MCP_IMAGE |
作成するサンドボックスのイメージ | プラットフォームのデフォルトイメージ |
GLAC_MCP_IMAGE_PULL_SECRETS |
モデルが指定できるプルシークレット。それぞれに 1 つのレジストリ | なし:公開イメージのみ |
GLAC_MCP_PREFIX |
作成するすべてのもの(サンドボックス、スナップショット、ドライブ、アプリ)の名前の接頭辞。サーバーにはそれらしか見えない | なし |
GLAC_MCP_WAIT_SECONDS |
呼び出しがコマンドを待つ時間 | 45 |
GLAC_MCP_OUTPUT_BYTES |
1 回の呼び出しで返す出力やファイルの量 | 16384 |
GLAC_SSH_GATEWAY |
SSH ゲートウェイ。書き出す ssh コマンドライン用 |
なし |
GLAC_MCP_LOG |
1 で、すべてのツール呼び出しを stderr に記録(HTTP 経由では、すべてのリクエストも) |
オフ |
GLAC_MCP_HTTP_ORIGINS |
HTTP 経由:このマシン以外に、ブラウザがサーバーを呼び出せる Web ページのホスト | なし |
GLAC_MCP_PUBLIC_URL |
HTTP 経由:クライアントがアクセスするサーバーのアドレス。保護リソースメタデータに記載され、アクセストークンのオーディエンスが指定しなければならないもの | http://<listen address>/mcp |
GLAC_MCP_AUTHORIZATION_SERVER |
HTTP 経由:キーに加えて、サーバーがアクセストークンを受け付ける認可サーバー(その発行者)。保護リソースメタデータに記載される | なし:キーのみ |
公式の MCP TypeScript SDK を基盤とし、2026-07-28 のプロトコルと、古いクライアント向けに 2025-11-25、2025-06-18、2025-03-26、2024-11-05 の initialize ハンドシェイクに対応しています。1 つの接続で使うリビジョンは 1 つで、クライアントが接続を開くときのものです。未対応:ボリューム(ドライブの下にあるディスク)のツール、ターミナル(pty)、サンドボックス固有の環境、スナップショットからのサンドボックスの作成。