TL;DR
- Claude Desktopで使用するMCPをローカルではなくDockerコンテナで動かす
- ローカルマシンで任意のMCPを動作させるセキュリティの問題上隔離することがモチベーション
About
MCPは便利ですが、個人的にまだ過渡期でセキュリティの課題を抱えていると思っています。
そのため、Dockerコンテナで動かすことでローカルマシンに対してなるべくセキュアに扱いたいというのがモチベーションです。
Docker Desktopの代わりに、高速なOrbStackを使用します(余談ですが私は普段からOrbStackを利用しています)。
Dockerの起動がネックになると思っていたのですが、体感では npx
コマンドを使用した時と変わりませんでした。
Versions
- OrbStack
- 1.10.3
- @modelcontextprotocol/server-filesystem
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を使用するという目的は達成できました。
また、バージョン管理システム(例えば nvm
や mise
)を使用しているとClaude Desktopの設定で npx
コマンドがうまく動作しない点も回避できるのもポイントかと思います。
今回は --rm
コマンドを使用して都度コンテナを消していますが、重いMCP packageを使用する際は自前でDockerfileを書いてDocker Hubにホストしておくなどもありかもしれません。