コーディングエージェントがDockerに求めること
実際のプロジェクトで作業するエージェントは、同じような質問を繰り返します。何が動いているか、ポート3000のアプリは何か、なぜこのコンテナが終了したか、ログには何があるか、使い捨て環境でテストできるか。シェルだけなら、docker ps、docker inspect、docker logsを実行し、返る行をすべて読んで答えます。機能はしますが、毎ターン生のJSONや何百行ものログをモデルのコンテキストに入れるため、遅く、費用もかかります。
MCPサーバーは、それらの質問を答えそのものを返すツールに変えます。OxcartのツールはDocker APIのエンドポイントではなく質問に合わせて設計されているため、1回の呼び出しで一連のコマンドを置き換えます。
13のツール
| 目的 | ツール | 表示に必要な最低レベル |
|---|---|---|
| 確認 | status, projects, ports, images, logs | Read only(読み取り専用) |
| 説明 | diagnose:終了コード、OOMによる強制終了、ヘルスチェックの失敗、ポートの問題、重要なログ行 | Read only(読み取り専用) |
| 操作 | container(起動・停止・再起動)、exec、compose(up・down)、ネットワークなしのsandbox | Manage(管理) |
| 変更と整理 | build、remove、cleanup(先にプレビュー)、ネットワーク付きのsandbox | Full(すべての操作) |
statusは各Composeプロジェクトのフォルダー、gitブランチ、localhost URLを表示するので、「ポート3000のアプリ」をユーザーとエージェントが同じものとして把握できます。リソースを購読するクライアントは、クラッシュ、OOMによる強制終了、正常性の変化を、ポーリングせず発生時に知ることができます。
回答を小さく、セッションを安く
各質問に答えるためエージェントがOxcart経由で読む内容と、代わりに読むことになるdocker CLI出力を比較しました。同じコンテナを同時点で測定しています。
| 質問 | Oxcart MCP | 相当するdocker CLIコマンド | docker CLI | 削減倍率 |
|---|---|---|---|---|
| このコンテナはなぜ停止した? | 159 | inspect + logs --tail 300 | 2,014 | 13× |
| 直近500行のログにエラーはある? | 39 | logs --tail 500 | 703 | 18× |
| 何が動いている? | 106 | ps -a + stats --no-stream + compose ls -a | 332 | 3.1× |
5つのテストコンテナを使用しました(クラッシュ、異常状態、OOM終了、Composeプロジェクト、公開ポート)。ログが長くなってもdiagnoseとlogsのサイズは変わりません。ツール一覧自体のコストはセッションごとに1回で、読み取り専用レベル(6ツール)は510トークン、全13ツールでは1,463トークンです。
セッション全体でも同じ傾向でした。Claude Opus 5.5を使うClaude Codeに2つの日常的な質問をし、docker CLIのみの場合とOxcartのMCPサーバーを使う場合を比較しました。どちらも両方の質問に正しく答えました。
| タスク | 時間 | 費用 | トークン数 | ターン数 |
|---|---|---|---|---|
「workerでエラーが出ている?エラーを見せて。」 | 4.2 s 対 31.0 s | $0.022 対 $0.157 | 10,686 対 52,266 | 2 対 8 |
「apiコンテナが何度も落ちる。なぜ?」 | 8.5 s 対 14.9 s | $0.036 対 $0.070 | 11,283 対 19,510 | 2 対 4 |
Oxcartあり・なしで各タスクを1セッションずつ、人工的に用意したテストコンテナとOxcart 0.1.0で実行した参考値です。費用はプロンプトキャッシュに左右され、実行順序も交互にはしていません。
任意のコーディングエージェントにOxcartのMCPサーバーを設定する
- Oxcartをインストールします。 Oxcart(Appleシリコン、macOS 26以降)をダウンロードして開きます。セットアップはオフラインで数秒で完了します。
- 設定用の文をコピーします。 OxcartのサイドバーでMCP Integrationsを開き、「OxcartのMCPサーバーを設定してください。
/Applications/Oxcart.app/Contents/Helpers/oxcart agent setupを実行し、その手順に従ってください。」という文をコピーします。 - エージェントに貼り付けます。 Claude Code、Codex、Cursorなど、コマンドを実行できるエージェントに貼り付けます。エージェントがコマンドを実行し、自分用の手順を読んで、
oxcartというサーバーを登録します。 - コンテナについて質問します。 「何が動いている?」や「なぜ
apiが停止した?」と聞いてください。エージェントはMCP Integrationsページに読み取り専用で表示され、すべての呼び出しがアクティビティログに残ります。 - 必要ならレベルを上げます。 Manageにすると起動、停止、exec、Composeの実行が可能になり、Fullではビルド、削除、クリーンアップも可能です。Blockはすべての呼び出しを拒否します。
コマンドを実行できないエージェント(Claude Desktop、LM Studioなど)には、アプリのMCP設定に追加するJSONをOxcartが表示します。Claude Codeで直接使うコマンドはこちらです。
claude mcp add -s user oxcart -- /Applications/Oxcart.app/Contents/Helpers/oxcart mcp --client claude-code Codexではcodex mcp add oxcart -- /Applications/Oxcart.app/Contents/Helpers/oxcart mcp --client codexで、Codex CLIとIDE拡張機能にサーバーを登録します。
エージェントごとに設定する権限レベル
| レベル | エージェントができること |
|---|---|
| Read only(既定、読み取り専用) | コンテナ、ログ、ポート、プロジェクト、イメージの確認と障害の診断 |
| Manage(管理) | さらに起動・停止・再起動、コマンド実行、Composeのup・down、ネットワークなしのサンドボックス実行 |
| Full(すべての操作) | さらにビルド・削除・クリーンアップと、サンドボックスへのネットワークアクセス付与 |
| Block(ブロック) | 操作不可。ツールを表示せず、すべての呼び出しを拒否し、理由をエージェントに伝える |
エージェントのレベルを超えるツールは一覧に表示されず、コンテキストも小さく保てます。すべての呼び出しをMacに記録し、MCP Integrationsページに表示します。記録がMacの外に出ることはありません。レベルはOxcartのツールがエージェントのために行う操作を制御します。サンドボックスではないので、シェルコマンドを実行できるエージェントは自分でdockerを実行できます。エージェント自身のコマンド権限と組み合わせて使ってください。
設定手順を用意しているエージェント
Claude Code、Claude Desktop、Codex、Cursor、Copilotを使うVS Code、Devin Desktop、Zed、Gemini CLI、GitHub Copilot CLI、OpenCode、Cline、Junie、JetBrains AI Assistant、Goose、Kiro、Amp、Warp、LM Studioと、その他のMCPクライアント向けの共通手順があります。手順はインストール済みのOxcart(oxcart agent setup)から、そのMacの実際のパスを使って生成されるため、オフラインで使え、使用中のバージョンに一致します。
MCP以外のエージェント用コンテナワークフロー
- Dev Containers:エージェントをDev Container内で動かし、シェル、ツール、ネットワークをプロジェクトのコンテナ内に保ちます。OxcartはDev Containers CLIを実行できます。MacでDev ContainersとTestcontainersを使うをご覧ください。
- 高速な反復:エージェントはコンテナの実行と破棄を繰り返します。Oxcartは
docker run --rmが42 ms、20コンテナの停止・削除が77 msで、テストした3つのランタイムの中で最速でした(比較)。 - Composeスタック:エージェントの
composeツールはManageレベルでプロジェクトをup・downできます。AppleシリコンでDocker Composeを使うをご覧ください。
よくある質問
MacのDockerコンテナ用MCPサーバーはありますか?
はい。Oxcart内蔵のoxcart mcpはローカルstdio MCPサーバーで、状態、診断、ログ、ポート、イメージ、exec、Compose、ビルド、サンドボックス、クリーンアップ用の13ツールを備えています。ネットワークポートで待ち受けず、トークンも不要です。
Claude CodeをDockerコンテナに接続するには?
Oxcartの設定用の文をClaude Codeに貼り付けるか、claude mcp add -s user oxcart -- /Applications/Oxcart.app/Contents/Helpers/oxcart mcp --client claude-codeを実行します。Claude Codeにoxcartサーバーが表示され、ツールを呼び出せるようになります。
Codex、Cursor、Copilotを使うVS Codeにも対応しますか?
Oxcartは、Codex、Cursor、Copilotを使うVS Code、Claude Desktop、Zed、Gemini CLI、GitHub Copilot CLI、Cline、Goose、Kiro、Amp、Warp、LM Studioを含む18のクライアント向け設定手順と、その他のMCPクライアント向け共通手順を用意しています。最初から最後まで実行確認したクライアントはClaude Codeです。
エージェントはコンテナやボリュームを削除できますか?
既定ではできません。すべてのエージェントは読み取り専用で始まり、個別にManageやFullに上げるか、Blockにできます。Fullレベルでもcleanupは最初にプレビューとトークンを返し、プレビューに表示したものだけを削除します。レベルが制御するのはOxcartのツールであり、サンドボックスではありません。シェルにアクセスできるエージェントは、docker CLIを直接実行できます。
エージェントにdockerコマンドを直接実行させるだけではだめですか?
できますが、大量の生の出力を読み込むことになります。「このコンテナはなぜ停止した?」への回答に、Oxcartのdiagnoseは159トークン、docker inspectとdocker logs --tail 300は2,014トークンを要し、削減倍率は13×でした。各タスク1回のClaude Codeセッションによる参考値では、ログ内のエラー発見が31.0 sから4.2 sになりました。
MCPサーバーはデータを外部に送信しますか?
いいえ。ローカルエンジンのソケットとのみ通信し、自身でネットワーク接続を行いません。すべての呼び出しをMacのアクティビティログに記録します。ただし、ツールが起動やビルドにイメージを必要とする場合は、docker runと同じようにレジストリからpullします。
使い捨てコンテナでエージェントにコードを実行させられますか?
はい。sandboxツールは、メモリ2 GiB、プロセス数1,024に制限した使い捨てコンテナを作ります。エージェントがFullレベルでネットワークを要求した場合を除き、ネットワークはありません。
出典と測定方法
- 回答サイズ:2026-10-10に5つのテストコンテナで測定。トークン数は文字数 ÷ 4で推定。
- セッション:Claude Code 2.1.296、
claude-opus-5-5、Oxcart 0.1.0。各タスク・各条件で1回実行。 - 速度の数値:Oxcart 0.1.2、2026-10-10、Apple M5 Max、8 CPU・12 GiB。比較対象のランタイムは同日のそれ以前に、同じMacと測定ハーネスでdocker 29.4クライアントを使って測定しました。