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 DesktopDockerMCP カタログから 直接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を有効化する

  1. Docker Desktopの設定から Beta features を選択します
  2. Enable Docker MCP Toolkit を選択します
  3. Apply & restart を選択します

MCPサーバーをインストールする

  1. Docker Desktopの MCP Toolkit を選択し Catalog タブを選択します。その際以下の情報が見られます。
    • ツール名と説明
    • パートナー/パブリッシャー
    • サーバーが提供する呼び出し可能なツール
  2. MCPサーバーを選択し Plus アイコンを選択します。
  3. オプション設定: サーバーによっては設定が必要なものがあります。Config タブを選択し、MCPサーバのプロバイダのレポジトリに記載された説明に従って設定します。

GitHub MCP サーバーを使ってみる

Ask GordonにGithubアカウントと遣り取りをする許可をしてみます。
0. Ask Gordonを有効化します。チェックを入れて Accept and enable -> Apply and restart します。

  1. MCP Toolkit のメニューから Catalog タブを選択肢 GitHub Official サーバーを探し追加します。

  2. Githubアカウントから払い出したシークレットを設定します
    以下のような設定でトークンを払い出しました。

    設定します。

  3. MCP Toolkit のメニューから Clients タブを選択し、Gordon を接続します。

  4. 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クライアントから接続することで、特定の業務要件に合わせたカスタマイズや既存システムとの連携の可能性を探ってみたいと思います。

参考書籍

やさしいMCP入門
MCPサーバー構築と運用:生成AIのための文脈共有基盤を作る

Discussion