Docker Desktop MCPサーバーを使ってみる
はじめに
DockerDesktopを開いたら、MCP toolkit
というメニューが追加されていることに気が付きました。2025年4月22日に発表されたそうで、もはや2ヶ月立つのですね。
今回は改めてMCPのお勉強ということで、Docker Desktop MCPサーバーを使ってみます。
MCPとは
まずは前提知識として以下の記事を読みました。ざっくりというと LLMが情報をやりとりをする時のプロトコル仕様
ですね。
ざっくりと、MCPホスト
、MCPホストに内包され使用されるMCPクライアント
、MCPクライアントと直接やりとりするMCPサーバ
の3つの役割があるようです。
以下の流れで処理をするそうです。初期通信をして、機能情報を取得して、機能を使う。というかなりシンプルな作りですね。
ここまで見てきて難しくはなさそうですね。では実際Docker Desktop MCPサーバーで何ができるのか、公式の情報を読んでいきます。
Docker Desktop MCPサーバー
MCP Toolkit
により、コンテナ化されたMCPサーバ
とAIエージェントへの接続
のセットアップ
管理
実行
を一連の流れで実施できるそうです。
Docker Desktop MCPサーバーの特徴
-
様々なLLMに対応:
Claude Desktop
,Cursor
,Continue.dev
,Gordon
と連携ができます。Gordon
というのはDocker用のAIアシスタントだそうです。 -
統合ツール検出:
Docker Desktop
のDockerMCP
カタログから 直接MCPサーバーを探して起動できます。 - マニュアル無しのセットアップ: 依存関係の管理や設定は必要ありません。
- 複数のMCPサーバーのハブとして動作し、クライアントの接続先として動作します。
MCPツールキットはどの様に動作するか
MCPには2つのコンセプト MCPサーバ
と MCPクライアント
があります。
-
MCPクライアント
はClaude Desktop App
のようなLLMベースのアプリケーションに組み込まれ、リソースとアクションを要求します -
MCPサーバ
はMCPクライアント
によって起動され、ユーザーの指示に応じてリソースとアクションを提供します。
Dockerは MCPサーバ
を含めた開発、パッケージング、アプリの配布、を標準化します。 MCPサーバ
を コンテナとしてパッケージングすることによって環境差異の問題をなくします。 依存関係の管理や設定なしにコンテナを直接起動できます。 MCPサーバ
によってツールが同じコンテナで動作するかサイドカーコンテナで動作するか異なります。
セキュリティ
Docker MCP Toolkit
は受動的・能動的な方法を組み合わせて、安全なサーバーの動作を保証します。
受動的なセキュリティ
イメージに署名して証明する: カタログに掲載されている mcp/
以下の全てのサーバーイメージはDockerによってビルドされ、そのソースコードと完全性が確認されます。全てのイメージはSBOM(Software Bill of Materials)を含み、透明性を持っています。
能動的なセキュリティ
実行時のセキュリティはリソースとアクションの制限によって強制されます。
- CPU割当: MCPツールは各々のコンテナで動作します。CPUは1つに制限され、コンテナがCPUを消費することを防ぎます。
- メモリ割当: MCPツールのコンテナではメモリは2GBに制限されます。
- ファイルシステムアクセス: デフォルトでMCPサーバーはホストのファイルシステムにアクセスできず、ユーザによる明示的な許可が必要です。
- ツールのリクエスト傍受: シークレット等の秘匿情報を含むツールへのリクエストレスポンスはブロックされます。
Docker MCP Toolkitを有効化する
- Docker Desktopの設定から Beta features を選択します
- Enable Docker MCP Toolkit を選択します
-
Apply & restart を選択します
MCPサーバーをインストールする
- Docker Desktopの MCP Toolkit を選択し Catalog タブを選択します。その際以下の情報が見られます。
- ツール名と説明
- パートナー/パブリッシャー
- サーバーが提供する呼び出し可能なツール
- MCPサーバーを選択し Plus アイコンを選択します。
- オプション設定: サーバーによっては設定が必要なものがあります。Config タブを選択し、MCPサーバのプロバイダのレポジトリに記載された説明に従って設定します。
GitHub MCP サーバーを使ってみる
Ask GordonにGithubアカウントと遣り取りをする許可をしてみます。
0. Ask Gordonを有効化します。チェックを入れて Accept and enable
-> Apply and restart
します。
-
MCP Toolkit
のメニューからCatalog
タブを選択肢GitHub Official
サーバーを探し追加します。
-
Githubアカウントから払い出したシークレットを設定します
以下のような設定でトークンを払い出しました。
設定します。
-
MCP Toolkit
のメニューからClients
タブを選択し、Gordon
を接続します。
-
Ask Gordon
を開き Github アカウントに関する質問をしてみます。
GitHubのハンドルネームが正しく取得できました。
Details
を開いてみると、get_me
ツールを呼び出したことと、その理由が確認できました。質問を理解し、適切なツール(get_me
)を呼び出して情報を取得していることが確認できました。
MCPクライアントをインストールする
MCPサーバーをインストールすると、MCPツールキットにクライアントを追加できます。クライアントはインストールされたMCPサーバーとやり取りできるようになり、MCPツールキットはゲートウェイとして機能するようになります。
公式では Clients
タブからクライアントに接続しましょう。という説明があるのですが、選択できるクライアントが限定されています。私は普段 Cline
を使っているので Cline
でやってみます。github-officials
につなぐ クライアントの設定は以下に記載がありました。
{
"mcpServers": {
"github-official": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN",
"mcp/github-mcp-server"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
}
}
}
}
最初に何もせずに What's my GitHub handle?
と聞いてみます。
GitHubのハンドル名は何ですか?
と回答が来ました。.clinerules
で日本語回答を依頼しているので、翻訳して満足してしまったのでしょうか。
次にMCPサーバーの設定をします。歯車マークから設定に入ります。
Configure MCP Servers
を選択します。
jsonファイルが開くので、先ほどの設定をコピペします。<YOUR_TOKEN> の部分は自分のトークンに置き換えてください。
改めて What's my GitHub handle?
と聞いてみると、ちゃんとハンドルネームを返してくれました!
おわりに
Docker Desktop MCPサーバーを使うことができました。MCPサーバー自体使ったことなかったので勉強になりました。Clineから直接Github Officialに接続できるのですが、今回はDocker Desktop MCPサーバーをゲートウェイとして利用することで、通信ログの一元的な集約が可能となり、セキュリティの向上に寄与すると考えられます。これにより、異常検知や監査証跡の確保が容易になります。また、MCPサーバーの設定をjsonファイルで一元管理できる点も利便性が高いです。
次はlocalにカスタムのMCPサーバーを立てて、MCPクライアントから接続することで、特定の業務要件に合わせたカスタマイズや既存システムとの連携の可能性を探ってみたいと思います。
参考書籍
![]() |
![]() |
Discussion