1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Docker × Claude】環境汚染ゼロでAIエージェントを動かす「Docker MCP」入門

Posted at

はじめに

最近、Anthropicが発表した MCP (Model Context Protocol) が話題ですね。
Claude DesktopなどのAIクライアントが、ローカルのツールやデータベースに標準的な方法で接続できるプロトコルです。

しかし、MCPサーバー(ツール側)を試そうとすると、こんな悩みに直面しませんか?

  • 「Pythonのバージョンが合わない...」
  • 「依存ライブラリを入れたらローカル環境が汚れた...」
  • 「AIにローカルコマンドを実行させるのがセキュリティ的に怖い...」

そこで登場するのが Docker です。
Docker社もMCPを推進しており、MCPサーバーをコンテナ化して動かすアプローチが推奨され始めています。

本記事では、Dockerを使って、環境を汚さずに安全にMCPサーバーを動かす方法を解説します。

DockerでMCPを動かすメリット

通常、MCPサーバーはローカルのプロセスとして uv runnpm start で起動しますが、Dockerを使うと以下のメリットがあります。

  1. 環境分離: ローカルにPythonやNode.jsの特定バージョンを入れる必要がない。
  2. セキュリティ: AIが実行できる範囲をコンテナ内に閉じ込められる(ファイルアクセス制限など)。
  3. 配布が楽: docker pull するだけでツールが使える。

前提条件

  • Docker Desktopがインストールされていること
  • Claude Desktopアプリがインストールされていること

手順:Docker版 MCPサーバーの設定

Claude Desktopは設定ファイル (claude_desktop_config.json) にコマンドを記述することでMCPサーバーと通信します。
ここで docker run コマンドを指定するのがポイントです。

1. 設定ファイルを開く

以下のパスにある設定ファイルをエディタで開きます。

  • Win: %APPDATA%\Claude\claude_desktop_config.json
  • Mac: ~/Library/Application Support/Claude/claude_desktop_config.json

2. Docker経由で実行する設定を記述

例として、SQLiteデータベースを操作するMCPサーバーをDockerで動かす設定です。

{
  "mcpServers": {
    "sqlite-docker": {
      "command": "docker",
      "args": [
        "run",
        "-i",           // 重要: 標準入力を対話的にする
        "--rm",         // 終了時にコンテナを削除
        "-v", "c:/workspace/data:/data", // 必要なデータだけマウント
        "mcp/sqlite",   // Dockerイメージ名(例)
        "--db-path", "/data/my-db.sqlite"
      ]
    }
  }
}

ポイント:

  • commanddocker にします。
  • -i (interactive) フラグが必須です。MCPは標準入出力(stdio)を使ってAIと通信するため、これがないと動きません。
  • -v (volume) で、AIに触らせたいディレクトリだけをマウントします。これにより、PC内の他のファイルを勝手に覗かれるリスクを排除できます。

実践:自作MCPサーバーをDocker化する

自分で作ったツール(Node.js/Python)をDocker化する場合も簡単です。

Dockerfileの例 (Node.js)

FROM node:18-alpine

WORKDIR /app
COPY package.json .
RUN npm install
COPY . .

# MCPはstdioを使うので、余計なログが出ないように注意する
CMD ["node", "index.js"]

Claude側の設定

    "my-custom-tool": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "my-mcp-image:latest"
      ]
    }

これだけで、ローカル環境に一切依存せず、自作ツールをClaudeから呼び出せるようになります。

まとめ:DockerこそMCPのベストパートナー

MCPは強力ですが、「AIにローカルマシンの操作権限を与える」ことと同義になりがちです。
Dockerを挟むことで、「サンドボックス化された安全なAIエージェント」 を簡単に構築できます。

Docker Desktopのエラーと戦った後は、ぜひこの「Docker × MCP」の快適さを体験してみてください!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?