claude mcp add の --scope local / project / user の違いと使い分け

Claude Code 公開:

MCP サーバーを追加するときの --scope を、保存先・共有範囲・優先順位の 3 点で整理します。既定は local、チーム共有は project で .mcp.json に書かれ、承認プロンプトが出る仕組みまで解説します。

検証日 2026年9月24日 仕様変更が早い分野です。最新の公式ドキュメントも併せてご確認ください。
目次
  1. 3 つのスコープの比較
  2. 使い分けの目安
  3. project スコープと .mcp.json
  4. 同じ名前が複数のスコープにあるとき
  5. 確認と削除
  6. まとめ

claude mcp add で MCP サーバーを追加するとき、--scope に何を指定すべきか迷います。名前から「local はローカル、user はユーザー」と推測はできますが、local と user はどちらも同じファイルに保存されるため、違いが分かりにくい部分です。

見るべき点は 保存先・共有範囲・優先順位 の 3 つです。結論として、自分だけがそのプロジェクトで使うなら local(既定)、チームで共有するなら project、自分がすべてのプロジェクトで使うなら user です。

KEY POINT

この記事で分かること

  • 3 つのスコープの保存先と共有範囲の違い
  • project が .mcp.json に書かれ、承認プロンプトが出る仕組み
  • 同じ名前が複数のスコープにあるときの優先順位

3 つのスコープの比較

スコープ範囲保存先チームと共有
local(既定)そのプロジェクトで自分だけ~/.claude.json のそのプロジェクトのパスの下されない
projectプロジェクトの全員プロジェクト直下の .mcp.jsonされる(バージョン管理経由)
user自分のすべてのプロジェクト~/.claude.jsonされない

local と user はどちらも ~/.claude.json に入ります。違いは書かれる場所で、公式ドキュメントは local について「Claude Code は ~/.claude.json のそのプロジェクトのパスの下に保存するので、同じサーバーは他のプロジェクトには現れない」と説明しています。

--scope を省略すると local です。次の 2 つは同じ意味になります。

claude mcp add --transport http stripe https://mcp.stripe.com
claude mcp add --transport http stripe --scope local https://mcp.stripe.com

使い分けの目安

状況スコープ
認証情報を含むサーバーをバージョン管理に入れたくないlocal
実験的な設定を試すlocal
チーム全員に同じサーバーを使わせたいproject
自分がどのプロジェクトでも使うサーバー(検索、メモなど)user

公式ドキュメントも local の用途を「個人用の開発サーバー、実験的な設定、バージョン管理に入れたくない認証情報を持つサーバー」と案内しています。

# チームで共有する(.mcp.json に書かれる)
claude mcp add --transport http shared-server --scope project https://example.com/mcp

# 全プロジェクトで使う
claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic

project スコープと .mcp.json

--scope project で追加すると、プロジェクト直下の .mcp.json が作成・更新されます。

{
  "mcpServers": {
    "shared-server": {
      "type": "http",
      "url": "https://example.com/mcp"
    }
  }
}

このファイルはバージョン管理に入れてチームで共有します。環境変数の渡し方は .mcp.json で環境変数を安全に渡す にまとめています。

project スコープには承認プロンプトがある

公式ドキュメントは「セキュリティ上の理由から、Claude Code は対話セッションで .mcp.json の project スコープのサーバーを使う前に承認を求める」と説明しています。承認をやり直すには claude mcp reset-project-choices を実行します。

承認プロンプトが出ない条件も明記されています。

  • claude -p の実行、Agent SDK のセッション、クラウドセッションでは、プロンプトを表示できないため承認なしで読み込まれる
  • bypassPermissions モードで開始し、ユーザー設定か管理者設定に skipDangerousModePermissionPrompt が設定されている場合もスキップされる

それでも特定のサーバーを読み込ませたくない場合の手段は 3 つです。

方法効果
disabledMcpjsonServers に追加すべての権限モードでブロックする
--setting-sources(SDK は settingSources)でプロジェクト設定を除外プロジェクト設定ごと読み込まない
--strict-mcp-config で起動--mcp-config で渡したサーバーだけを使う

同じ名前が複数のスコープにあるとき

同じサーバー名が複数の場所で定義されている場合、Claude Code は優先順位が最も高いソースの定義だけを使って 1 回接続します。フィールドがスコープをまたいで統合されることはありません。

  1. local スコープ
  2. project スコープ
  3. user スコープ
  4. プラグインが提供するサーバー
  5. claude.ai のコネクタ

3 つのスコープは名前で重複を判定します。同じ名前を別のエンドポイントで複数のスコープに定義すると、claude mcp list の出力と /mcp で競合の警告が出ます。

用語解説

スコープ: 設定がどこまで効くかの範囲です。MCP の場合は「自分だけか全員か」「このプロジェクトだけか全プロジェクトか」の 2 軸で決まります。

確認と削除

追加したサーバーの一覧と詳細は次のコマンドで確認します。

claude mcp list
claude mcp get <name>

削除するときはスコープを指定します。

claude mcp remove <name> --scope <scope>

MCP サーバーの追加方法全体は親記事の MCP サーバーのセットアップ を参照してください。

まとめ

  • --scope の既定は local。そのプロジェクトで自分だけが使う設定になる
  • local と user はどちらも ~/.claude.json だが、local はプロジェクトのパスの下に保存される
  • project はプロジェクト直下の .mcp.json に書かれ、バージョン管理でチームに共有される
  • project のサーバーは対話セッションで承認が必要。やり直しは claude mcp reset-project-choices
  • 同じ名前が複数あると local → project → user → プラグイン → コネクタの順で 1 つだけ使われる

よくある質問

--scope を省略するとどれになりますか?
local です。そのプロジェクトでだけ、自分だけが使える設定になります。
local と user はどちらも ~/.claude.json に保存されるのに何が違うのですか?
保存先のファイルは同じですが、local はそのプロジェクトのパスの下に保存されるため他のプロジェクトには出てきません。user はすべてのプロジェクトで使えます。
同じ名前のサーバーを複数のスコープに書いたらどうなりますか?
優先順位が高いスコープの定義がそのまま使われます。順位は local、project、user、プラグイン、claude.ai コネクタの順で、フィールドがスコープをまたいで統合されることはありません。
project スコープの承認をやり直すには?
claude mcp reset-project-choices を実行します。

参考にした一次情報

この記事は公式ドキュメントを基に AI が下書きを作成し、運営者が内容を確認して公開しています。誤りを見つけた場合は お問い合わせからお知らせください。