y-ohgi's blog

TODO: ここになにかかく

Claude DesktopのmcpをDockerで動かす

TL;DR

  • Claude Desktopで使用するMCPをローカルではなくDockerコンテナで動かす
  • ローカルマシンで任意のMCPを動作させるセキュリティの問題上隔離することがモチベーション

About

MCPは便利ですが、個人的にまだ過渡期でセキュリティの課題を抱えていると思っています。
そのため、Dockerコンテナで動かすことでローカルマシンに対してなるべくセキュアに扱いたいというのがモチベーションです。

Docker Desktopの代わりに、高速なOrbStackを使用します(余談ですが私は普段からOrbStackを利用しています)。
Dockerの起動がネックになると思っていたのですが、体感では npx コマンドを使用した時と変わりませんでした。

Versions

How To

Claude DesktopにMCPの設定を追加

MCPはシンプルに @modelcontextprotocol/server-filesystem を使用します。

コンフィグは以下のように記載しました。
npxコマンドを実行できれば良いので、nodeのalpineイメージを使用します。

ホームディレクトリに mcp というディレクトリを作成しマウントします。

/Users/<YOUR USERNAME>/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "filesystem": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "--mount", "type=bind,src=/Users/<YOUR USERNAME>/mcp,dst=/mcp",
        "node:22-alpine",
        "npx",
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/mcp"
      ]
    }
  }
}

Claudeで使用

filesystem mcpが使用可能なことを確認できました。

試しに指示を出してみます。

$ cat ~/mcp/hello.txt
hello

ファイルが作成されていることが確認できました。

所感

Dockerコンテナを経由することでセキュアにMCPを使用するという目的は達成できました。
また、バージョン管理システム(例えば nvmmise )を使用しているとClaude Desktopの設定で npx コマンドがうまく動作しない点も回避できるのもポイントかと思います。

今回は --rm コマンドを使用して都度コンテナを消していますが、重いMCP packageを使用する際は自前でDockerfileを書いてDocker Hubにホストしておくなどもありかもしれません。