Docker MCP Gatewayとは|docker mcp gateway runでMCPサーバーを安全に集約する使い方【2026年版】
Docker MCP Gatewayは、複数のMCP(Model Context Protocol)サーバーをコンテナとして起動し、1つの窓口に束ねてAIクライアントへ渡すDocker公式のオープンソースゲートウェイです。役割は「エージェント同士を仲介する通信ハブ」ではなく、信頼できるMCPサーバーを安全に集約・実行するプロキシである点を押さえると全体像がつかめます。本記事はdocker mcp gateway runの使い方、Docker MCP Toolkit・Catalogとの関係、認証やシークレット・インターセプターによる安全設計、そしてIBMやCloudflareなど他社が名乗る「MCP Gateway」との違いまでを、公式ドキュメントとリポジトリの一次情報で整理します。
まとめ:Docker MCP Gatewayの要点
- 正体:Docker公式のOSS(リポジトリ
docker/mcp-gateway、MITライセンス、2025年7月9日にOSS化)。docker mcpCLIプラグインとして提供され、Docker Desktopの「MCP Toolkit」の中核でもある。 - やること:Catalogで選んだMCPサーバーを個別のコンテナで起動し、1つのエンドポイント(既定はstdio)に集約。クライアントは接続先を1本にまとめられる。
- 起動:
docker mcp catalog show→docker mcp secret set→docker mcp server enable→docker mcp gateway runの順で最短起動できる。 - 安全設計:シークレット遮断(
--block-secrets、既定有効)、イメージ署名検証(--verify-signatures)、呼び出しログ(--log-calls、既定有効)、CPU/メモリ・ネットワーク制限をコンテナ単位で強制。 - 注意:HTTP/WebSocket/gRPCで独自エージェントを配線する製品ではない。同名の他社「MCP Gateway」(IBM・Cloudflare等)とは別物なので混同しない。
Docker MCP Gatewayの正体|MCPサーバー集約プロキシ
Docker MCP Gatewayは、Anthropicが策定したMCPに準拠したサーバー群を、Dockerコンテナとして起動・集約するためのゲートウェイです。GitHubのdocker/mcp-gatewayで公開され、ライセンスはMIT、Docker社が2025年7月9日にオープンソース化しました。実体は独立したサーバーソフトではなく、docker mcpというDocker CLIプラグインのサブコマンド群で、その中のdocker mcp gateway runがゲートウェイ本体を起動します。執筆時点(2026年7月)の最新はv0.43.3系ですが、更新が速いため最新版はリポジトリのリリースで確認してください。
MCPサーバーを1つのエンドポイントに集約する仕組み
AIクライアント(Claude DesktopやCursorなど)が複数のMCPサーバーを使う場合、本来はサーバーごとに接続設定・認証情報・起動管理が必要になります。Gatewayはこの前段に立ち、有効化されたサーバーを要求が来たタイミングでコンテナとして起動し、必要な認証情報を注入し、応答をクライアントへ中継します。クライアントから見える接続先はGatewayの1本だけになり、サーバーの追加・削除は設定変更で完結します。旧来の記事が説明していた「エージェント間をHTTP/WebSocket/gRPCで仲介するメッセージブローカー」ではなく、あくまでMCPサーバーの実行と束ね役に徹するのが設計思想です。
MCP Toolkit・MCP Catalog・MCP Gatewayの役割分担
Dockerの「MCP」まわりは3つの部品で構成され、混同しやすいので役割を分けて理解します。MCP Catalogは、検証済みのMCPサーバーイメージを配布するカタログ(Docker Hubのhub.docker.com/mcp、300以上のサーバーを収録)。MCP Toolkitは、Docker Desktopに組み込まれたGUI/機能で、Catalogからのサーバー導入やクライアント接続をワンクリックで扱えます。MCP Gatewayは、それらのサーバーを実際に起動・集約・保護する実行基盤です。Docker Desktop 4.42以降ではMCP Toolkitが標準搭載され、Gatewayはバックグラウンドで自動起動します。
docker mcp gateway runの導入と起動手順
導入経路はDocker Desktopを使う方法と、Docker Engine単体でCLIプラグインを入れる方法の2通りです。手元でAIクライアントを試すならDesktop、CIやサーバー上で動かすなら単体導入が向きます。
Docker Desktopで有効化する
Docker Desktop 4.42以降ならdocker mcpプラグインは同梱済みです。設定の「MCP Toolkit」を有効化すると、Catalogの参照・サーバーの有効化・クライアント接続がGUIで行え、Gatewayは自動で常駐します。まず動かして挙動を確認したい場合はこの経路が最短です。
Docker Engine単体でCLIプラグインを導入する
Desktopを使わない環境では、リポジトリからビルドして~/.docker/cli-plugins/に配置します。Desktop外で使うため、プロファイル機能の有効化コマンドを併用します。
git clone https://github.com/docker/mcp-gateway.git
cd mcp-gateway
mkdir -p "$HOME/.docker/cli-plugins/"
make docker-mcp
docker mcp --help
サーバー有効化からゲートウェイ起動までの最短手順
Catalogで使えるサーバーを確認し、必要なAPIキーをシークレットとして登録してから、対象サーバーを有効化してGatewayを起動します。シークレットのキー名(下例のbrave.api_key)は各サーバーがCatalog側で定義するため、別のサーバーではそのサーバーが要求する名前に置き換えます。シークレットは環境変数ではなくDocker管理下に保存され、平文でコマンド履歴に残さない運用が推奨されます。
docker mcp catalog show
docker mcp secret set 'brave.api_key=xxxxxxxxxxxx'
docker mcp server enable brave duckduckgo
docker mcp gateway run
引数なしのdocker mcp gateway runは標準入出力(stdio)で待ち受けます。特定のサーバーやツールだけを露出したい場合は--serversや--toolsで絞り込みます。
クライアント連携とトランスポート(stdio/SSE/streaming)
Gatewayの既定トランスポートはstdioで、Claude DesktopやCursorのようにローカルで標準入出力接続するクライアントに最適です。ネットワーク越しに接続する場合は--portでポートを開き、--transportにsseまたはstreamingを指定します。トランスポートの違いはMCP側の仕様に依存するため、Streamable HTTPとSSEの違いを解説した記事もあわせて参照すると、どの方式でクライアントを繋ぐか判断しやすくなります。
docker mcp gateway run --transport=sse --port=8080 --servers=brave,duckduckgo
Docker DesktopのMCP Toolkitでは、Clientsタブから対応クライアントへワンクリックで接続できます。CLIで接続先を確認するにはdocker mcp client lsを使い、対象クライアントへ接続を割り当てます。どの方式でも、クライアント側の設定はGatewayの1エンドポイントを指すだけで済む点が運用上の利点です。
MCP Catalogによるサーバー選定
Catalogには300を超える検証済みMCPサーバーが、バージョン・提供元(provenance)・セキュリティ更新付きのコンテナイメージとして並びます。GitHubやフィルターシステム、Web検索などの定番サーバーはここからdocker mcp server enableで追加できます。たとえばGitHub操作用サーバーの使い分けはGitHub Remote MCP Serverの接続手順を解説した記事が参考になります。
自社ツールをMCPサーバー化してCatalog経由で配りたい場合は、独自カタログを作成してサーバー参照を登録します。サーバーの参照方式はCatalog(catalog://)のほか、任意のOCIイメージ(docker://)やMCPレジストリのURLも指定できます。ゼロからMCPサーバーを書く場合の実装は、PythonでMCPサーバーを構築するFastMCPの使い方が実務の入口になります。カタログ選定では「イメージが署名・検証済みか」「更新頻度」「必要な権限の広さ」を判断軸にし、便利さだけで無検証サーバーを足さないことが後述の安全設計につながります。
セキュリティ設計(認証・シークレット・インターセプター・分離)
MCPサーバーはファイルやAPI、社内システムに触れるため、Gatewayの価値の中心は利便性より安全な実行境界にあります。認証・秘匿・分離の3層を、それぞれ具体的なフラグで押さえていきます。
シークレット管理と漏えい遮断
APIキーなどはdocker mcp secret setでDocker管理下(既定はdocker-desktopのシークレットストア)に保存し、環境変数として渡さない設計が基本です。さらにGatewayは--block-secrets(既定で有効)により、ツールへ送受信するペイロードを走査し、トークンや資格情報らしき文字列を検出・遮断します。保存場所を変える場合は--secretsで探索パスを指定します。
インターセプターと署名検証
インターセプターは、ツール呼び出しの前後に処理を差し込む仕組みで、監査や制御の要になります。--verify-signaturesを付けるとサーバーイメージの署名を検証し、素性の確認できないイメージの実行を防げます。--log-calls(既定で有効)は全ツール呼び出しを記録し、監査証跡を残します。任意の処理を挟むには--interceptorをwhen:type:path形式で指定します。無検証のMCPサーバーがプロンプトインジェクションの経路になり得る点は、Playwright MCPのセキュリティとCVE対策の記事が示す通りで、署名検証とログはその一次防衛線です。
コンテナ分離とリソース制限
各MCPサーバーは隔離されたコンテナで、権限・ネットワーク・リソースを制限して動きます。--cpus(既定1)と--memory(既定2Gb)でサーバーごとの使用量を上限化し、--block-networkで許可されていない外部通信を遮断できます。ステートフルなサーバーをGatewayが止まるまで常駐させたい場合は--long-livedを使います。これらを組み合わせ、たとえば署名検証・シークレット遮断・呼び出しログを同時に効かせた起動は次のように書きます。
docker mcp gateway run --verify-signatures --log-calls --block-secrets --cpus=1 --memory=2Gb
他社の「MCP Gateway」との違い(Docker/IBM/Cloudflare系)
検索では「ibm mcp gateway」「gcp mcp gateway」「cloudflare mcp gateway」「zscaler mcp gateway」も同じ画面に混ざります。これらは名前が同じでも設計思想が異なるため、選定前に区別が必要です。Docker MCP Gatewayは、ローカル/自ホストでMCPサーバーをコンテナ集約する実行基盤で、開発機やCIでの利用と相性が良い。一方IBMのMCP Gateway(Context Forge)は、企業内の多数のMCPサーバーを登録・仲介するレジストリ寄りの中央管理サーバーです。CloudflareはサーバーレスでリモートMCPサーバーをホスティング・公開する方向で、用途が異なります(構築手順はCloudflareでMCPサーバーを構築・公開する方法を参照)。
選び方はシンプルで、「ローカルや自前環境でコンテナごとに隔離しつつ既存のDockerワークフローに乗せたい」ならDocker、「組織横断で多数のMCPサーバーを一元登録・ガバナンスしたい」ならIBMのような中央レジストリ型、「常時稼働のリモート公開が要る」ならCloudflareのようなホスティング型、という軸で分けると迷いません。逆に、サーバーレスで常時稼働のリモート公開が要件ならDocker MCP Gatewayは不向きで、Cloudflare型を選ぶべきです。名前が一致してもドキュメントを取り違えないよう、公式リポジトリ(github.com/docker/mcp-gateway)で対象を確認してから読み進めるのが確実です。
よくある質問
Docker MCP GatewayはGitHubで公開されていますか?
はい。docker/mcp-gatewayとしてGitHubで公開され、ライセンスはMITです。Docker Desktopに同梱されるdocker mcpプラグインの実体もこのリポジトリで、Desktopを使わない環境ではソースからビルドして~/.docker/cli-plugins/に配置できます。
docker mcp gateway runは何をするコマンドですか?
有効化済みのMCPサーバーを集約するゲートウェイを起動します。既定ではstdioで待ち受け、--transport=sseや--transport=streamingと--portを組み合わせるとネットワーク越しの接続に切り替わります。--serversや--toolsで露出範囲を絞れます。
Docker MCP ToolkitとGatewayはどう違いますか?
MCP ToolkitはDocker Desktopに組み込まれたUI/機能で、Catalogからのサーバー導入やクライアントごとの接続を扱います。Gatewayはその裏で実際にサーバーを起動・集約・保護する実行基盤です。Desktop利用時はToolkitがGatewayを自動起動します。
認証やシークレットはどう扱われますか?
APIキーはdocker mcp secret setでDocker管理下に保存し、環境変数として渡しません。加えて--block-secrets(既定有効)が送受信ペイロード中の秘匿情報を遮断し、--verify-signaturesでイメージの署名検証、--log-callsで呼び出しログを取得できます。
MCPサーバーはどこから選びますか?
Docker MCP Catalog(hub.docker.com/mcp)から選びます。300以上の検証済みサーバーがバージョンと提供元付きで並び、docker mcp catalog showで一覧、docker mcp server enableで有効化します。自作サーバーは独自カタログやOCIイメージ参照で組み込めます。