4 4
5# 組織の MCP サーバーアクセスを制御する5# 組織の MCP サーバーアクセスを制御する
6 6
7> 管理対象設定ファイル、許可リスト、ブロックリストを使用して、ユーザーが追加または接続できる MCP サーバーを制限します。7> 管理対象設定ファイル、管理対象設定、許可リスト、拒否リストを使用して、ユーザーが追加または接続できる MCP サーバーを制限するか、すべてのユーザーにサーバーを提供します。
8 8
9デフォルトでは、Claude Code を実行している誰もが、選択した任意の [MCP サーバー](/docs/ja/mcp) に接続できます。Anthropic は、[Anthropic Directory](https://claude.ai/directory) に追加する前に、[リスティング基準](https://claude.com/docs/connectors/building/review-criteria) に対してコネクターをレビューしていますが、MCP サーバーのセキュリティ監査や管理は行いません。管理者として、組織内で実行されるサーバーを制限できます。固定の承認済みセットをデプロイすることから、MCP 全体を無効にすることまで可能です。9デフォルトでは、Claude Code を実行している誰もが、選択した任意の [MCP サーバー](/docs/ja/mcp) に接続できます。Anthropic は、[Anthropic Directory](https://claude.ai/directory) に追加する前に、コネクターを [リスティング基準](https://claude.com/docs/connectors/building/review-criteria) に照らして確認しますが、MCP サーバーのセキュリティ監査や管理は行いません。管理者として、組織内で実行されるサーバーを制限できます。固定された承認済みセットのデプロイから MCP 全体の無効化まで、すべてのユーザーにサーバーを提供することもできます。
10
11これらの制限は、Claude Code が自身で読み込むサーバー(claude.ai から取得するコネクターを含む)に適用されます。デスクトップアプリがローカルセッションと SSH セッションに配信するコネクターはプロセス内で到着し、代わりに claude.ai 組織設定から管理されます。[コネクターが Claude Code に到達する方法](/docs/ja/mcp#how-connectors-reach-claude-code) は、クラウドセッションを含む各種セッションのコネクターに適用される制御を示しています。
10 12
11このページでは、以下の方法について説明します。13このページでは、以下の方法について説明します。
12 14
13* [パターンを選択する](#choose-a-pattern)。必要な制御レベルに合わせたパターンを選択します15* [必要な制御量に合致するパターンを選択する](#choose-a-pattern)
14* [`managed-mcp.json` で固定サーバーセットをデプロイする](#exclusive-control-with-managed-mcp-json)。[MCP 全体を無効にする](#disable-mcp-entirely)方法も含まれます16* [`managed-mcp.json` で固定サーバーセットをデプロイする](#exclusive-control-with-managed-mcp-json)([MCP 全体を無効化する](#disable-mcp-entirely) 方法を含む)
15* [許可リストとブロックリストでサーバーを制御する](#policy-based-control-with-allowlists-and-denylists)17* [管理対象設定を通じてサーバーを提供する](#provide-servers-through-managed-settings)(ユーザーが独自のサーバーを保持する場合)
16* [制限がサーバーをブロックするときにユーザーに何が起こるかを伝える](#how-restrictions-appear-to-users)18* [許可リストと拒否リストでサーバーを制御する](#policy-based-control-with-allowlists-and-denylists)
19* [制限がサーバーをブロックするときにユーザーが何を期待するかを伝える](#how-restrictions-appear-to-users)
17* [組織が実際に使用するサーバーを監視する](#monitor-mcp-usage)20* [組織が実際に使用するサーバーを監視する](#monitor-mcp-usage)
18 21
19<Note>22<Note>
20 [セキュリティ](/docs/ja/security)ページでは、MCP の脅威モデルと、サーバーを承認する前に評価する方法について説明しています。[実施する内容を決定する](/docs/ja/admin-setup#decide-what-to-enforce)では、MCP 制限と他の管理制御について説明しています。23 [セキュリティ](/docs/ja/security) ページは MCP の脅威モデルと、サーバーを承認する前に評価する方法について説明しています。[実施する内容を決定する](/docs/ja/admin-setup#decide-what-to-enforce) は、他の管理制御と並んで MCP 制限について説明しています。
21</Note>24</Note>
22 25
23<h2 id="choose-a-pattern">26<h2 id="choose-a-pattern">
24 パターンを選択する27 パターンを選択する
25</h2>28</h2>
26 29
27Claude Code は、さまざまな制限レベルをサポートしています。各パターンは、以下で説明する 1 つまたは両方のメカニズムを使用します。固定セットをデプロイするための `managed-mcp.json` と、ユーザーが設定できる内容をフィルタリングするための `allowedMcpServers`/`deniedMcpServers` です。30Claude Code は、さまざまな制限レベルをサポートしています。各パターンは、以下で説明するメカニズムの 1 つ以上を使用します。`managed-mcp.json` は固定セットをデプロイするため、`managedMcpServers` マネージド設定はユーザーが追加するサーバーと共にサーバーを提供するため、`allowedMcpServers`/`deniedMcpServers` はユーザーが設定する内容をフィルタリングするためです。
28 31
29| パターン | 機能 | 設定 |32| パターン | 機能 | 設定 |
30| :-------------- | :---------------------------------------------- | :---------------------------------------------------------------------------------------------- |33| :-------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------- |
31| **MCP を無効にする** | サーバーはどこにも読み込まれません | 空のサーバーマップを含む `managed-mcp.json` |34| **MCP を無効化** | サーバーは読み込まれません。ただし、[セッションを開始したアプリが登録するインプロセスサーバー](#exclusive-control-with-managed-mcp-json)と、[`managedMcpServers` を通じて提供するサーバー](#provide-servers-through-managed-settings)は除きます | 空のサーバーマップを含む `managed-mcp.json` |
32| **固定デプロイ** | すべてのユーザーが同じサーバーを取得し、他のサーバーを追加できません | 必要なサーバーを含む `managed-mcp.json` |35| **固定デプロイ** | すべてのユーザーが同じサーバーを取得し、他のサーバーを追加できません | 必要なサーバーを含む `managed-mcp.json` |
33| **承認済みカタログ** | 承認済みサーバーのリストを公開します。ユーザーは必要なものを追加し、他のものはブロックされます | `allowedMcpServers` + `allowManagedMcpServersOnly: true` |36| **提供されるサーバー** | すべてのユーザーがリストされたリモートサーバーを取得し、独自のサーバーを保持します | マネージド設定の `managedMcpServers` |
34| **プラグインサーバーのみ** | サーバーはプラグインからのみ取得できます。ユーザーは独自のサーバーを追加できません | [`strictPluginOnlyCustomization`](/docs/ja/settings#strictpluginonlycustomization) とリストに `mcp` を含めます |37| **承認されたカタログ** | 承認されたサーバーのリストを公開します。ユーザーは必要なものを追加し、その他はすべてブロックされます | `allowedMcpServers` + `allowManagedMcpServersOnly: true` |
35| **ソフト許可リスト** | ユーザーが独自の設定で拡張できる許可リストを実施します | `allowManagedMcpServersOnly` なしの `allowedMcpServers` |38| **プラグインサーバーのみ** | ユーザーは `~/.claude.json` または `.mcp.json` を通じてサーバーを追加できません。プラグインサーバーは引き続き読み込まれます | [`strictPluginOnlyCustomization`](/docs/ja/settings-reference#strictpluginonlycustomization) とリストの `mcp` |
36| **ブロックリストのみ** | 既知の悪いサーバーをブロックし、他のすべてを許可します | `deniedMcpServers` |39| **ソフト許可リスト** | ユーザーが独自の設定で拡張できる許可リストを適用します | `allowManagedMcpServersOnly` なしの `allowedMcpServers` |
37| **制限なし** | ユーザーは何でも追加できます | 管理対象 MCP 設定をデプロイしません |40| **拒否リストのみ** | 既知の不正なサーバーをブロックし、その他はすべて許可します | `deniedMcpServers` |
41| **制限なし** | ユーザーは何でも追加できます | マネージド MCP 設定をデプロイしないでください |
38 42
39<Note>43<Note>
40 Claude Code には、ユーザーが参照してインストールできる組み込み MCP サーバーレジストリはありません。承認済みカタログパターンの場合、承認済みリストとその `claude mcp add` コマンドをユーザーが見つけられる場所(内部 wiki など)で共有するか、[管理対象プラグインマーケットプレイス](/docs/ja/plugin-marketplaces#managed-marketplace-restrictions)を通じてサーバーをプラグインとして配布して、ユーザーが `/plugin` から参照してインストールできるようにします。44 Claude Code には、ユーザーが参照してインストールできる組み込み MCP サーバーレジストリはありません。承認されたカタログパターンの場合、承認されたリストとその `claude mcp add` コマンドを、内部 wiki などのユーザーが見つけやすい場所で共有するか、[マネージドプラグインマーケットプレイス](/docs/ja/plugin-marketplaces#managed-marketplace-restrictions)を通じてプラグインとしてサーバーを配布して、ユーザーが `/plugin` から参照してインストールできるようにしてください。
41</Note>45</Note>
42 46
43<h2 id="exclusive-control-with-managed-mcp-json">47<h2 id="exclusive-control-with-managed-mcp-json">
44 managed-mcp.json による排他的制御48 managed-mcp.json による排他的制御
45</h2>49</h2>
46 50
47`managed-mcp.json` ファイルをデプロイすると、Claude Code はそのファイルで定義されたサーバーのみを読み込みます。ユーザーは、プラグイン提供のサーバーを含む他の MCP サーバーを追加、変更、または使用することはできません。また、このファイルは [管理対象セットと共に許可する](#allow-claude-ai-connectors-alongside-the-managed-set)場合を除き、claude.ai コネクターも抑制します。51`managed-mcp.json` ファイルをデプロイすると、Claude Code はそのファイルで定義されたサーバー、[`managedMcpServers` を通じて提供するサーバー](#provide-servers-through-managed-settings)、およびセッションを開始したアプリが登録するインプロセスサーバー(VS Code 拡張機能独自のサーバーや[デスクトップアプリが提供するコネクタ](/docs/ja/mcp#how-connectors-reach-claude-code)など)のみを読み込みます。ユーザーは、プラグイン提供のサーバーや [`--mcp-config` CLI フラグ](/docs/ja/cli-reference#cli-flags)で渡されたサーバーを含む、その他の MCP サーバーを追加、変更、または使用することはできません。このファイルは、[マネージドセットと共にそれらを許可](#allow-claude-ai-connectors-alongside-the-managed-set)しない限り、Claude Code が自身で取得する claude.ai コネクタも抑制します。
48
492 つの他の設定は、管理対象セットをさらにフィルタリングできます。
50 52
51* `allowedMcpServers` と `deniedMcpServers` は管理対象サーバーにも適用されるため、管理対象サーバーがそれらを通過しない場合は読み込まれません。53<h3 id="deploy-managed-mcp-json">
52* ユーザー独自の `deniedMcpServers` は設定からマージされるため、ユーザーは管理対象サーバーを自分自身でブロックできます。54 managed-mcp.json をデプロイする
55</h3>
53 56
54チェックの完全な順序については、[サーバーの評価方法](#how-a-server-is-evaluated)を参照してください。57`managed-mcp.json` はスタンドアロンファイルであるため、[サーバー管理設定](/docs/ja/server-managed-settings)を通じて配信することはできません。マネージドセットなしで管理設定を通じてサーバーを配信するには、代わりに [`managedMcpServers`](#provide-servers-through-managed-settings) を使用してください。
55 58
56`managed-mcp.json` はスタンドアロンファイルであるため、[サーバー管理設定](/docs/ja/server-managed-settings)を通じて配信することはできません。管理者権限を持つシステムパスに書き込むことができるプロセスは、それをデプロイできます。大規模では、通常は Jamf などのデバイス管理ツール、macOS 上の設定プロファイル、Windows 上のグループポリシーまたは Intune、または Linux 上の選択したフリート管理を通じて行われます。Claude Code は、以下のパスのいずれかでファイルを探します。59管理者権限を持つシステムパスに書き込むことができるすべてのプロセスがファイルをデプロイできます。フリート全体では、通常は Jamf などのデバイス管理ツール、macOS 上の構成プロファイル、Windows 上のグループポリシーまたは Intune、または Linux 上の選択したフリート管理を通じて行われます。Claude Code は以下のパスのいずれかでファイルを探します。
57 60
58| プラットフォーム | パス |61| プラットフォーム | パス |
59| :---------- | :--------------------------------------------------------- |62| :---------- | :--------------------------------------------------------- |
61| Linux と WSL | `/etc/claude-code/managed-mcp.json` |64| Linux と WSL | `/etc/claude-code/managed-mcp.json` |
62| Windows | `C:\Program Files\ClaudeCode\managed-mcp.json` |65| Windows | `C:\Program Files\ClaudeCode\managed-mcp.json` |
63 66
64ファイルは、プロジェクト [`.mcp.json`](/docs/ja/mcp#project-scope) ファイルと同じ形式を使用します。67このファイルはプロジェクト [`.mcp.json`](/docs/ja/mcp#project-scope) ファイルと同じ形式を使用します。
65 68
66```json theme={null}69```json theme={null}
67{70{
90 ユーザーごとの認証情報で認証する93 ユーザーごとの認証情報で認証する
91</h3>94</h3>
92 95
93マシン上の任意のユーザーがこのファイルを読むことができるため、`env` ブロックに API キーまたは他の認証情報を保存しないでください。代わりに、以下のいずれかを使用してユーザーごとの認証情報を渡します。96マシン上のすべてのユーザーがこのファイルを読むことができるため、API キーやその他の認証情報を `env` ブロックに保存しないでください。代わりに、以下のいずれかを使用してユーザーごとの認証情報を渡してください。
94 97
95* [`${VAR}` 展開](/docs/ja/mcp#environment-variable-expansion-in-mcp-json)。各ユーザーの環境からシークレットを読み取ります。98* [環境変数展開](/docs/ja/mcp#environment-variable-expansion-in-mcp-json)を使用して、各ユーザーの環境からシークレットを読み込む。
96* [OAuth またはユーザーごとのヘッダー](/docs/ja/mcp#authenticate-with-remote-mcp-servers)。各ユーザーが自分として認証します。99* [OAuth またはユーザーごとのヘッダー](/docs/ja/mcp#authenticate-with-remote-mcp-servers)を使用して、各ユーザーが自分自身として認証する。
97* [`headersHelper`](/docs/ja/mcp#use-dynamic-headers-for-custom-authentication)。接続時に認証情報を生成します。100* [動的ヘッダーをカスタム認証に使用する](/docs/ja/mcp#use-dynamic-headers-for-custom-authentication)ために `headersHelper` を使用して、接続時に認証情報を生成する。
101
102<h3 id="servers-passed-with-mcp-config-or-strict-mcp-config">
103 `--mcp-config` または `--strict-mcp-config` で渡されたサーバー
104</h3>
105
106セッションが `managed-mcp.json` がデプロイされている間に `--mcp-config` を通じてサーバーを受け取る場合、ユーザーが見るものはワークステーションとクラウドセッション間で異なります。
107
108* ワークステーション上では、Claude Code は `You cannot dynamically configure MCP servers when an enterprise MCP config is present` というメッセージで起動時に終了します。
109* ファイルがデプロイされているホスト上の[クラウドセッション](/docs/ja/claude-code-on-the-web)([セルフホストランナー](/docs/ja/self-hosted-environments-configuration#mcp-servers)など)では、Claude Code はマネージドサーバーのみで起動し、claude.ai コネクタおよびクラウドホストが `--mcp-config` を通じて配信するその他のサーバーをスキップします。セッション内のどのサーバーが除外されたかをユーザーに伝えるものはありません。Claude Code はそれらを stderr の警告で名前を付けます。これはセルフホストランナーが `debug` ログレベルで記録します。
110
111ユーザーが `--strict-mcp-config` を渡す場合、Claude Code はワークステーション上とクラウドセッション上の両方で起動時に終了します。このフラグはマネージドセットを置き換えるよう要求するためです。
112
113<h3 id="how-allowlists-and-denylists-apply-to-the-managed-set">
114 許可リストと拒否リストがマネージドセットに適用される方法
115</h3>
116
117拒否リストは `managed-mcp.json` 内のサーバーをさらにフィルタリングできます。
118
119* `deniedMcpServers` はマネージドサーバーにも適用されるため、エントリに一致するマネージドサーバーは読み込まれません。
120* ユーザー独自の `deniedMcpServers` は設定からマージされるため、ユーザーはマネージドサーバーを自分自身でブロックできます。
121
122`allowedMcpServers` は `managed-mcp.json` 内のサーバーには適用されません。ただし 1 つの例外があります。Claude Code は定義が [`${VAR}` 展開](/docs/ja/mcp#environment-variable-expansion-in-mcp-json)を使用するサーバーを許可リストに対してチェックします。そのサーバーの有効な構成はファイルだけではなく各ユーザーの環境から来るためです。v2.1.259 より前では、許可リストが設定されている場合、すべてのマネージドサーバーが許可リストを通過する必要がありました。どのフィールドが `${VAR}` チェックをトリガーするか、およびチェックの完全な順序については、[サーバーがどのように評価されるか](#how-a-server-is-evaluated)を参照してください。
123
124`allowedMcpServers` を使用して独自の `managed-mcp.json` サーバーの一部が読み込まれないようにしていた場合、`${VAR}` 展開を使用しない限り、各ユーザーが v2.1.259 以降の最初の起動時にそれらのサーバーが読み込まれ始めます。プロンプトや通知はありません。`deniedMcpServers` のみがそれらのサーバーから差し引かれます。それらの拒否リストエントリを追加するか、ユーザーがアップグレードする前に、グループごとに別の `managed-mcp.json` をデプロイしてください。
98 125
99<h3 id="validate-the-configuration">126<h3 id="validate-the-configuration">
100 設定を検証する127 構成を検証する
101</h3>128</h3>
102 129
103ファイルが有効であることを確認するには、管理対象マシンで 2 つのチェックを実行します。130ファイルが有効であることを確認するには、マネージドマシン上で 2 つのチェックを実行してください。
104 131
1051. `claude mcp list` は `managed-mcp.json` 内のサーバーのみを表示します。ユーザー独自のサーバーがまだ表示される場合、ファイルが読み込まれていません。パスと権限を確認してください。1321. `claude mcp list` は `managed-mcp.json` 内のサーバーのみを表示します。`managedMcpServers` を通じて提供するサーバーも表示されます。ユーザー独自のサーバーがまだ表示される場合、ファイルが読み込まれていません。パスと権限を確認してください。
1062. `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 は実際のサーバーである必要はありません。ポリシーチェックが何かに接続される前にコマンドを拒否するためです。1332. `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 は実際のサーバーである必要はありません。
107 134
108<h3 id="disable-mcp-entirely">135<h3 id="disable-mcp-entirely">
109 MCP 全体を無効にする136 MCP を完全に無効にする
110</h3>137</h3>
111 138
112空のサーバーマップを含む `managed-mcp.json` をデプロイして、すべての MCP サーバーをブロックします。139空のサーバーマップを含む `managed-mcp.json` をデプロイして、[セッションを開始したアプリが登録するインプロセスサーバー](#exclusive-control-with-managed-mcp-json)を除くすべての MCP サーバーをブロックします。
113 140
114```json theme={null}141```json theme={null}
115{142{
117}144}
118```145```
119 146
120ユーザーは `/mcp` に MCP サーバーを表示しません。`claude mcp add` は上記のエンタープライズポリシーエラーで失敗します。ユーザーが以前に設定したサーバーは、次回セッションを開始するときに読み込みを停止します。ポリシーが理由であることについて警告はありません。147`claude mcp add` は上記のエンタープライズポリシーエラーで失敗します。ユーザーが以前に構成したサーバーは、次回セッションを開始するときに読み込まれなくなります。ポリシーが理由であることについての警告はありません。`managedMcpServers` を通じて提供するサーバーは空のマップの下でも読み込まれるため、MCP を完全に無効にするにはそのキーも設定しないままにしてください。
121 148
122<h3 id="allow-claude-ai-connectors-alongside-the-managed-set">149<h3 id="allow-claude-ai-connectors-alongside-the-managed-set">
123 管理対象セットと共に claude.ai コネクターを許可する150 マネージドセットと共に claude.ai コネクタを許可する
124</h3>151</h3>
125 152
126`managed-mcp.json` をデプロイすると、デフォルトでは [claude.ai コネクター](/docs/ja/mcp#use-mcp-servers-from-claude-ai)が抑制されます。これには、管理者が claude.ai 管理コンソールで組織向けに設定したコネクターも含まれます。これらのコネクターを `managed-mcp.json` 内のサーバーと共に読み込むには、[管理設定ソース](/docs/ja/admin-setup#decide-how-settings-reach-devices)で `"allowAllClaudeAiMcps": true` を設定します。Claude Code v2.1.149 以降が必要です。153デフォルトでは、`managed-mcp.json` をデプロイすると、Claude Code が自身で取得する [claude.ai コネクタ](/docs/ja/mcp#use-mcp-servers-from-claude-ai)(管理者が claude.ai 管理コンソールで組織用に構成したコネクタを含む)が抑制されます。`managed-mcp.json` 内のサーバーと共にそれらのコネクタを読み込むには、[マネージド設定ソース](/docs/ja/admin-setup#decide-how-settings-reach-devices)で `"allowAllClaudeAiMcps": true` を設定してください。
154
155設定が有効になると、Claude Code は `managed-mcp.json` がデプロイされていない場合に読み込むのと同じ claude.ai コネクタを読み込みます。[許可リストと拒否リスト](#policy-based-control-with-allowlists-and-denylists)はそれらのコネクタに引き続き適用されるため、`deniedMcpServers` で特定のコネクタをブロックできます。この設定は Claude Code が自身で取得する claude.ai コネクタのみに影響します。プラグイン提供のサーバーは抑制されたままです。
156
157クラウドセッションとデスクトップアプリのローカルおよび SSH セッションは、別の方法でコネクタを受け取ります。これは[コネクタが Claude Code に到達する方法](/docs/ja/mcp#how-connectors-reach-claude-code)で説明されています。クラウドセッションを実行するホスト上の `managed-mcp.json`([セルフホストランナーホスト](/docs/ja/self-hosted-environments-configuration#mcp-servers)など)は、`allowAllClaudeAiMcps` を設定するかどうかに関わらず、そのセッションのコネクタを抑制します。デスクトップアプリがローカルおよび SSH セッションに配信するコネクタには `managed-mcp.json` は到達しません。
158
159Claude Code は `allowAllClaudeAiMcps` を管理者制御のポリシー層からのみ読み込みます。サーバー管理設定、MDM デプロイされた plist または HKLM レジストリキー、またはシステム `managed-settings.json` ファイルです。ユーザーまたはプロジェクト設定に配置しても効果がないため、ユーザーは排他的制御が抑制したコネクタを再度有効にすることはできません。
127 160
128この設定が有効になると、Claude Code は `managed-mcp.json` がデプロイされていない場合に読み込むのと同じ claude.ai コネクターを読み込みます。[許可リストと拒否リスト](#policy-based-control-with-allowlists-and-denylists)は引き続きこれらのコネクターに適用されるため、`deniedMcpServers` で特定のコネクターをブロックできます。この設定は claude.ai コネクターのみに影響します。プラグイン提供のサーバーは抑制されたままです。161<h2 id="provide-servers-through-managed-settings">
162 マネージド設定を通じてサーバーを提供する
163</h2>
164
165MCP を排他的に制御することなく、すべてのユーザーにリモート MCP サーバーのセットを提供するには、[マネージド設定ソース](/docs/ja/admin-setup#decide-how-settings-reach-devices)(サーバーマネージド設定、[Claude アプリゲートウェイ](/docs/ja/claude-apps-gateway-config#what-goes-in-cli)ポリシー、MDM プロファイルまたはレジストリポリシー、または `managed-settings.json`)の `managedMcpServers` の下にリストします。ユーザーは自分で追加したサーバーを保持し、さらにあなたのサーバーを受け取ります。Claude Code v2.1.259 以降が必要です。以前のクライアントはこのキーを無視します。
166
167値はサーバー名をキーとするオブジェクトです。各エントリは、プロジェクト [`.mcp.json`](/docs/ja/mcp#project-scope) ファイル内の HTTP または SSE サーバーと同じ形状を持ち、[リモート MCP サーバーで認証する](/docs/ja/mcp#authenticate-with-remote-mcp-servers)で説明されているオプションの `headers` および `oauth` メンバーを含みます。この例は、各ユーザーが OAuth でサインインする検索サーバーと、組織が発行するヘッダーを送信するレコードサーバーを提供します。
168
169```json theme={null}
170{
171 "managedMcpServers": {
172 "search": {
173 "type": "http",
174 "url": "https://search.example.com/mcp"
175 },
176 "records": {
177 "type": "http",
178 "url": "https://records.example.com/mcp",
179 "headers": {
180 "X-Records-Key": "key-issued-for-all-claude-code-users"
181 }
182 }
183 }
184}
185```
186
187マシン上のマネージド設定を読み取ることができるすべてのユーザー(ユーザー自身を含む)は、ここで設定したヘッダー値を読み取ることができます。その全体的なオーディエンス向けに発行された認証情報を使用するか、`headers` を省略して、各ユーザーが OAuth でサインインするようにしてください。
188
189<h3 id="what-an-entry-can-contain">
190 エントリに含めることができるもの
191</h3>
129 192
130Claude Code は、この設定を管理者制御のポリシー層からのみ読み取ります。サーバー管理設定、MDM デプロイされた plist または HKLM レジストリキー、またはシステム `managed-settings.json` ファイルです。これをユーザーまたはプロジェクト設定に配置しても効果がないため、ユーザーは排他的制御が抑制したコネクターを再度有効にすることはできません。193Claude Code は、以下のすべてのチェックに合格した場合にのみエントリを読み込みます。1 つのチェックに失敗したエントリはドロップし、`/status` で読み取ることができる通知を記録し、他のエントリは引き続き読み込みます。
194
195* `type` は `http` または `sse` です。`.mcp.json` と同様に、`streamable-http` は `http` のエイリアスとして受け入れられます。
196* `url` は `https://` URL です。Claude Code は `localhost` を指すものを含む、プレーンな `http://` URL を拒否します。
197* エントリに `command`、`args`、`env`、または `headersHelper` メンバーがないため、マネージド設定ドキュメントはユーザーのマシン上で実行するプログラムを指定しません。
198* 値に `${VAR}` 参照が含まれていません。Claude Code はこれらのエントリ内の環境変数を展開しないため、リテラル値を記述してください。
199* サーバー名には文字、数字、ハイフン、アンダースコアのみが含まれ、キーまたは値に制御文字や非表示の書式文字が含まれていません。
200
201Claude Desktop には同じ名前のマネージド設定があり、その値は異なるエントリ形状の配列であるため、一方を他方にコピーしないでください。Claude Code は配列形式を受け入れず、代わりに通知を記録します。
202
203Claude アプリゲートウェイは起動時に同じチェックを実行します。[ポリシー内の MCP サーバー](/docs/ja/claude-apps-gateway-config#mcp-servers-in-a-policy)を参照してください。
204
205<h3 id="how-provided-servers-load">
206 提供されたサーバーがどのように読み込まれるか
207</h3>
208
209これらのルールは、提供されたサーバーが別のサーバー定義またはこのページの別の設定と重複する場合に何が読み込まれるかを決定します。
210
211* 提供されたサーバーは、ローカル、プロジェクト、またはユーザースコープ内の同じ名前のサーバーよりも優先され、同じ URL を指すプラグインサーバーまたは claude.ai コネクタよりも優先されます。
212* `managed-mcp.json` もデプロイする場合、Claude Code はそのサーバーと提供されたサーバーを一緒に読み込み、両方が名前を定義する場合はファイルのエントリが優先されます。
213* [`strictPluginOnlyCustomization`](/docs/ja/settings-reference#strictpluginonlycustomization) が `mcp` サーフェスをロックしても、提供されたサーバーは引き続き読み込まれます。
214* `deniedMcpServers` はユーザー自身の設定からのエントリを含む提供されたサーバーに適用されるため、ユーザーは自分自身のためにそれをブロックできます。提供されたサーバーは `allowedMcpServers` エントリを必要としません。
215
216`managed-mcp.json` もデプロイしていない場合、実行ごとのフラグはその意味を保持します。
217
218* ユーザーが同じ名前で `--mcp-config` で渡すサーバーは、その実行のために提供されたサーバーを置き換え、`allowedMcpServers` に対してチェックされます。
219* `--strict-mcp-config` は、提供されたサーバーを他のすべての設定されたサーバーと一緒に除外します。
220
221`managed-mcp.json` がデプロイされている場合、両方のフラグは [managed-mcp.json による排他的制御](#exclusive-control-with-managed-mcp-json)で説明されているように動作します。
222
223<h3 id="what-users-can-see-and-change">
224 ユーザーが見ることができ、変更できるもの
225</h3>
226
227ユーザーは提供されたサーバーを編集または削除できません。
228
229* `claude mcp remove` は、サーバーが組織によって提供されていることを報告します。
230* `managed-mcp.json` もデプロイしていない場合、ユーザーが同じ名前で追加するエントリは保存されますが、あなたのサーバーが存在する間は使用されません。
231* ユーザーは [`/mcp`](/docs/ja/mcp#disable-a-server-without-removing-it) で提供されたサーバーを自分自身のためにオフにすることができます。これは **Managed MCPs** の下に提供されたサーバーをリストします。
232
233`claude mcp get` と `/mcp` は、提供されたサーバーの URL をそのホストのみとして表示します。例えば `https://mcp.example.com/…` であり、`claude mcp get` はヘッダー名を値なしで表示します。
234
235<h3 id="where-managedmcpservers-applies">
236 `managedMcpServers` が適用される場所
237</h3>
238
239Claude Code は、[Claude Code がマネージドソースを組み合わせる方法](/docs/ja/managed-settings#how-claude-code-combines-managed-sources)の下で選択するマネージドソースから `managedMcpServers` を読み取ります。そのソースが [`managedSourcesBehavior`](/docs/ja/settings-reference#managedsourcesbehavior) を `"merge"` に設定する場合、Claude Code は代わりにすべての管理者ソースからサーバーを提供し、2 つのソースが同じ名前を定義する場合、より高いランクのソースのエントリが全体に適用されます。ユーザーが書き込み可能な HKCU レジストリから、[埋め込みホストが提供する親設定](/docs/ja/managed-settings#parent-settings-from-embedding-hosts)から、またはユーザー、プロジェクト、またはローカル設定ファイルから読み取ることはなく、警告とともにキーをドロップします。
240
241Claude Code は、サードパーティデプロイメント上の Claude Desktop アプリの Code タブまたはアプリの Cowork セッションでキーを読み取りません。Claude Desktop はそれらのセッションの MCP サーバーを自身で提供およびロックするためです。マネージド設定がそこにキーを含む場合、`/status` と `claude doctor` はそう言います。
242
243<h3 id="when-provided-servers-connect">
244 提供されたサーバーが接続するとき
245</h3>
246
247`managedMcpServers` がサーバーマネージド設定を通じて到着する場合、そのタイミングは [フェッチとキャッシング動作](/docs/ja/server-managed-settings#fetch-and-caching-behavior)に従います。
248
249* キャッシュされた設定を持つマシンでは、Claude Code はこのキーのキャッシュされたコピーを、サーバーがセッションの設定を確認するまで保留し、その確認を待ってから MCP サーバーを読み込みます。確認が失敗した場合、セッションは提供されたサーバーなしで続行され、`/status` はそれらが保留されていることを示します。
250* マシンの最初の起動時に、まだキャッシュされたものがない場合、設定が到着する前に開始される対話型セッションは、提供されたサーバーが到着するとすぐに接続し、既に開始されている `claude -p` 実行はそれらなしで完了できます。
251
252[ゲートウェイサインイン](/docs/ja/claude-apps-gateway-config#precedence-with-other-managed-sources)では、Claude Code はセッション開始前にポリシーを読み込むため、どちらのケースも提供されたサーバーを遅延またはスキップしません。
253
254既に実行中の対話型セッションはキーへの編集を適用します。
255
256* **サーバーを追加する**:Claude Code は更新された設定が到着したときにそれを接続し、再起動は不要です。
257* **サーバーのエントリを変更する**:これらのセッションは新しい定義で再接続します。
258* **サーバーを削除する**:実行中の対話型セッションは、変更された設定を読み取ると、それを切断します。非対話型(`-p`)実行はそれが終了するまでそれを保持します。
131 259
132<h2 id="policy-based-control-with-allowlists-and-denylists">260<h2 id="policy-based-control-with-allowlists-and-denylists">
133 許可リストとブロックリストによるポリシーベースの制御261 allowlist と denylist を使用したポリシーベースの制御
134</h2>262</h2>
135 263
136許可リストとブロックリストは、設定されたサーバーのどれが読み込まれることを許可するかをフィルタリングします。これらはレジストリではありません。サーバーは、ユーザー、プラグイン、または `managed-mcp.json` によって追加される前に、許可リストまたはブロックリストが適用されます。ユーザーにサーバーをデプロイするには、[`managed-mcp.json`](#exclusive-control-with-managed-mcp-json) を使用します。両方のリストは、[`--mcp-config` CLI フラグ](/docs/ja/cli-reference#cli-flags)で渡されるサーバーもフィルタリングします。`--strict-mcp-config` は、どの設定ファイルが読み込まれるかを制限し、どちらのリストもバイパスしません。264allowlist と denylist は、設定されたサーバーのうちどれをロードできるかをフィルタリングします。これらはレジストリではなく、allowlist または denylist が適用される前に、ユーザー、プラグイン、または組織によってサーバーを追加する必要があります。
265
266組織が `managedMcpServers` を通じて配信するサーバーは allowlist エントリなしでロードされ、[サーバーの評価方法](#how-a-server-is-evaluated)は `managed-mcp.json` サーバーについて説明しています。denylist はインプロセス `type: "sdk"` エントリを除き、どこから来たサーバーにも適用されます。
137 267
138許可リストを権限あるものにするには、[管理設定ソース](/docs/ja/admin-setup#decide-how-settings-reach-devices)(サーバー管理設定またはデプロイされた `managed-settings.json` ファイルなど)で `allowedMcpServers` と `allowManagedMcpServersOnly: true` を一緒に設定します。[許可リストを管理設定のみに制限する](#restrict-the-allowlist-to-managed-settings-only)は設定を示しています。`allowManagedMcpServersOnly` がない場合、すべての設定ソース(ユーザー独自の `~/.claude/settings.json` を含む)からの許可リストがマージされるため、ユーザーは許可リストが許可する内容を拡張できます。ブロックリストは関係なくすべてのソースからマージされます。268サーバーをユーザーに配信するには、[`managed-mcp.json`](#exclusive-control-with-managed-mcp-json) または [`managedMcpServers`](#provide-servers-through-managed-settings) を使用します。両方のリストは、インプロセス `type: "sdk"` エントリを除き、[`--mcp-config` CLI フラグ](/docs/ja/cli-reference#cli-flags)で渡されたサーバーもフィルタリングします。`--strict-mcp-config` はどの設定ファイルをロードするかを制限し、どちらのリストもバイパスしません。
269
270allowlist を権限あるものにするには、[管理設定ソース](/docs/ja/admin-setup#decide-how-settings-reach-devices)(サーバー管理設定や配信された `managed-settings.json` ファイルなど)で `allowedMcpServers` と `allowManagedMcpServersOnly: true` を一緒に設定します。[allowlist を管理設定のみに制限する](#restrict-the-allowlist-to-managed-settings-only)は設定を示しています。`allowManagedMcpServersOnly` がない場合、ユーザー自身の `~/.claude/settings.json` を含むすべての設定スコープから allowlist がマージされるため、ユーザーは allowlist が許可するものを広げることができます。denylist はスコープに関係なくマージされます。
139 271
140<Note>272<Note>
141 `allowManagedMcpServersOnly` は `allowManagedPermissionRulesOnly` とは別です。後者は [権限ルール](/docs/ja/permissions#managed-settings)のみをロックダウンします。そのフラグを設定しても、MCP 許可リストは実施されません。273 `allowManagedMcpServersOnly` は `allowManagedPermissionRulesOnly` とは別であり、後者は[権限ルール](/docs/ja/permissions#managed-settings)のみをロックダウンします。そのフラグを設定しても MCP allowlist は強制されません。
142</Note>274</Note>
143 275
144<h3 id="match-servers-by-url-command-or-name">276<h3 id="match-servers-by-url-command-or-name">
145 URL、コマンド、または名前でサーバーを一致させる277 URL、コマンド、または名前でサーバーをマッチさせる
146</h3>278</h3>
147 279
148`allowedMcpServers` と `deniedMcpServers` はエントリのリストです。各エントリは、URL、コマンド、または名前でサーバーを識別する単一のキーを持つオブジェクトです。280`allowedMcpServers` と `deniedMcpServers` はエントリのリストです。各エントリは、サーバーを URL、コマンド、または名前で識別する単一のキーを持つオブジェクトです。
149 281
150| キー | 一致 | 用途 |282| キー | マッチ対象 | 用途 |
151| :-------------- | :----------------------------------- | :------------------------- |283| :-------------- | :----------------------------------- | :------------------- |
152| `serverUrl` | リモートサーバー URL。正確またはワイルドカード `*` を使用 | HTTP および SSE サーバー |284| `serverUrl` | リモートサーバー URL、完全一致または `*` ワイルドカード | HTTP および SSE サーバー |
153| `serverCommand` | stdio サーバーを開始する正確なコマンドと引数 | Stdio サーバー |285| `serverCommand` | stdio サーバーを開始する正確なコマンドと引数 | stdio サーバー |
154| `serverName` | ユーザーが割り当てたラベル。完全一致のみ。ワイルドカードは展開されません | どちらのタイプでも、ただし下の警告を参照してください |286| `serverName` | ユーザーが割り当てたラベル。完全一致のみ。ワイルドカードは展開されません | どちらのタイプでも、ただし下の警告を参照 |
155 287
156`allowedMcpServers` を設定しないことは、空の配列に設定することとは異なります。288`allowedMcpServers` を設定しないことは、空の配列に設定することとは異なります。
157 289
158| 設定 | 設定なし(デフォルト) | 空の配列 `[]` | 入力済み |290| 設定 | 設定なし(デフォルト) | 空の配列 `[]` | 設定あり |
159| :------------------ | :-------------- | :------------- | :---------------- |291| :------------------ | :------------- | :------------------------------------------------------ | :-------------------------------------------------------------- |
160| `allowedMcpServers` | すべてのサーバーが許可されます | サーバーは許可されません | 一致するサーバーのみが許可されます |292| `allowedMcpServers` | すべてのサーバーが許可される | [組織自身のサーバー](#how-a-server-is-evaluated)を除き、サーバーは許可されません | マッチするサーバーのみが許可され、[組織自身のサーバー](#how-a-server-is-evaluated)は除外されます |
161| `deniedMcpServers` | サーバーはブロックされません | サーバーはブロックされません | 一致するサーバーがブロックされます |293| `deniedMcpServers` | サーバーはブロックされません | サーバーはブロックされません | マッチするサーバーがブロックされます |
162 294
163[管理設定での無効なエントリ](/docs/ja/settings#invalid-entries-in-managed-settings)を参照して、エントリがスキーマ検証に失敗した場合に何が起こるかを確認してください。295エントリがスキーマ検証に失敗した場合の詳細は、[管理設定の無効なエントリ](/docs/ja/managed-settings#invalid-entries-in-managed-settings)を参照してください。
164 296
165<Warning>297<Warning>
166 `serverName` エントリは、どちらのリストでも、セキュリティ制御ではありません。名前は、`claude mcp add` を実行するか設定ファイルを編集するときにユーザーが割り当てるラベルであり、基になるサーバーではないため、ユーザーは任意のサーバーを `github` と呼ぶことができます。claude.ai コネクタの場合、名前は claude.ai によって返される表示名であり、変更される可能性があります。実際に実行されるサーバーを実施するには、`serverCommand` または `serverUrl` エントリを追加します。298 どちらのリストでも `serverName` エントリはセキュリティ制御ではありません。名前は `claude mcp add` を実行するか設定ファイルを編集するときにユーザーが割り当てるラベルであり、基盤となるサーバーではないため、ユーザーは任意のサーバーを `github` と呼ぶことができます。claude.ai コネクタの場合、名前は claude.ai が返す表示名であり、変更される可能性があります。実際に実行されるサーバーを強制するには、`serverCommand` または `serverUrl` エントリを追加します。
167</Warning>299</Warning>
168 300
169`serverName` の検証は 2 つのリスト間で異なります。301`serverName` の検証は 2 つのリスト間で異なります。
170 302
171* `deniedMcpServers` では、`serverName` は任意の空でない文字列を受け入れるため、[claude.ai コネクタ](/docs/ja/mcp#use-mcp-servers-from-claude-ai)をその表示名でブロックできます。たとえば、`{ "serverName": "claude.ai Slack" }` は Slack コネクタをブロックします。ブロックが名前変更に対して堅牢である必要がある場合、またはコネクタ名が衝突して ` (N)` サフィックスを取得する場合は、`serverUrl` エントリを優先します。303* `deniedMcpServers` では、`serverName` は空でない任意の文字列を受け入れるため、[claude.ai コネクタ](/docs/ja/mcp#use-mcp-servers-from-claude-ai)を表示名でブロックできます。たとえば、`{ "serverName": "claude.ai Slack" }` は Slack コネクタをブロックします。deny が名前変更に対して堅牢である必要がある場合、またはコネクタ名が衝突して ` (N)` サフィックスを取得する場合は、`serverUrl` エントリを優先します。
172* `allowedMcpServers` では、`serverName` は文字、数字、ハイフン、アンダースコアに限定されます。claude.ai コネクタをホワイトリストに登録するには `serverUrl` を使用します。304* `allowedMcpServers` では、`serverName` は文字、数字、ハイフン、アンダースコアに限定されます。Claude Code が自身でフェッチする claude.ai コネクタを allowlist に追加するには `serverUrl` を使用します。クラウドホストが自己ホスト型セッションに配信するコネクタの場合は、代わりに[コネクタトラフィックがネットワークを離れる](/docs/ja/self-hosted-environments-deploy#connector-traffic-leaves-your-network)の下にリストされているエントリを使用します。
173 305
174すべての claude.ai コネクタをオフにするには、[`disableClaudeAiConnectors`](/docs/ja/mcp#disable-claude-ai-connectors) を参照してください。306Claude Code がフェッチするすべての claude.ai コネクタをオフにするには、[`disableClaudeAiConnectors`](/docs/ja/mcp#disable-claude-ai-connectors)を参照してください。
175 307
176<h3 id="how-a-server-is-evaluated">308<h3 id="how-a-server-is-evaluated">
177 サーバーの評価方法309 サーバーの評価方法
178</h3>310</h3>
179 311
180`managed-mcp.json` からのサーバーを含む、サーバーを読み込む前に、Claude Code は順序に 3 つのチェックを実行します。312サーバーをロードする前に、`managed-mcp.json` からのサーバーを含めて、Claude Code は以下の 3 つのチェックを順番に実行します。ユーザーがサーバーを再接続するか、`/mcp` で無効なサーバーをオンに戻すときに再度実行されます。インプロセス `type: "sdk"` サーバー([セッションを開始したアプリが登録](/docs/ja/mcp#how-connectors-reach-claude-code))は、3 つすべてをスキップします。
313
3141. **リストをマージします。** すべての設定スコープからの allowlist と denylist エントリが 1 つの allowlist と 1 つの denylist に結合され、管理スコープのリストは [Claude Code が適用する管理ソースまたはソース](/docs/ja/managed-settings#how-claude-code-combines-managed-sources)から取得されます。`allowManagedMcpServersOnly` が `true` の場合、管理 allowlist のみが保持されます。denylist は常にすべてのスコープからマージされます。
3152. **denylist をチェックします。** URL、コマンド、または名前で denylist エントリにマッチするサーバーはブロックされます。denylist マッチをオーバーライドするものはありません。
3163. **allowlist をチェックします。** `allowedMcpServers` がどこにも設定されていない場合、denylist を通過したすべてのサーバーがロードされます。設定されている場合、サーバーがマッチする必要があるものはそのタイプに依存し、以下の表に示されています。
181 317
1821. **リストをマージします。** すべての設定ソースからの許可リストとブロックリストエントリが 1 つの許可リストと 1 つのブロックリストに結合されます。`allowManagedMcpServersOnly` が `true` の場合、管理対象許可リストのみが保持されます。ブロックリストは常にすべてのソースからマージされます。318 組織自身のサーバーはこのチェックをスキップします。すべての `managedMcpServers` エントリ、および `${VAR}` 展開を使用しない値を持つ `managed-mcp.json` エントリです。Chrome の Claude、Claude Code が実行中の VS Code または JetBrains IDE に接続する `ide` サーバー、CLI 自身が設定するサーバーなどの組み込みサーバーもスキップします。
1832. **ブロックリストをチェックします。** URL、コマンド、または名前でブロックリストエントリと一致するサーバーはブロックされます。ブロックリスト一致をオーバーライドするものはありません。
1843. **許可リストをチェックします。** `allowedMcpServers` がどこにも設定されていない場合、ブロックリストを通過したすべてのサーバーが読み込まれます。設定されている場合、サーバーが一致する必要があるものは、その種類に依存し、以下の表に示されています。
185 319
186| サーバータイプ | 一致するときに許可されます |320 コマンド、引数、`env`、URL、またはヘッダーで `${VAR}` 展開を使用する `managed-mcp.json` サーバーは、ユーザー、プラグイン、`--mcp-config`、または claude.ai が追加するすべてのサーバーと同様にチェックされます。
187| :----------------- | :------------------------------------------------------------------------------------- |
188| リモート(HTTP または SSE) | `serverUrl` エントリ。`serverName` 一致は、許可リストに `serverUrl` エントリが含まれていない場合にのみカウントされます |
189| Stdio | `serverCommand` エントリ。`serverName` 一致は、許可リストに `serverCommand` エントリが含まれていない場合にのみカウントされます |
190 321
191これらのチェック内で 3 つの一致ルールが適用されます。322| サーバータイプ | マッチ時に許可される |
323| :----------------- | :------------------------------------------------------------------------------------------- |
324| リモート(HTTP または SSE) | `serverUrl` エントリ。`serverName` マッチは allowlist に `serverUrl` エントリが含まれていない場合にのみカウントされます |
325| stdio | `serverCommand` エントリ。`serverName` マッチは allowlist に `serverCommand` エントリが含まれていない場合にのみカウントされます |
192 326
193* **コマンドは正確に一致します。** すべての引数、順序通り。`["npx", "-y", "server"]` は `["npx", "server"]` または `["npx", "-y", "server", "--flag"]` と一致しません。327これらのチェック内で 3 つのマッチングルールが適用されます。
194* **`serverCommand` と `serverUrl` の値は一致する前に展開されます。** ポリシーエントリとサーバーの設定値の両方が、`.mcp.json` と同じ [`${VAR}` と `${VAR:-default}` 展開](/docs/ja/mcp#environment-variable-expansion-in-mcp-json)を通過するため、`["${HOME}/bin/server"]` として記述されたエントリは、同じ参照または展開されたパスのいずれかを使用するサーバー設定と一致します。Windows では、`${HOME}` の代わりに `${USERPROFILE}` など、そこで設定されている環境変数を参照してください。`serverName` の値は文字通りに一致し、展開されることはありません。328
195* **URL は `*` ワイルドカード** をパターン内の任意の場所(スキームを含む)でサポートします。ホスト名の一致は大文字と小文字を区別しません。末尾の FQDN ドットを無視します。したがって、`https://Mcp.Example.com/*` は `https://mcp.example.com/api` と一致します。パスは大文字と小文字を区別したままです。329* **コマンドは完全にマッチします。** すべての引数、順番に。`["npx", "-y", "server"]` は `["npx", "server"]` または `["npx", "-y", "server", "--flag"]` にマッチしません。
330* **`serverCommand` と `serverUrl` の値はマッチング前に展開されます。** ポリシーエントリとサーバーの設定値の両方が [`${VAR}` と `${VAR:-default}` 展開](/docs/ja/mcp#environment-variable-expansion-in-mcp-json)を通過するため、`["${HOME}/bin/server"]` として書かれたエントリは、同じ参照または展開されたパスのいずれかを使用するサーバー設定にマッチします。Windows では、`${HOME}` の代わりに `${USERPROFILE}` など、そこで設定されている環境変数を参照します。`serverName` の値は文字通りマッチし、展開されません。両側は異なる環境を読みます。[ポリシーエントリの展開方法](#how-policy-entries-expand)は、どちらであるか、および allowlist と denylist エントリがどのように異なるかについて説明しています。
331* **URL は `*` ワイルドカード**をパターン内の任意の場所(スキームを含む)でサポートします。ホスト名マッチングは大文字と小文字を区別せず、末尾の FQDN ドットを無視するため、`https://Mcp.Example.com/*` は `https://mcp.example.com/api` にマッチします。パスは大文字と小文字を区別したままです。
196 332
197| パターン | 許可 |333| パターン | 許可 |
198| :-------------------------- | :------------------------------------ |334| :-------------------------- | :------------------------------------- |
199| `https://mcp.example.com/*` | 特定のドメイン上のすべてのパス |335| `https://mcp.example.com/*` | 特定のドメイン上のすべてのパス |
200| `https://mcp.example.com` | そのドメイン上のすべてのパスも。パスのないパターンは任意のパスと一致します |336| `https://mcp.example.com` | そのドメイン上のすべてのパスも。パスのないパターンは任意のパスにマッチします |
201| `https://*.example.com/*` | `example.com` の任意のサブドメイン |337| `https://*.example.com/*` | `example.com` の任意のサブドメイン |
202| `http://localhost:*/*` | localhost 上の任意のポート |338| `http://localhost:*/*` | localhost 上の任意のポート |
203| `*://mcp.example.com/*` | 特定のドメインへの任意のスキーム |339| `*://mcp.example.com/*` | 特定のドメインへの任意のスキーム |
204 340
205`${VAR}` 展開は Claude Code 独自のプロセス環境を読み取るため、変数を参照する `serverCommand` または `serverUrl` ポリシーエントリは、ユーザーが設定する値に展開されます。実施に依存するエントリには、リテラル URL とコマンドを使用してください。341<h4 id="how-policy-entries-expand">
342 ポリシーエントリの展開方法
343</h4>
344
345サーバーの設定値は、`.mcp.json` の残りの部分と同様に、ライブプロセス環境から展開されます。ポリシーエントリは代わりにピン留めされた環境から展開されるため、プロジェクトまたはユーザー設定ファイルによって設定された変数が allowlist エントリの意味を変更することはできません。ポリシーエントリはまだ参照する任意の変数の起動シェルの値に依存するため、強制に依存するエントリには文字通りの URL とコマンドを使用します。
346
347| エントリリスト | 展開元 | URL エントリのスキーム、ホスト、またはパススコープを変更する展開 |
348| ------------------- | --------------------------------------------------------------------------------- | ---------------------------------- |
349| `allowedMcpServers` | Claude Code が開始した環境、プラス管理設定からの `env` 値 | Claude Code はエントリを無視します |
350| `deniedMcpServers` | 同じ、および起動値がなく `:-default` がない変数は、ユーザーまたは管理設定など、リポジトリ外の設定ファイルから入力され、許可されるものを広げるだけです | エントリはまだマッチします |
351
352Claude Code v2.1.219 以降が必要です。
206 353
207<h3 id="example-configuration">354<h3 id="example-configuration">
208 設定例355 設定例
209</h3>356</h3>
210 357
211以下の設定は、ブロックリストを含むハード許可リストを設定します。強調表示された行は、リストの残りの部分がどのように評価されるかを変更し、ブロック後のコールアウトは各行を説明しています。358以下の設定は、denylist を使用したハード allowlist をセットアップします。ハイライトされた行は、リストの残りの部分がどのように評価されるかを変更し、ブロック後の吹き出しは各行を説明しています。
212 359
213```json {3,5,11} theme={null}360```json {3,5,11} theme={null}
214{361{
228}375}
229```376```
230 377
231* **3 行目**:最初の `serverUrl` エントリ。1 つが存在すると、すべてのリモートサーバーが URL パターンと一致する必要があるため、ユーザーは許可された名前を付けることで許可されていないリモートサーバーを取得することはできません。378* **3 行目**: 最初の `serverUrl` エントリ。1 つ存在すると、すべてのリモートサーバーは URL パターンにマッチする必要があるため、ユーザーは許可された名前を与えることでリストされていないリモートサーバーを取得できません。
232* **5 行目**:最初の `serverCommand` エントリ。stdio サーバーでも同じ効果があるため、すべてのローカルサーバーが正確にリストされたコマンドと一致する必要があります。379* **5 行目**: 最初の `serverCommand` エントリ。stdio サーバーでも同じ効果があるため、すべてのローカルサーバーはリストされたコマンドに完全にマッチする必要があります。
233* **11 行目**:ブロックリスト内の `serverName` エントリ。ブロックリストエントリは常に適用されるため、`dangerous-server` という名前のサーバーは URL またはコマンドに関係なくブロックされます。380* **11 行目**: denylist の `serverName` エントリ。denylist エントリは常に適用されるため、`dangerous-server` という名前のサーバーは URL またはコマンドに関係なくブロックされます。
234 381
235この許可リスト内の `serverName` エントリは、両方のトランスポートタイプが既に厳密なエントリを持っているため、何とも一致しません。382この allowlist の `serverName` エントリは、両方のトランスポートタイプがすでにより厳密なエントリを持っているため、何にもマッチしません。
236 383
237以下のアコーディオンは、他の許可リストとブロックリストの組み合わせに対してサーバーがどのように評価されるかについて説明しています。384以下のアコーディオンは、他の allowlist と denylist の組み合わせに対してサーバーがどのように評価されるかについて説明しています。
238 385
239<Accordion title="URL のみの許可リスト">386<Accordion title="URL のみの allowlist">
240 ```json theme={null}387 ```json theme={null}
241 {388 {
242 "allowedMcpServers": [389 "allowedMcpServers": [
247 ```394 ```
248 395
249 | サーバー | 結果 |396 | サーバー | 結果 |
250 | :------------------------------------------------- | :--------------------------- |397 | :------------------------------------------------- | :---------------------------- |
251 | `https://mcp.example.com/api` の HTTP サーバー | 許可:URL パターンと一致 |398 | `https://mcp.example.com/api` の HTTP サーバー | 許可:URL パターンにマッチ |
252 | `https://api.internal.example.com/mcp` の HTTP サーバー | 許可:ワイルドカードサブドメインと一致 |399 | `https://api.internal.example.com/mcp` の HTTP サーバー | 許可:ワイルドカードサブドメインにマッチ |
253 | `https://external.example.com/mcp` の HTTP サーバー | ブロック:URL パターンと一致しません |400 | `https://external.example.com/mcp` の HTTP サーバー | ブロック:URL パターンにマッチしません |
254 | 任意のコマンドを持つ Stdio サーバー | ブロック:一致する名前またはコマンドエントリがありません |401 | 任意のコマンドを持つ stdio サーバー | ブロック:マッチする名前またはコマンドエントリがありません |
255</Accordion>402</Accordion>
256 403
257<Accordion title="コマンドのみの許可リスト">404<Accordion title="コマンドのみの allowlist">
258 ```json theme={null}405 ```json theme={null}
259 {406 {
260 "allowedMcpServers": [407 "allowedMcpServers": [
264 ```411 ```
265 412
266 | サーバー | 結果 |413 | サーバー | 結果 |
267 | :------------------------------------------------- | :-------------------- |414 | :------------------------------------------------- | :--------------------- |
268 | `["npx", "-y", "approved-package"]` を持つ Stdio サーバー | 許可:コマンドと一致 |415 | `["npx", "-y", "approved-package"]` を持つ stdio サーバー | 許可:コマンドにマッチ |
269 | `["node", "server.js"]` を持つ Stdio サーバー | ブロック:コマンドと一致しません |416 | `["node", "server.js"]` を持つ stdio サーバー | ブロック:コマンドにマッチしません |
270 | `my-api` という名前の HTTP サーバー | ブロック:一致する名前エントリがありません |417 | `my-api` という名前の HTTP サーバー | ブロック:マッチする名前エントリがありません |
271</Accordion>418</Accordion>
272 419
273<Accordion title="混合名とコマンド許可リスト">420<Accordion title="名前とコマンドが混在した allowlist">
274 ```json theme={null}421 ```json theme={null}
275 {422 {
276 "allowedMcpServers": [423 "allowedMcpServers": [
281 ```428 ```
282 429
283 | サーバー | 結果 |430 | サーバー | 結果 |
284 | :--------------------------------------------------------------------- | :----------------------------------------------- |431 | :--------------------------------------------------------------------- | :------------------------------------------------ |
285 | `local-tool` という名前で `["npx", "-y", "approved-package"]` を持つ Stdio サーバー | 許可:コマンドと一致 |432 | `local-tool` という名前で `["npx", "-y", "approved-package"]` を持つ stdio サーバー | 許可:コマンドにマッチ |
286 | `local-tool` という名前で `["node", "server.js"]` を持つ Stdio サーバー | ブロック:コマンドエントリが存在しますが一致しません |433 | `local-tool` という名前で `["node", "server.js"]` を持つ stdio サーバー | ブロック:コマンドエントリが存在しますがマッチしません |
287 | `github` という名前で `["node", "server.js"]` を持つ Stdio サーバー | ブロック:stdio サーバーはコマンドエントリが存在する場合、コマンドと一致する必要があります |434 | `github` という名前で `["node", "server.js"]` を持つ stdio サーバー | ブロック:stdio サーバーはコマンドエントリが存在する場合、コマンドにマッチする必要があります |
288 | `github` という名前の HTTP サーバー | 許可:名前と一致 |435 | `github` という名前の HTTP サーバー | 許可:名前にマッチ |
289 | `other-api` という名前の HTTP サーバー | ブロック:名前が一致しません |436 | `other-api` という名前の HTTP サーバー | ブロック:名前がマッチしません |
290</Accordion>437</Accordion>
291 438
292<Accordion title="名前のみの許可リスト">439<Accordion title="名前のみの allowlist">
293 ```json theme={null}440 ```json theme={null}
294 {441 {
295 "allowedMcpServers": [442 "allowedMcpServers": [
300 ```447 ```
301 448
302 | サーバー | 結果 |449 | サーバー | 結果 |
303 | :------------------------------------------- | :------------- |450 | :------------------------------------------ | :-------------- |
304 | 任意のコマンドを持つ `github` という名前の Stdio サーバー | 許可:コマンド制限なし |451 | `github` という名前で任意のコマンドを持つ stdio サーバー | 許可:コマンド制限なし |
305 | 任意のコマンドを持つ `internal-tool` という名前の Stdio サーバー | 許可:コマンド制限なし |452 | `internal-tool` という名前で任意のコマンドを持つ stdio サーバー | 許可:コマンド制限なし |
306 | `github` という名前の HTTP サーバー | 許可:名前と一致 |453 | `github` という名前の HTTP サーバー | 許可:名前にマッチ |
307 | `other` という名前の任意のサーバー | ブロック:名前が一致しません |454 | `other` という名前のサーバー | ブロック:名前がマッチしません |
308</Accordion>455</Accordion>
309 456
310<Accordion title="ブロックリストオーバーライド付き許可リスト">457<Accordion title="denylist オーバーライド付き allowlist">
311 ```json theme={null}458 ```json theme={null}
312 {459 {
313 "allowedMcpServers": [460 "allowedMcpServers": [
320 ```467 ```
321 468
322 | サーバー | 結果 |469 | サーバー | 結果 |
323 | :-------------------------------------------- | :------------------------------- |470 | :-------------------------------------------- | :--------------------------------------- |
324 | `https://mcp.example.com/api` の HTTP サーバー | 許可:許可リスト URL パターンと一致、ブロックリスト一致なし |471 | `https://mcp.example.com/api` の HTTP サーバー | 許可:allowlist URL パターンにマッチ、denylist マッチなし |
325 | `https://staging.example.com/api` の HTTP サーバー | ブロック:両方と一致しますが、ブロックリストが優先されます |472 | `https://staging.example.com/api` の HTTP サーバー | ブロック:両方にマッチしますが、denylist が優先されます |
326 | `https://other.com/mcp` の HTTP サーバー | ブロック:許可リストと一致しません |473 | `https://other.com/mcp` の HTTP サーバー | ブロック:allowlist にマッチしません |
327</Accordion>474</Accordion>
328 475
329<h3 id="restrict-the-allowlist-to-managed-settings-only">476<h3 id="restrict-the-allowlist-to-managed-settings-only">
330 許可リストを管理設定のみに制限する477 allowlist を管理設定のみに制限する
331</h3>478</h3>
332 479
333管理対象許可リストが適用される唯一のものにするには、管理設定ファイルで `allowManagedMcpServersOnly` を設定します。480管理 allowlist のみが適用されるようにするには、管理設定ファイルで `allowManagedMcpServersOnly` を設定します。
334 481
335```json theme={null}482```json theme={null}
336{483{
342}489}
343```490```
344 491
345`allowManagedMcpServersOnly` が `true` の場合、ユーザー、プロジェクト、ローカル設定からの許可リストは無視されます。ブロックリストはすべてのソースからマージされるため、ユーザーは常に自分自身のサーバーをブロックできます。492`allowManagedMcpServersOnly` が `true` の場合、ユーザー、プロジェクト、ローカル設定からの allowlist は無視されます。denylist はすべての設定スコープからマージされるため、ユーザーは常に自分自身のサーバーをブロックできます。
346 493
347<h2 id="how-restrictions-appear-to-users">494<h2 id="how-restrictions-appear-to-users">
348 制限がユーザーにどのように表示されるか495 制限がユーザーに表示される方法
349</h2>496</h2>
350 497
351制限がサーバーをブロックすると、ユーザーは `claude mcp add` からエラーを表示するか、サーバーが静かに読み込みを停止します。このテーブルを使用して、これらのレポートを認識し、変更をロールアウトする前にユーザーに何が起こるかを伝えます。498`managed-mcp.json` がデプロイされ、セッションに `--mcp-config` サーバーもある場合にスタートアップ時にユーザーに表示される内容については、[managed-mcp.json による排他的制御](#exclusive-control-with-managed-mcp-json)を参照してください。このテーブルを使用して他のレポートを認識し、変更をロールアウトする前にユーザーが何を期待するかを伝えてください。
352 499
353| 制限 | ユーザーが表示するもの |500| 制限 | ユーザーに表示される内容 |
354| :--------------------------------------------------- | :--------------------------------------------------------------------------------------------------------- |501| :--------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------- |
355| `managed-mcp.json` が存在し、ユーザーが `claude mcp add` を実行する | `Cannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers` |502| `managed-mcp.json` が存在し、ユーザーが `claude mcp add` を実行する | `Cannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers` |
356| サーバーがブロックリスト上にあり、ユーザーが `claude mcp add` を実行する | `Cannot add MCP server "<name>": server is explicitly blocked by enterprise policy` |503| サーバーがデニーリストにあり、ユーザーが `claude mcp add` を実行する | `Cannot add MCP server "<name>": server is explicitly blocked by enterprise policy` |
357| サーバーが許可リスト上にはなく、ユーザーが `claude mcp add` を実行する | `Cannot add MCP server "<name>": not allowed by enterprise policy` |504| サーバーがアローリストになく、ユーザーが `claude mcp add` を実行する | `Cannot add MCP server "<name>": not allowed by enterprise policy` |
358| 以前に設定されたサーバーがポリシーによってブロックされるようになった | サーバーは `/mcp` と `claude mcp list` から警告なく静かに消えます |505| ユーザーが `managedMcpServers` のサーバーで `claude mcp remove` を実行する | `MCP server "<name>" is provided by your organization (managed settings) and cannot be removed locally.` |
506| 以前に設定されたサーバーがポリシーによってブロックされるようになった | サーバーは警告なく `/mcp` と `claude mcp list` から静かに消える |
507| セッション実行中にサーバーがブロックされ、ユーザーが **Reconnect** を選択するか、`/mcp` でそれをオンに戻す | [`MCP server <name> is blocked by enterprise managed policy`](/docs/ja/errors#mcp-server-is-blocked-by-enterprise-managed-policy) |
359 508
360最後のケースでは、ユーザーはポリシーがサーバーが消えた理由であることについてシグナルを取得しません。新しい制限をロールアウトするときに、影響を受けるユーザーにどのサーバーがブロックされているかを伝えます。509サーバーが静かに消える場合、ユーザーはポリシーが理由であるという信号を受け取らないため、変更をロールアウトする際に影響を受けるユーザーにどのサーバーがブロックされているかを伝えてください。
361 510
362<h2 id="monitor-mcp-usage">511<h2 id="monitor-mcp-usage">
363 MCP 使用状況を監視する512 MCP 使用状況を監視する
372このページで説明するすべてのファイルと設定、それが制御するもの、および配信方法:521このページで説明するすべてのファイルと設定、それが制御するもの、および配信方法:
373 522
374| サーフェス | 制御するもの | 場所 | 配信方法 |523| サーフェス | 制御するもの | 場所 | 配信方法 |
375| :--------------------------- | :--------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------- |524| :--------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------- |
376| `managed-mcp.json` | 固定サーバーセット、排他的制御 | システムパス:`/Library/Application Support/ClaudeCode/`、`/etc/claude-code/`、または `C:\Program Files\ClaudeCode\` | MDM、GPO、フリート管理、または管理者権限を持つプロセス。サーバー管理設定を通じて設定することはできません |525| `managed-mcp.json` | 固定サーバーセット、排他的制御 | システムパス:`/Library/Application Support/ClaudeCode/`、`/etc/claude-code/`、または `C:\Program Files\ClaudeCode\` | MDM、GPO、フリート管理、または管理者権限を持つプロセス。サーバー管理設定を通じて設定することはできません |
377| `allowedMcpServers` | 許可されたサーバーの許可リスト | 任意の [設定ファイル](/docs/ja/settings#settings-files)。`allowManagedMcpServersOnly` が設定されていない限り、すべてのソースからのエントリがマージされます | 実施のため、[管理設定ソース](/docs/ja/admin-setup#decide-how-settings-reach-devices):サーバー管理設定、`managed-settings.json`、MDM プロファイル、またはレジストリ |526| `managedMcpServers` | すべてのユーザーに提供されるリモートサーバー(ユーザー自身のサーバーと一緒に) | 管理設定ソースのみ。設定は他の場所では効果がありません | [管理設定ソース](/docs/ja/admin-setup#decide-how-settings-reach-devices):サーバー管理設定、ゲートウェイポリシー、`managed-settings.json`、MDM プロファイル、または HKLM レジストリ |
378| `deniedMcpServers` | ブロックされたサーバーのブロックリスト | 任意の設定ファイル。すべてのソースからのエントリがマージされます | `allowedMcpServers` と同じ |527| `allowedMcpServers` | 許可されたサーバーの許可リスト | 任意の [設定スコープ](/docs/ja/settings#where-settings-live)。`allowManagedMcpServersOnly` が設定されていない限り、Claude Code はすべてのスコープからのリストをマージし、管理スコープからのリストは [選択する](/docs/ja/managed-settings#precedence-within-the-managed-tier) または [構成する](/docs/ja/managed-settings#compose-every-managed-source) 1 つの管理ソースから取得します | 実施のため、[管理設定ソース](/docs/ja/admin-setup#decide-how-settings-reach-devices):サーバー管理設定、`managed-settings.json`、MDM プロファイル、またはレジストリ |
528| `deniedMcpServers` | ブロックされたサーバーのブロックリスト | 任意の設定スコープ。Claude Code はすべてのスコープからのリストをマージし、[Claude Code が管理ソースを組み合わせる方法](/docs/ja/managed-settings#how-claude-code-combines-managed-sources) で説明されているように管理ソース全体でマージします | `allowedMcpServers` と同じ |
379| `allowManagedMcpServersOnly` | 許可リストを管理ソースのみにロックします | 管理設定ソースのみ。設定は他の場所では効果がありません | `allowedMcpServers` と同じ |529| `allowManagedMcpServersOnly` | 許可リストを管理ソースのみにロックします | 管理設定ソースのみ。設定は他の場所では効果がありません | `allowedMcpServers` と同じ |
380| `allowAllClaudeAiMcps` | `managed-mcp.json` と一緒に claude.ai コネクタを読み込みます。これらを抑制する代わりに | 管理設定ソースのみ。設定は他の場所では効果がありません | `allowedMcpServers` と同じ |530| `allowAllClaudeAiMcps` | Claude Code が自身で取得する claude.ai コネクタを `managed-mcp.json` と一緒に読み込みます。[クラウドセッションを実行するホスト上の `managed-mcp.json` は、そのセッションのコネクタを抑制します](#allow-claude-ai-connectors-alongside-the-managed-set) | 管理設定ソースのみ。設定は他の場所では効果がありません | `allowedMcpServers` と同じ |
381 531
382<h2 id="related-resources">532<h2 id="related-resources">
383 関連リソース533 関連リソース