Docker MCPを使ったClaude Desktop連携設定

AI開発の世界で注目されているModel Context Protocol(MCP)を、Dockerを活用してより安全かつ簡単に利用する方法のメモ。 設定時にはまった内容も含みます。

docker with claude desktop

Docker MCPとは何か?

Model Context Protocol(MCP)の基本

Model Context Protocol(MCP)は、Anthropic社が開発したオープンスタンダードで、AI アシスタントと外部データソースやツールを接続するための標準化されたプロトコルです。MCPにより、AI アプリケーションは外部ソースからデータを取得し、第三者サービスとの操作を実行できるようになります。

MCPは以下の要素から構成されています:

  • MCPクライアント: Claude Desktop AppなどのLLMベースのアプリケーションに組み込まれる
  • MCPサーバー: 外部システムとの接続を提供し、特定の機能を実装する

Docker MCPで解決できること

従来のMCP実装では、以下のような課題がありました:

  • 環境競合: MCP サーバーのインストールで、Node.js、Python などの特定バージョンが必要で、既存環境と競合する可能性
  • ホスト隔離の欠如: MCP サーバーがホスト上で実行され、すべてのホストファイルとリソースにアクセス可能
  • 複雑なセットアップ: ユーザーがすべてのコードをダウンロードし、環境を設定する必要がある
  • クロスプラットフォームの課題: 異なるアーキテクチャ(x86 vs ARM、Windows vs Mac)での一貫した実行が困難

Docker MCPは、これらの課題をコンテナ技術で解決します:

  • 環境分離: 各 MCP サーバーが独立したコンテナで実行される
  • 一貫性: すべてのプラットフォームで予測可能な動作
  • セキュリティ: サンドボックス化された実行環境
  • 簡単なデプロイ: ワンクリックでのインストールと設定

Docker MCP Catalog と Toolkit

Docker MCP Catalog

Docker MCP Catalogは、Docker Hub に統合された信頼できるMCPサーバーのレジストリです。2025年5月現在、以下の特徴があります:

  • 100以上のMCPサーバー: Stripe、Elastic、Neo4j、New Relicなどの主要企業が提供
  • 検証済みツール: 出版社検証、バージョン管理、キュレーションされたコレクション
  • Docker Hub統合: mcp/ 名前空間でアクセス可能

主なMCPサーバー例: - Filesystem: ローカルファイルシステムへの安全なアクセス - GitHub: リポジトリ管理とGitHub API統合 - Puppeteer: Webページスクリーンショットとブラウザ操作 - Google Calendar: Googleカレンダーイベント管理 - Postgres: PostgreSQLデータベース操作

Docker MCP Toolkit

Docker MCP Toolkitは、MCPサーバーの設定、管理、実行を可能にするゲートウェイです:

  • クロスLLM互換性: Claude Desktop、Cursor、Continue.dev、Gordonで即座に動作
  • 統合ツール検出: Docker Desktop内でMCPサーバーを直接参照・起動
  • ゼロ手動設定: 依存関係管理、ランタイム設定、サーバー設定が不要
  • セキュリティ: CPUを1コア、メモリを2GBに制限、デフォルトでファイルシステムアクセス無し

Windowsでの設定方法

事前準備

  1. Docker Desktopのインストール

    • 最新版のDocker Desktop for Windowsをダウンロード・インストール
    • 推奨バージョン: 4.43.0以降
  2. Claude Desktopのインストール

    • Anthropic公式サイトからClaude for Desktopをダウンロード
    • Windowsバージョンをインストール

方法1: Docker MCP Toolkitを使用(推奨)

ステップ1: MCP Toolkitの有効化

1. Docker Desktopの設定を開く
2. 「Beta features」を選択
3. 「Enable Docker MCP Toolkit」を有効化
4. 「Apply」をクリック

ステップ2: MCPサーバーの追加

  1. Docker Desktopで「MCP Toolkit」を選択
  2. 「Catalog」タブを開く
  3. 使用したいMCPサーバーを選択(例:GitHub Official、Puppeteer)
  4. プラスアイコンをクリックして追加
  5. 必要に応じて「Config」タブで設定を行う

ステップ3: Claude Desktopとの接続

  1. Docker MCP Toolkitの「Clients」タブを選択
  2. 「Claude Desktop」の横の「Connect」ボタンをクリック
  3. Claude Desktopを再起動

これで、Claude Desktopの設定ファイル(claude_desktop_config.json)に以下の設定が自動追加されます:

{
  "mcpServers": {
    "MCP_DOCKER": {
      "command": "docker",
      "args": [
        "mcp",
        "gateway",
        "run"
      ],
      "env": {
        "LOCALAPPDATA": "C:\\Users\\ユーザー名\\AppData\\Local",
        "ProgramFiles": "C:\\Program Files"
      }
    }
  }
}

Claude Desktopとの接続

接続確認

Claude Desktopを再起動後、以下を確認してください:

  1. MCPアイコンの表示: チャット入力欄の右下にハンマーアイコンが表示される
  2. 開発者設定での確認:
    • 設定 → Developer タブを開く
    • MCPサーバーが「running」状態になっている

権限の確認

MCPツールを初回使用時、Claude は権限の確認を求めます:

ファイルシステム(ローカル)からツールを許可する
ファイルシステムから write_file を実行

使用前に各アクションを慎重に確認してから許可してください。

実際の使用例

例1: ファイル操作

プロンプト: 
C:\Users\username\Documents\test.txt に「Hello, Docker MCP!」と記載したテキストファイルを作成してください。

Claude は Filesystem MCP サーバーを使用してファイルを作成します。

例2: Webスクリーンショット

Puppeteer MCPサーバーを有効にした場合:

プロンプト:
docs.docker.com のスクリーンショットを撮影して、色を反転させてください。

例3: GitHub操作

GitHub MCP サーバーを設定した場合:

プロンプト:
私のGitHubリポジトリ一覧を表示してください。

注意: GitHub MCPサーバーを使用するには、Personal Access Token(PAT)の設定が必要です。

注意点とベストプラクティス

セキュリティ上の注意点

  1. 信頼できるソースのみ使用

    • Docker Hub の mcp/ 名前空間の検証済みイメージを使用
    • 不明なソースのMCPサーバーは避ける
  2. ファイルシステムアクセスの制限

    • 必要最小限のディレクトリのみアクセス許可
    • 機密データが含まれるフォルダは除外
  3. 定期的な更新

    • Docker MCP Toolkitとサーバーイメージを定期更新
    • セキュリティパッチの適用

パフォーマンス最適化

  1. リソース管理

    • 不要なMCPサーバーは無効化
    • Docker Desktop のリソース設定を適切に調整
  2. ネットワーク設定

    • プロキシ環境では適切な設定が必要
    • ファイアウォール設定の確認

トラブルシューティング

一般的な問題

  1. MCPサーバーが認識されない

    • Claude Desktop の完全な再起動を実行
    • タスクマネージャーでClaude プロセスが完全に終了していることを確認
  2. 設定ファイルが反映されない

    • JSON構文エラーの確認
    • パスの記述方法(Windows では \\ を使用)
  3. Docker接続エラー

    • Docker Desktop が起動していることを確認
    • Docker サービスの状態を確認
    • Windows管理者権限でDockerを実行

特定のエラーケース

1. ProgramDataエラー

ログに以下のようなエラーが表示される場合:

panic: unable to get 'ProgramData'

これはDocker MCP Gatewayが環境変数にアクセスできない問題です。解決方法(実証済み)

Claude Desktopの設定ファイル(claude_desktop_config.json)で、環境変数を明示的に指定:

{
  "mcpServers": {
    "MCP_DOCKER": {
      "command": "docker",
      "args": [
        "mcp",
        "gateway",
        "run"
      ],
      "env": {
        "LOCALAPPDATA": "C:\\Users\\ユーザー名\\AppData\\Local",
        "ProgramFiles": "C:\\Program Files",
        "ProgramData": "C:\\ProgramData"
      }
    }
  }
}

重要: ユーザー名の部分を実際のWindowsユーザー名に置き換えてください。

この解決策は、Docker for Windows GitHub Issue #14860 で報告・解決された実際の問題です。

ログの確認

Windows環境でのログファイル場所:

%APPDATA%\Claude\logs\mcp*.log

PowerShellでログを確認:

Get-Content -Path "$env:APPDATA\Claude\logs\mcp*.log" -Tail 20 -Wait

現在の既知の問題と解決策(2025年7月時点)

  1. Docker MCP Gateway ProgramDataエラー解決済み

    • 症状: panic: unable to get 'ProgramData'エラーで接続失敗
    • 原因: Docker MCP GatewayがWindows環境変数にアクセスできない
    • 解決策: Claude Desktop設定で環境変数を明示的に指定(上記参照)
    • 参考: Docker for Windows Issue #14860
  2. MCPサーバーの接続タイムアウト

    • 一部のMCPサーバーで初回接続時にタイムアウトが発生
    • 回避策:Claude Desktopの再起動を複数回試行
  3. Claude Pro推奨

    • 無料版では利用制限が厳しく、実用的な作業には不向き
    • Sonnet 3.5 は特に制限が厳しい
  4. MCPサーバーの制限

    • 一部のMCPサーバーはAPIキーやトークンが必要
    • Windows特有の設定が必要な場合がある
  5. ネットワーク依存

    • インターネット接続が必要なMCPサーバーが多い
    • オフライン環境での制限

まとめ

Docker MCPは、従来のMCP実装の課題を解決する画期的なソリューションです。特にWindows環境では、Docker MCP Toolkitを使用することで、複雑な環境設定を回避し、安全で一貫したMCPサーバーの実行が可能になります。

Claude Desktopとの統合により、AIアシスタントの能力を大幅に拡張でき、ファイル操作、Web操作、データベース操作、API統合など、様々なタスクを自動化できます。

今後、Docker MCP Catalogには更に多くのMCPサーバーが追加される予定で、AI開発のエコシステムは急速に進化しています。セキュリティベストプラクティスに従いながら、この革新的な技術を活用してください。


次のステップ - Docker MCP Toolkitで様々なMCPサーバーを試す - 独自のMCPサーバーの開発を検討 - セキュリティ設定の見直しと最適化

参考にした情報源

公式ドキュメント

Docker公式ブログ

Anthropic公式

GitHub リポジトリ・Issues

技術記事・チュートリアル

日本語記事

その他の参考記事