Skip to content

原文(日本語に翻訳)

管理設定の allowedMcpServers/deniedMcpServers の述語で ${VAR} 参照を使用している場合にマッチングが機能しないバグを修正しました。

原文(英語)

Fixed managed-settings allowedMcpServers/deniedMcpServers predicates not matching when they use ${VAR} references

概要

管理設定(managed settings)の allowedMcpServersdeniedMcpServers${VAR} 形式の環境変数参照を使用していた場合、変数が展開されずにマッチングが機能しないバグを修正しました。これにより、環境変数を使った動的な MCP サーバー制御が正しく動作するようになります。

基本的な使い方

この修正はバグフィックスであり、v2.1.166 以降へのアップデートで自動的に適用されます。

管理設定での ${VAR} 参照例:

json
{
  "allowedMcpServers": ["${ALLOWED_MCP_SERVER_NAME}"],
  "deniedMcpServers": ["${DENIED_MCP_SERVER_NAME}"]
}

実践例

修正前の問題

以前は環境変数参照が展開されずにリテラル文字列として比較されていました:

json
{
  "allowedMcpServers": ["${MY_MCP_SERVER}"]
}

環境変数 MY_MCP_SERVER=my-actual-server が設定されていても、"${MY_MCP_SERVER}" という文字列そのものと比較されるため、my-actual-server は許可されませんでした。

修正後の動作

v2.1.166 以降では:

  • ${MY_MCP_SERVER} が環境変数の値に展開される
  • my-actual-server に対して正しくマッチングが行われる
  • MCP サーバーの許可・拒否が意図通りに機能する

実用的な設定例

企業環境で環境変数を使って MCP サーバーを動的に制御する場合:

json
{
  "allowedMcpServers": [
    "${COMPANY_INTERNAL_MCP}",
    "${APPROVED_VENDOR_MCP}"
  ],
  "deniedMcpServers": [
    "${BLOCKED_MCP_SERVER}"
  ]
}
bash
# 環境変数を設定
export COMPANY_INTERNAL_MCP="internal-tools-server"
export APPROVED_VENDOR_MCP="vendor-a-server"
export BLOCKED_MCP_SERVER="untrusted-server"

# Claude Code 起動時に環境変数が正しく展開されて適用される
claude

注意点

  • ${VAR} 形式の参照が対象です。$VAR 形式はサポートされていない場合があります
  • 参照する環境変数が設定されていない場合の動作は要確認です
  • この修正は**管理設定(managed settings)**を使用している組織環境向けです

関連情報