安全にClaude Code を利用するにあたって、Devcontainer 上で実行するようにしています。
その際にMCPサーバーの設定の記述について少し悩んだことがあったので、調べたことをまとめます。
Claude Codeのバージョンが2.0.5時点での内容です。
今後のアップデート次第で変わる場合があります。
前提: Claude CodeでのMCPサーバー設定のスコープについて
Claude CodeのMCP設定は3つのスコープが存在する。
①ローカルスコープ
自分が特定のプロジェクトにおいて利用したいMCPサーバーの設定をするために用いられる。
デフォルトでは、~/.claude.json
内に記載される。
例: ユーザーhogeの場合
{
"projects": {
"プロジェクトのディレクトリ": {
"mcpServers": {
"//": "ここにMCPサーバーの設定が書かれる"
}
}
}
}
②プロジェクトスコープ
チームで共通して利用したいMCPサーバーの設定をするために用いられる。
これは、プロジェクトのルートディレクトリに .mcp.json
を作成して設定が書かれる。
チームで共通して利用するため、git管理がされる。
③ユーザースコープ
{
"mcpServers": {
"//": "ここにMCPサーバーの設定が書かれる"
}
}
ローカルスコープと記載されるファイルは同じだが、階層が違っている。
スコープについて、詳しくは以下のドキュメント。
困ったこと
ローカルスコープのMCPサーバーの設定について、ユーザーのホームディレクトリの設定ファイルに記載される。
Devcontainer 上でこの設定を行う時、コンテナを作り直しした場合などに設定ファイルが消えてしまうので、都度MCPサーバーの設定などをし直さなくてなならない?と少し頭を抱えました。
設定ファイルのパスを変えることはできるので、プロジェクト内に設定して、gitignoreする?みたいなことを考えてた。
公式の設定方法
公式のClaude Codeのsandbox 環境の設定に方法が記されてた。
"CLAUDE_CONFIG_DIR": "/home/node/.claude",
とすることで、設定ファイルを.claudeディレクトリの中に留め、そのディレクトリをボリュームを使って永続化している。
ボリュームを使う際の権限周りのエラーを回避するため、Dockerfile 側で事前にディレクトリを作成、所有者を変更することも併せて行なっていた。
これでボリュームが破棄されない限りは設定ファイルが消えることはなくなるし、認証なども都度行う必要がなくなる。