デフォルトでは、Claude Code を実行している誰もが、選択した任意の MCP サーバー に接続できます。Anthropic は、Anthropic Directory に追加する前に、リスティング基準 に対してコネクターをレビューしていますが、MCP サーバーのセキュリティ監査や管理は行いません。管理者として、組織内で実行されるサーバーを制限できます。固定の承認済みセットをデプロイすることから、MCP 全体を無効にすることまで可能です。 このページでは、以下の方法について説明します。Documentation Index
Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
- パターンを選択する。必要な制御レベルに合わせたパターンを選択します
managed-mcp.jsonで固定サーバーセットをデプロイする。MCP 全体を無効にする方法も含まれます- 許可リストとブロックリストでサーバーを制御する
- 制限がサーバーをブロックするときにユーザーに何が起こるかを伝える
- 組織が実際に使用するサーバーを監視する
セキュリティページでは、MCP の脅威モデルと、サーバーを承認する前に評価する方法について説明しています。実施する内容を決定するでは、MCP 制限と他の管理制御について説明しています。
パターンを選択する
Claude Code は、さまざまな制限レベルをサポートしています。各パターンは、以下で説明する 1 つまたは両方のメカニズムを使用します。固定セットをデプロイするためのmanaged-mcp.json と、ユーザーが設定できる内容をフィルタリングするための allowedMcpServers/deniedMcpServers です。
| パターン | 機能 | 設定 |
|---|---|---|
| MCP を無効にする | サーバーはどこにも読み込まれません | 空のサーバーマップを含む managed-mcp.json |
| 固定デプロイ | すべてのユーザーが同じサーバーを取得し、他のサーバーを追加できません | 必要なサーバーを含む managed-mcp.json |
| 承認済みカタログ | 承認済みサーバーのリストを公開します。ユーザーは必要なものを追加し、他のものはブロックされます | allowedMcpServers + allowManagedMcpServersOnly: true |
| プラグインサーバーのみ | サーバーはプラグインからのみ取得できます。ユーザーは独自のサーバーを追加できません | strictPluginOnlyCustomization。リストに mcp を含めます |
| ソフト許可リスト | ユーザーが独自の設定で拡張できる許可リストを実施します | allowManagedMcpServersOnly なしの allowedMcpServers |
| ブロックリストのみ | 既知の悪いサーバーをブロックし、他のすべてを許可します | deniedMcpServers |
| 制限なし | ユーザーは何でも追加できます | 管理対象 MCP 設定をデプロイしません |
Claude Code には、ユーザーが参照してインストールできる組み込み MCP サーバーレジストリはありません。承認済みカタログパターンの場合、承認済みリストとその
claude mcp add コマンドをユーザーが見つけられる場所(内部 wiki など)で共有するか、管理対象プラグインマーケットプレイスを通じてサーバーをプラグインとして配布して、ユーザーが /plugin から参照してインストールできるようにします。managed-mcp.json による排他的制御
managed-mcp.json ファイルをデプロイすると、Claude Code はそのファイルで定義されたサーバーのみを読み込みます。ユーザーは、プラグイン提供のサーバーや claude.ai コネクターを含む、他の MCP サーバーを追加、変更、または使用することはできません。
2 つの他の設定は、管理対象セットをさらにフィルタリングできます。
allowedMcpServersとdeniedMcpServersは管理対象サーバーにも適用されるため、管理対象サーバーがそれらを通過しない場合は読み込まれません。- ユーザー独自の
deniedMcpServersは設定からマージされるため、ユーザーは管理対象サーバーを自分自身でブロックできます。
managed-mcp.json はスタンドアロンファイルであるため、サーバー管理設定を通じて配信することはできません。管理者権限を持つシステムパスに書き込むことができるプロセスは、それをデプロイできます。大規模では、通常は Jamf などのデバイス管理ツール、macOS 上の設定プロファイル、Windows 上のグループポリシーまたは Intune、または Linux 上の選択したフリート管理を通じて行われます。Claude Code は、以下のパスのいずれかでファイルを探します。
| プラットフォーム | パス |
|---|---|
| macOS | /Library/Application Support/ClaudeCode/managed-mcp.json |
| Linux と WSL | /etc/claude-code/managed-mcp.json |
| Windows | C:\Program Files\ClaudeCode\managed-mcp.json |
.mcp.json ファイルと同じ形式を使用します。
ユーザーごとの認証情報で認証する
マシン上の任意のユーザーがこのファイルを読むことができるため、env ブロックに API キーまたは他の認証情報を保存しないでください。代わりに、以下のいずれかを使用してユーザーごとの認証情報を渡します。
${VAR}展開。各ユーザーの環境からシークレットを読み取ります。- OAuth またはユーザーごとのヘッダー。各ユーザーが自分として認証します。
headersHelper。接続時に認証情報を生成します。
設定を検証する
ファイルが有効であることを確認するには、管理対象マシンで 2 つのチェックを実行します。claude mcp listはmanaged-mcp.json内のサーバーのみを表示します。ユーザー独自のサーバーがまだ表示される場合、ファイルが読み込まれていません。パスと権限を確認してください。claude mcp add --transport http test https://example.com/mcpはCannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP serversで失敗します。URL は実際のサーバーである必要はありません。ポリシーチェックが何かに接続される前にコマンドを拒否するためです。
MCP 全体を無効にする
空のサーバーマップを含むmanaged-mcp.json をデプロイして、すべての MCP サーバーをブロックします。
/mcp に MCP サーバーを表示しません。claude mcp add は上記のエンタープライズポリシーエラーで失敗します。ユーザーが以前に設定したサーバーは、次回セッションを開始するときに読み込みを停止します。ポリシーが理由であることについて警告はありません。
許可リストとブロックリストによるポリシーベースの制御
許可リストとブロックリストは、設定されたサーバーのどれが読み込まれることを許可するかをフィルタリングします。これらはレジストリではありません。サーバーは、ユーザー、プラグイン、またはmanaged-mcp.json によって追加される前に、許可リストまたはブロックリストが適用されます。ユーザーにサーバーをデプロイするには、managed-mcp.json を使用します。
許可リストを権限あるものにするには、管理設定ソース(サーバー管理設定またはデプロイされた managed-settings.json ファイルなど)で allowedMcpServers と allowManagedMcpServersOnly: true を一緒に設定します。許可リストを管理設定のみに制限するは設定を示しています。allowManagedMcpServersOnly がない場合、すべての設定ソース(ユーザー独自の ~/.claude/settings.json を含む)からの許可リストがマージされるため、ユーザーは許可リストが許可する内容を拡張できます。ブロックリストは関係なくすべてのソースからマージされます。
allowManagedMcpServersOnly は allowManagedPermissionRulesOnly とは別です。後者は 権限ルールのみをロックダウンします。そのフラグを設定しても、MCP 許可リストは実施されません。URL、コマンド、または名前でサーバーを一致させる
allowedMcpServers と deniedMcpServers はエントリのリストです。各エントリは、URL、コマンド、または名前でサーバーを識別する単一のキーを持つオブジェクトです。
| キー | 一致 | 用途 |
|---|---|---|
serverUrl | リモートサーバー URL。正確またはワイルドカード * を使用 | HTTP および SSE サーバー |
serverCommand | stdio サーバーを開始する正確なコマンドと引数 | Stdio サーバー |
serverName | ユーザーが割り当てたラベル。完全一致のみ。ワイルドカードは展開されません | どちらのタイプでも、ただし下の警告を参照してください |
allowedMcpServers を設定しないことは、空の配列に設定することとは異なります。
| 設定 | 設定なし(デフォルト) | 空の配列 [] | 入力済み |
|---|---|---|---|
allowedMcpServers | すべてのサーバーが許可されます | サーバーは許可されません | 一致するサーバーのみが許可されます |
deniedMcpServers | サーバーはブロックされません | サーバーはブロックされません | 一致するサーバーがブロックされます |
サーバーの評価方法
managed-mcp.json からのサーバーを含む、サーバーを読み込む前に、Claude Code は順序に 3 つのチェックを実行します。
- リストをマージします。 すべての設定ソースからの許可リストとブロックリストエントリが 1 つの許可リストと 1 つのブロックリストに結合されます。
allowManagedMcpServersOnlyがtrueの場合、管理対象許可リストのみが保持されます。ブロックリストは常にすべてのソースからマージされます。 - ブロックリストをチェックします。 URL、コマンド、または名前でブロックリストエントリと一致するサーバーはブロックされます。ブロックリスト一致をオーバーライドするものはありません。
- 許可リストをチェックします。
allowedMcpServersがどこにも設定されていない場合、ブロックリストを通過したすべてのサーバーが読み込まれます。設定されている場合、サーバーが一致する必要があるものは、その種類に依存し、以下の表に示されています。
| サーバータイプ | 一致するときに許可されます |
|---|---|
| リモート(HTTP または SSE) | serverUrl エントリ。serverName 一致は、許可リストに serverUrl エントリが含まれていない場合にのみカウントされます |
| Stdio | serverCommand エントリ。serverName 一致は、許可リストに serverCommand エントリが含まれていない場合にのみカウントされます |
- コマンドは正確に一致します。 すべての引数、順序通り。
["npx", "-y", "server"]は["npx", "server"]または["npx", "-y", "server", "--flag"]と一致しません。 - URL は
*ワイルドカード をパターン内の任意の場所(スキームを含む)でサポートします。ホスト名の一致は大文字と小文字を区別しません。末尾の FQDN ドットを無視します。したがって、https://Mcp.Example.com/*はhttps://mcp.example.com/apiと一致します。パスは大文字と小文字を区別したままです。
| パターン | 許可 |
|---|---|
https://mcp.example.com/* | 特定のドメイン上のすべてのパス |
https://mcp.example.com | そのドメイン上のすべてのパスも。パスのないパターンは任意のパスと一致します |
https://*.example.com/* | example.com の任意のサブドメイン |
http://localhost:*/* | localhost 上の任意のポート |
*://mcp.example.com/* | 特定のドメインへの任意のスキーム |
設定例
以下の設定は、ブロックリストを含むハード許可リストを設定します。強調表示された行は、リストの残りの部分がどのように評価されるかを変更し、ブロック後のコールアウトは各行を説明しています。- 3 行目:最初の
serverUrlエントリ。1 つが存在すると、すべてのリモートサーバーが URL パターンと一致する必要があるため、ユーザーは許可された名前を付けることで許可されていないリモートサーバーを取得することはできません。 - 5 行目:最初の
serverCommandエントリ。stdio サーバーでも同じ効果があるため、すべてのローカルサーバーが正確にリストされたコマンドと一致する必要があります。 - 11 行目:ブロックリスト内の
serverNameエントリ。ブロックリストエントリは常に適用されるため、dangerous-serverという名前のサーバーは URL またはコマンドに関係なくブロックされます。
serverName エントリは、両方のトランスポートタイプが既に厳密なエントリを持っているため、何とも一致しません。
以下のアコーディオンは、他の許可リストとブロックリストの組み合わせに対してサーバーがどのように評価されるかについて説明しています。
URL のみの許可リスト
URL のみの許可リスト
| サーバー | 結果 |
|---|---|
https://mcp.example.com/api の HTTP サーバー | 許可:URL パターンと一致 |
https://api.internal.example.com/mcp の HTTP サーバー | 許可:ワイルドカードサブドメインと一致 |
https://external.example.com/mcp の HTTP サーバー | ブロック:URL パターンと一致しません |
| 任意のコマンドを持つ Stdio サーバー | ブロック:一致する名前またはコマンドエントリがありません |
コマンドのみの許可リスト
コマンドのみの許可リスト
| サーバー | 結果 |
|---|---|
["npx", "-y", "approved-package"] を持つ Stdio サーバー | 許可:コマンドと一致 |
["node", "server.js"] を持つ Stdio サーバー | ブロック:コマンドと一致しません |
my-api という名前の HTTP サーバー | ブロック:一致する名前エントリがありません |
混合名とコマンド許可リスト
混合名とコマンド許可リスト
| サーバー | 結果 |
|---|---|
local-tool という名前で ["npx", "-y", "approved-package"] を持つ Stdio サーバー | 許可:コマンドと一致 |
local-tool という名前で ["node", "server.js"] を持つ Stdio サーバー | ブロック:コマンドエントリが存在しますが一致しません |
github という名前で ["node", "server.js"] を持つ Stdio サーバー | ブロック:stdio サーバーはコマンドエントリが存在する場合、コマンドと一致する必要があります |
github という名前の HTTP サーバー | 許可:名前と一致 |
other-api という名前の HTTP サーバー | ブロック:名前が一致しません |
名前のみの許可リスト
名前のみの許可リスト
| サーバー | 結果 |
|---|---|
任意のコマンドを持つ github という名前の Stdio サーバー | 許可:コマンド制限なし |
任意のコマンドを持つ internal-tool という名前の Stdio サーバー | 許可:コマンド制限なし |
github という名前の HTTP サーバー | 許可:名前と一致 |
other という名前の任意のサーバー | ブロック:名前が一致しません |
ブロックリストオーバーライド付き許可リスト
ブロックリストオーバーライド付き許可リスト
| サーバー | 結果 |
|---|---|
https://mcp.example.com/api の HTTP サーバー | 許可:許可リスト URL パターンと一致、ブロックリスト一致なし |
https://staging.example.com/api の HTTP サーバー | ブロック:両方と一致しますが、ブロックリストが優先されます |
https://other.com/mcp の HTTP サーバー | ブロック:許可リストと一致しません |
許可リストを管理設定のみに制限する
管理対象許可リストが適用される唯一のものにするには、管理設定ファイルでallowManagedMcpServersOnly を設定します。
allowManagedMcpServersOnly が true の場合、ユーザー、プロジェクト、ローカル設定からの許可リストは無視されます。ブロックリストはすべてのソースからマージされるため、ユーザーは常に自分自身のサーバーをブロックできます。
制限がユーザーにどのように表示されるか
制限がサーバーをブロックすると、ユーザーはclaude mcp add からエラーを表示するか、サーバーが静かに読み込みを停止します。このテーブルを使用して、これらのレポートを認識し、変更をロールアウトする前にユーザーに何が起こるかを伝えます。
| 制限 | ユーザーが表示するもの |
|---|---|
managed-mcp.json が存在し、ユーザーが claude mcp add を実行する | Cannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers |
サーバーがブロックリスト上にあり、ユーザーが claude mcp add を実行する | Cannot add MCP server "<name>": server is explicitly blocked by enterprise policy |
サーバーが許可リスト上にはなく、ユーザーが claude mcp add を実行する | Cannot add MCP server "<name>": not allowed by enterprise policy |
| 以前に設定されたサーバーがポリシーによってブロックされるようになった | サーバーは /mcp と claude mcp list から警告なく静かに消えます |
MCP 使用状況を監視する
OpenTelemetry エクスポートが設定されている場合、Claude Code はユーザーが呼び出す MCP サーバーとツールを記録できます。OTEL_LOG_TOOL_DETAILS=1 を設定して、ツールイベントに MCP サーバーとツール名を含めます。その後、コレクターで集計して、ユーザーが実際に接続するサーバーを確認します。エクスポーターを設定し、完全なイベントスキーマについては、監視を参照してください。
設定の概要
このページで説明するすべてのファイルと設定、それが制御するもの、および配信方法。| サーフェス | 制御するもの | 場所 | 配信方法 |
|---|---|---|---|
managed-mcp.json | 固定サーバーセット、排他的制御 | システムパス:/Library/Application Support/ClaudeCode/、/etc/claude-code/、または C:\Program Files\ClaudeCode\ | MDM、GPO、フリート管理、または管理者権限を持つプロセス。サーバー管理設定を通じて設定することはできません |
allowedMcpServers | 許可されたサーバーの許可リスト | 任意の 設定ファイル。allowManagedMcpServersOnly が設定されていない限り、すべてのソースからのエントリがマージされます | 実施のため、管理設定ソース:サーバー管理設定、managed-settings.json、MDM プロファイル、またはレジストリ |
deniedMcpServers | ブロックされたサーバーのブロックリスト | 任意の設定ファイル。すべてのソースからのエントリがマージされます | allowedMcpServers と同じ |
allowManagedMcpServersOnly | 許可リストを管理ソースのみにロックします | 管理設定ソースのみ。設定は他の場所では効果がありません | allowedMcpServers と同じ |
関連リソース
- 実施する内容を決定する:MCP 制限と権限ルール、サンドボックス化、および他の管理制御
- MCP 経由で Claude Code をツールに接続する:トランスポート、スコープ、認証を含む完全な MCP リファレンス
- 設定:設定階層と管理設定がどのように優先されるか
- サーバー管理設定:Claude.ai 管理コンソールから
allowedMcpServersとdeniedMcpServersを配信します - セキュリティ:これらの制御が防御する脅威モデル
- Claude Enterprise Administrator Guide:SSO、SCIM、シート管理、およびロールアウトプレイブック