MCP設定オブジェクト構造
概要
mcpSettings 設定は、MCP (Model Context Protocol) サーバーのセキュリティと動作に関するグローバルな設定を提供します。この設定は mcpServers とは別個のものであり、MCP サーバーが特定のドメインや IP アドレスにどのように接続できるかを制御します。
例
設定
Subkeys
| Key | Type | Description | Example |
|---|---|---|---|
| allowedDomains | Array of Strings | MCPサーバー接続の許可ドメインを指定するリスト。 | When configured, only listed domains are allowed. When not configured, SSRF targets are blocked but all other domains are allowed. |
| allowedAddresses | Array of Strings | プライベートIP空間に限定されたSSRF除外リストです。ここに記載されたホスト名/IPとポートのペアは、`allowedDomains`が設定されていない場合に、デフォルトで拒否されるSSRFブロックをバイパスします。 | Use when you want default SSRF protection AND specific internal MCP servers, without flipping `allowedDomains` into strict-whitelist mode. |
セキュリティコンテキスト (SSRF保護)
LibreChatには、以下の動作を伴うSSRF(Server-Side Request Forgery)保護が含まれています:
allowedDomains が設定されていない場合:
- SSRFの影響を受けやすいターゲットはデフォルトでブロックされています
- その他のすべての外部ドメインは許可されています
allowedDomains が設定されている場合:
- リストにあるドメインのみが許可されます
- 内部/SSRFターゲットは、リストに明示的に追加することで許可できます。
ブロックされたSSRFターゲットは以下の通りです:
- Localhost アドレス (
localhost,127.0.0.1,::1) - プライベートIP範囲 (
10.0.0.0/8,172.16.0.0/12,192.168.0.0/16) - リンクローカルアドレス (
169.254.0.0/16、クラウドメタデータIPを含む) - 内部 TLD (
.internal,.local,.localhost) - 一般的な内部サービス名 (
redis,mongodb,postgres,api,rag_apiなど)
MCPサーバーが内部サービスやDockerコンテナに接続する必要がある場合は、厳格な allowedDomains ホワイトリストに追加するか、allowedDomains を設定しないままにして、特定のプライベートサービスを allowedAddresses に追加してください。
パターンフォーマット
allowedDomains 配列は、いくつかのパターン形式をサポートしています:
-
完全ドメイン一致
example.com(任意のプロトコル/ポート)への接続のみを許可します -
ワイルドカードサブドメイン一致
example.comのすべてのサブドメイン(例:api.example.com、mcp.example.com)への接続を許可します。 -
特定のIPアドレス
特定のIPアドレスへの接続を許可します
-
ローカル Docker ドメイン
Dockerコンテナ名や特別なDockerドメインへの接続を許可します
-
プロトコルとポートを指定する場合
特定のプロトコルとポートの組み合わせへの接続を制限します
エラーメッセージ
次のようなエラーが表示される場合:
これは、意図的に allowedDomains を厳格なホワイトリストとして使用している場合を除き、MCPサーバーのプライベートホストとポートを allowedAddresses に追加する必要があることを示している可能性が高いです。
allowedAddresses
allowedAddresses は、SSRFのプライベートIPブロックに対する除外リストであり、ドメインのホワイトリストではありません。これは、MCPサーバーがパブリックインターネット上でアクセスできる範囲を制限することなく、特定の1つまたは2つのプライベート/内部サービスへのアクセスを許可したい場合に最適なツールです。
allowedDomains の代わりに使用すべき場合
allowedDomains は厳格なホワイトリストです。これが設定されている場合、リストに記載されたエントリのみが到達可能となります。例えば、セルフホストされたMCPサーバーを許可するためにプライベートIPを追加すると、リストに含めていないすべてのパブリックな宛先(api.example.com、*.googleapis.com など)もブロックされます。
allowedAddresses は、allowedDomains が設定されていない場合にのみ使用されます。これは、特定のプライベートな host:port ターゲットへのアクセスを許可しつつ、それ以外のパブリックインターネットへのアクセスはデフォルトの SSRF ポリシーに従って到達可能な状態にします。一般的な設定例:
allowedDomains が設定されている場合、それが優先されます。プライベートサービスは allowedAddresses に頼るのではなく、そこにリストアップする必要があります。
許容されるエントリ
- ポート番号付きホスト名:
host.docker.internal:8080,mcp-server:3000,localhost:3001 - ポート番号付きプライベート IPv4 リテラル:
10.0.0.5:8000,127.0.0.1:3001,192.168.1.10:443,169.254.169.254:80 - ポート付きの角括弧で囲まれたプライベートIPv6リテラル:
[::1]:3001,[fc00::1]:8080,[fe80::1]:8080
拒否されたエントリ(設定読み込み時に検証)
- URL / パス / CIDR 範囲:
http://10.0.0.5,10.0.0.0/24,/path - ベアホスト名またはIP:
localhost、10.0.0.5、::1、[::1]— すべてのエントリにはポートを含める必要があります - 無効なポート:
localhost:0,localhost:65536,localhost:http - パブリックIPリテラル:
8.8.8.8:53、1.1.1.1:53、[2001:4860::8888]:443— このフィールドはプライベートIP空間に限定されています。パブリックIPはSSRFのターゲットではなく、パブリックIPの除外設定には防御上の目的はありません。
ホスト名の信頼 (Hostname trust)
ホスト名エントリは、実行時にそのホスト名が解決されるIPアドレス(指定されたポート上)を信頼します。リストされたホスト名のDNSがローテーションされたり、ハイジャックされて別のプライベートIPを指すようになった場合、その免除も追従します。自身でDNSを管理しているホスト名のみをリストしてください。可能な場合はリテラルIPを使用することを推奨します。
参照
- MCP Servers 設定
- MCP Features
- Actions allowedAddresses (Actions も同様の概念)
このガイドはいかがでしたか?