Claude CodeでMCPサーバーを使うが、普段の個人MCP設定を一切混ぜずに、セッション専用のMCPだけで起動したい人
社内専用MCPだけで動作検証したい、クライアント案件で指定された設定だけ使いたい、自作MCPの開発中に普段のMCPがノイズになる、といった「普段のMCP全部を切ってセッション専用の構成で起動したい」場面で、--mcp-config ./mcp.json とセットで叩いて使う。
Claude Codeには、外部ツールや社内データベースに接続するためのMCPサーバー設定があります。ところが普段使いの個人MCPと社内専用MCPを混ぜたくない場面が必ず出てきます。
このときに使うのが --strict-mcp-config。普段登録してあるMCPサーバーを**全部いったん切って**、その場で指定した設定だけで起動する強制スイッチです。
噛み砕くと
新しい職場の初日、いつも持ち歩いてる私物のノートや道具を全部ロッカーに置いて、職場が用意した道具だけで仕事をする状態を作る。これに近いです。
普段は ~/.claude.json や .mcp.json、プラグインに登録されたMCPが全部読み込まれます。--strict-mcp-config を付けて起動すると、それらを全部「無視」にして、その場で --mcp-config ./mcp.json で渡したファイルに書いてあるMCPだけが使える状態になります。
大事な前提:このスイッチは単独では何もしない
--strict-mcp-config は「ほかのMCP設定を全部無視する」だけのスイッチ。**何を読み込むか**は別途 --mcp-config <ファイルの場所> で渡す必要があります。
つまり常に2つセットで叩く。claude --strict-mcp-config --mcp-config ./mcp.json の形が基本形です。
「社内ツールMCPだけで起動して、個人MCPを一切混ぜずに検証する」を例に、実際の手順を見る
普段の私の環境には、個人開発で使ってる天気MCP・GitHub連携MCP・Slack連携MCPが ~/.claude.json に登録されている、という想定。今日は社内専用の文書検索MCPだけを起動して、ほかが一切混ざらないことを確認したい。社内MCPの名前は company-docs とします。
ステップ1: まず普段の状態を確認する
何のMCPが今登録されているかを claude mcp list で見ます。
$ claude mcp list
weather ✓ Connected
github ✓ Connected
slack ✓ Connected
3つ繋がってます。これが「普段の状態」。
ステップ2: セッション専用のmcp.jsonを書く
作業フォルダの中に mcp.json という名前のファイルを作って、社内文書検索MCPだけを書きます。
{
"mcpServers": {
"company-docs": {
"command": "node",
"args": ["/opt/company-tools/docs-mcp/index.js"]
}
}
}
JSONなので、波カッコの対応・カンマの位置・ダブルクォートを忘れずに。
ステップ3: 普通に --mcp-config だけで起動するとどうなるか試す
まず --strict-mcp-config を付けずに、--mcp-config だけ付けて起動。
$ claude --mcp-config ./mcp.json
セッションが立ち上がったら /mcp を叩いて中身を見ます。
company-docs ✓ Connected
weather ✓ Connected
github ✓ Connected
slack ✓ Connected
4つ繋がってます。--mcp-config だけだと「足し算」になる。普段の3つは生きたまま、社内MCPが**追加で**読み込まれた状態です。
ステップ4: --strict-mcp-config を付けて起動し直す
いったん抜けて、今度はスイッチを付け直す。
$ claude --strict-mcp-config --mcp-config ./mcp.json
/mcp でもう一度確認。
company-docs ✓ Connected
1つだけ。狙い通りの状態ができました。普段の天気・GitHub・SlackのMCPは一切繋がっていません。
ステップ5: 確認のため、いつもの個人MCPを呼ぼうとしてみる
セッション内で「今日の東京の天気を教えて」と聞いてみる。普段なら天気MCPが返してくるはず。
結果、Claudeは「使えるMCPツールに天気を取得できるものがありません」と返してきます。本当に切れている、ということ。ここで初心者がやりがちな勘違いがあって、「設定ファイルに書いてないだけで、裏で動いてるんじゃ」と思う人がいますが、プロセス自体が起動されていない状態です。
ステップ6: 抜けると元通り
セッションを exit で抜けて、普通に claude だけで起動し直すと、元通り3つの個人MCPが復活します。--strict-mcp-config は**そのセッション限定**で、設定ファイル自体を書き換えるわけではない。これが大事。
つまり --strict-mcp-config は何をしてくれるのか
- やってくれる: そのセッションだけ、普段登録してあるMCPサーバーを全部無視して、
--mcp-configで渡したファイルのMCPだけが使える状態を作る - やってくれない: 設定ファイル自体の書き換え、特定のMCPだけピンポイントで無効化、プラグイン経由のMCPだけ残す、といった選択的な操作
- 意味が薄い場面: 普段から1つもMCPを登録していない、または普段のMCPと検証したいMCPが完全に同じ、というケース
使いどころ3シナリオ
シナリオ1: 社内専用MCPの動作検証で、個人MCPを一切混ぜたくないとき
会社で内製した文書検索MCPの挙動を確認する。個人MCPが繋がっていると、Claudeが「文書検索じゃなくてGitHub MCPで類似コードを探そう」みたいに勝手に別経路で答えてしまって、検証にならないことがあります。--strict-mcp-config で社内MCPだけにすれば、回答が社内MCP経由になるしかなくなるので、純粋な動作チェックができます。
シナリオ2: クライアント案件で「指定されたMCPだけ」で作業する必要があるとき
受託先から「弊社が用意したMCP設定だけで作業してください、他のMCPは使わないでください」と指定が来るケース。普段の個人MCPを claude mcp remove で1個ずつ消して、案件が終わったらまた登録し直す、というのは手間と事故のもとです。クライアントから渡された client-mcp.json を --strict-mcp-config --mcp-config ./client-mcp.json で読み込めば、その場限りの隔離環境ができます。
シナリオ3: MCPサーバー自作の開発中、他のMCPがノイズになるとき
自分で新しいMCPサーバーを書いてる最中、ツール一覧に普段の10個も20個も並んでいると、Claudeが新しいMCPを呼んでくれずに既存のツールで処理してしまう。これだと自作MCPが本当に動いているのか分からない。--strict-mcp-config で自作MCPだけに絞れば、Claudeは選択肢がそれしかない状態になるので、確実に呼ばれます。
初心者が踏みやすい落とし穴
- 単独で叩いてもMCPが空になるだけ。
claude --strict-mcp-configだけで起動すると、普段のMCPは消えて、新しいMCPも読み込まれず、何もない状態になります。必ず--mcp-config <ファイルの場所>とセットで叩く。 - 「追加」と「置き換え」を混同する。
--mcp-configだけだと「普段のMCP+ファイルのMCP」の足し算。--strict-mcp-configを足して初めて「ファイルのMCPだけ」の置き換えになります。/mcpコマンドで実際の状態を見て確認するクセをつけるといい。 - プラグイン経由のMCPも切れる。Claude Codeのプラグインを入れていて、そのプラグインがMCPサーバーをバンドルしているケースがあります。
--strict-mcp-configはこれも無視対象に入れます。プラグイン頼みのワークフローを動かそうとして「あれ、動かない」となる事故が起きやすいので注意。 - 設定ファイル自体は無傷。「全部消える」と聞くと
~/.claude.jsonが書き換わると勘違いする人がいますが、設定ファイルは触りません。セッションを抜ければ普段通りに戻ります。 - セッション内で
claude mcp addを叩いても効かない場面がある。strict モードで起動した状態で新しいMCPを追加しようとすると、設定ファイルには書き込まれるけどそのセッションでは使えない、というズレが出ます。新しいMCPを試したいなら一度抜けて再起動する。 - JSONの書式ミスで即落ちる。
mcp.jsonのカンマ抜け・ダブルクォート不足があると、起動時に「設定が読めない」エラーで落ちます。jq . ./mcp.jsonや VS Code のJSON Lintで事前に確認すると安全。
書き方
claude --strict-mcp-config --mcp-config <mcp.jsonのファイルの場所>
やってみるとこうなる
入力
claude --strict-mcp-config --mcp-config ./mcp.json
出力例
普段登録されている個人MCP(天気・GitHub連携・Slack連携など)が全部無視され、./mcp.json に書かれたMCPサーバー(例: company-docs)だけが繋がった状態でClaude Codeが起動する。セッション内で /mcp を叩くと、./mcp.json に書いたMCPだけが表示される。セッションを抜けて普通に claude で起動し直すと、元通り全部の個人MCPが復活する。
このページに出てきた言葉
- MCP
- Model Context Protocolの略。Claude Codeが外部ツールと話すための共通の決まりごと
- MCPサーバー
- MCPの規格に沿って動く、外部ツールとの窓口になるプログラム。Claude Codeに登録するとその外部ツールを操作できるようになる
- mcp.json
- MCPサーバーをどう起動するかを書いた設定ファイル。中身は <code>{"mcpServers": {...}}</code> 形式
- ~/.claude.json
- ホームフォルダにあるClaude Codeの全体設定ファイル。普段のMCPサーバー登録情報がここに書かれている
- .mcp.json
- プロジェクトの一番上に置く、チーム全員で共有するMCP設定ファイル
- セッション
- Claude Codeを起動してから抜けるまでの1回の利用単位
- プロセス
- 裏で動いてるプログラムの実体。MCPサーバーごとに1個ずつ動いている