- Выбрать шаблон, который соответствует необходимому уровню контроля
- Развернуть фиксированный набор серверов с помощью
managed-mcp.json, включая способ полного отключения MCP - Контролировать серверы с помощью списков разрешений и запретов
- Сообщить пользователям, чего ожидать, когда ограничение блокирует сервер
- Отслеживать, какие серверы фактически использует ваша организация
На странице Security рассматривается модель угроз MCP и способы оценки сервера перед его одобрением. Decide what to enforce охватывает ограничения MCP наряду с другими административными элементами управления.
Выбор шаблона
Claude Code поддерживает различные уровни ограничений. Каждый шаблон использует один или оба механизма, описанные ниже:managed-mcp.json для развертывания фиксированного набора и allowedMcpServers/deniedMcpServers для фильтрации того, что настраивают пользователи.
Claude Code не имеет встроенного реестра MCP серверов, который пользователи могут просматривать и устанавливать. Для шаблона одобренного каталога поделитесь списком одобренных серверов и его командами
claude mcp add в месте, где его найдут ваши пользователи, например во внутренней вики, или распределите серверы как плагины через управляемый рынок плагинов, чтобы пользователи могли просматривать и устанавливать их из /plugin.Исключительный контроль с managed-mcp.json
Если вы развернете файлmanaged-mcp.json, Claude Code загружает только серверы, которые определены в этом файле. Пользователи не могут добавлять, изменять или использовать какие-либо другие MCP серверы, включая серверы, предоставляемые плагинами. Файл также подавляет соединители claude.ai, если вы не разрешите их наряду с управляемым набором.
Два других параметра могут дополнительно фильтровать управляемый набор:
allowedMcpServersиdeniedMcpServersтакже применяются к управляемым серверам, поэтому управляемый сервер, который не проходит их, не будет загружен.- Собственный
deniedMcpServersпользователя объединяется из его настроек, поэтому пользователи могут заблокировать управляемый сервер для себя.
managed-mcp.json — это отдельный файл, поэтому он не может быть доставлен через server-managed settings. Любой процесс, который может писать в системный путь с правами администратора, может развернуть его. В масштабе это обычно происходит через инструменты управления устройствами, такие как Jamf или профиль конфигурации на macOS, Group Policy или Intune на Windows, или выбранное вами управление флотом на Linux. Claude Code ищет файл по одному из этих путей:
Файл использует тот же формат, что и файл проекта
.mcp.json:
Аутентификация с учетными данными для каждого пользователя
Любой пользователь на машине может прочитать этот файл, поэтому не сохраняйте ключи API или другие учетные данные в блокахenv. Передавайте учетные данные для каждого пользователя одним из следующих способов:
${VAR}расширение для чтения секретов из окружения каждого пользователя.- OAuth или заголовки для каждого пользователя, чтобы каждый пользователь аутентифицировался как сам себя.
headersHelperдля создания учетных данных во время подключения.
Проверка конфигурации
Чтобы подтвердить, что файл действует, выполните две проверки на управляемой машине: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, и claude mcp add завершается с ошибкой политики предприятия, указанной выше. Серверы, которые пользователи ранее настроили, перестают загружаться при следующем запуске сеанса без предупреждения о том, что причина в политике.
Разрешить соединители claude.ai наряду с управляемым набором
Развертываниеmanaged-mcp.json подавляет соединители claude.ai по умолчанию, включая соединители, которые администратор настроил для организации в консоли администратора claude.ai. Чтобы загружать эти соединители наряду с серверами в managed-mcp.json, установите "allowAllClaudeAiMcps": true в источнике управляемых настроек. Требуется Claude Code версии 2.1.149 или позже.
Когда параметр включен, Claude Code загружает те же соединители claude.ai, которые он загружал бы, если бы managed-mcp.json не был развернут. Списки разрешений и запретов по-прежнему применяются к этим соединителям, поэтому вы можете заблокировать конкретные с помощью deniedMcpServers. Параметр влияет только на соединители claude.ai; серверы, предоставляемые плагинами, остаются подавленными.
Claude Code читает этот параметр только из контролируемых администратором уровней политики: server-managed settings, развернутый через MDM plist или ключ реестра HKLM, или системный файл managed-settings.json. Размещение его в пользовательских или проектных настройках не имеет эффекта, поэтому пользователи не могут повторно включить соединители, которые исключительный контроль подавил.
Контроль на основе политики со списками разрешений и запретов
Списки разрешений и запретов фильтруют, какие настроенные серверы разрешены для загрузки. Это не реестр: сервер все еще должен быть добавлен пользователем, плагином илиmanaged-mcp.json перед тем, как список разрешений или запретов применится к нему. Чтобы развернуть серверы для пользователей, используйте managed-mcp.json. Оба списка также фильтруют серверы, переданные с флагом CLI --mcp-config; --strict-mcp-config ограничивает, какие файлы конфигурации загружаются, и не обходит ни один из списков.
Чтобы сделать список разрешений авторитетным, установите allowedMcpServers и allowManagedMcpServersOnly: true вместе в источник управляемых настроек, такой как server-managed settings или развернутый файл managed-settings.json. Ограничение списка разрешений только управляемыми настройками показывает конфигурацию. Без allowManagedMcpServersOnly списки разрешений из каждого источника настроек объединяются, включая собственный ~/.claude/settings.json пользователя, поэтому пользователь может расширить то, что разрешает ваш список разрешений. Списки запретов объединяются из каждого источника независимо.
allowManagedMcpServersOnly отличается от allowManagedPermissionRulesOnly, который блокирует только правила разрешений. Установка этого флага не применяет список разрешений MCP.Сопоставление серверов по URL, команде или имени
allowedMcpServers и deniedMcpServers — это списки записей. Каждая запись — это объект с одним ключом, который идентифицирует серверы по их URL, команде или имени:
Оставление
allowedMcpServers неустановленным отличается от установки его в пустой массив:
См. Недействительные записи в управляемых настройках для информации о том, что происходит, когда запись не проходит валидацию схемы.
Валидация
serverName отличается между двумя списками:
- В
deniedMcpServers,serverNameпринимает любую непустую строку, поэтому вы можете блокировать соединители claude.ai по их отображаемому имени. Например,{ "serverName": "claude.ai Slack" }блокирует соединитель Slack. Предпочитайте записьserverUrl, когда вам нужно, чтобы запрет был устойчив к переименованиям, или когда имя соединителя конфликтует и получает суффикс(N). - В
allowedMcpServers,serverNameограничен буквами, цифрами, дефисами и подчеркиваниями. ИспользуйтеserverUrlдля добавления в список разрешений соединителя claude.ai.
disableClaudeAiConnectors.
Как оценивается сервер
Перед загрузкой сервера, включая сервер изmanaged-mcp.json, Claude Code выполняет три проверки по порядку:
- Объедините списки. Записи списка разрешений и запретов из каждого источника настроек объединяются в один список разрешений и один список запретов. Когда
allowManagedMcpServersOnlyимеет значениеtrue, сохраняется только управляемый список разрешений; список запретов всегда объединяется из каждого источника. - Проверьте список запретов. Сервер, который совпадает с любой записью списка запретов по URL, команде или имени, блокируется. Ничто не переопределяет совпадение списка запретов.
- Проверьте список разрешений. Если
allowedMcpServersне установлен нигде, каждый сервер, который прошел список запретов, загружается. Если он установлен, то, с чем должен совпадать сервер, зависит от его типа, показанного в таблице ниже.
Три правила сопоставления применяются внутри этих проверок:
- Команды совпадают точно. Каждый аргумент по порядку.
["npx", "-y", "server"]не совпадает с["npx", "server"]или["npx", "-y", "server", "--flag"]. serverCommandиserverUrlзначения расширяются перед сопоставлением. Как запись политики, так и настроенное значение сервера проходят через то же расширение${VAR}и${VAR:-default}, что и.mcp.json, поэтому запись, написанная как["${HOME}/bin/server"], совпадает с конфигурацией сервера, которая использует либо ту же ссылку, либо расширенный путь. На Windows ссылайтесь на переменную окружения, которая установлена там, такую как${USERPROFILE}вместо${HOME}.serverNameзначения совпадают буквально и никогда не расширяются.- URL поддерживают подстановочные знаки
*в любом месте шаблона, включая схему. Сопоставление имени хоста не учитывает регистр и игнорирует конечную точку FQDN, поэтомуhttps://Mcp.Example.com/*совпадает сhttps://mcp.example.com/api. Пути остаются чувствительными к регистру.
Поскольку расширение
${VAR} читает собственное окружение процесса Claude Code, запись политики serverCommand или serverUrl, которая ссылается на переменную, расширяется до любого значения, которое устанавливает пользователь. Используйте буквальные URL и команды для записей, на которые вы полагаетесь для применения.
Пример конфигурации
Конфигурация ниже устанавливает жесткий список разрешений со списком запретов. Выделенные строки изменяют способ оценки остальной части списка, и выноски после блока объясняют каждую:- Строка 3: первая запись
serverUrl. Как только она существует, каждый удаленный сервер должен совпадать с шаблоном URL, поэтому пользователь не может получить неуказанный удаленный сервер, дав ему разрешенное имя. - Строка 5: первая запись
serverCommand. Тот же эффект для серверов stdio, поэтому каждый локальный сервер должен совпадать с указанной командой точно. - Строка 11: запись
serverNameв списке запретов. Записи списка запретов всегда применяются, поэтому любой сервер с именемdangerous-serverблокируется независимо от его URL или команды.
serverName в этом списке разрешений никогда не совпадет ни с чем, так как оба типа транспорта уже имеют более строгие записи.
Аккордеоны ниже проходят через то, как сервер оценивается в сравнении с другими комбинациями списков разрешений и запретов.
Список разрешений только по URL
Список разрешений только по URL
Список разрешений только по команде
Список разрешений только по команде
Смешанный список разрешений имени и команды
Смешанный список разрешений имени и команды
Список разрешений только по имени
Список разрешений только по имени
Список разрешений с переопределением списка запретов
Список разрешений с переопределением списка запретов
Ограничение списка разрешений только управляемыми настройками
Чтобы сделать управляемый список разрешений единственным применяемым, установитеallowManagedMcpServersOnly в файле управляемых настроек:
allowManagedMcpServersOnly имеет значение true, списки разрешений из пользовательских, проектных и локальных настроек игнорируются. Список запретов все еще объединяется из всех источников, поэтому пользователи всегда могут блокировать серверы для себя.
Как ограничения отображаются пользователям
Когда ограничение блокирует сервер, пользователь либо видит ошибку отclaude mcp add, либо сервер молча перестает загружаться. Используйте эту таблицу, чтобы распознать эти отчеты и сообщить пользователям, чего ожидать перед развертыванием изменения:
В последнем случае пользователь не получает сигнала о том, что причина в политике, поэтому сообщите затронутым пользователям, какие серверы блокируются при развертывании нового ограничения.
Мониторинг использования MCP
Когда OpenTelemetry export настроен, Claude Code может записывать, какие MCP серверы и инструменты вызывают пользователи. УстановитеOTEL_LOG_TOOL_DETAILS=1, чтобы включить имена MCP серверов и инструментов в события инструментов, затем агрегируйте их в вашем сборщике, чтобы увидеть, какие серверы фактически подключают ваши пользователи. См. Monitoring для настройки экспортера и полной схемы событий.
Сводка конфигурации
Каждый файл и параметр, рассмотренные на этой странице, что они контролируют и как их доставить:Связанные ресурсы
- Decide what to enforce: ограничения MCP наряду с правилами разрешений, песочницей и другими элементами управления администратора
- Connect Claude Code to tools via MCP: полная справка MCP, включая транспорты, области и аутентификацию
- Settings: иерархия настроек и способ приоритета управляемых настроек
- Server-managed settings: доставка
allowedMcpServersиdeniedMcpServersиз консоли администратора Claude.ai - Security: модель угроз, которую защищают эти элементы управления
- Claude Enterprise Administrator Guide: SSO, SCIM, управление местами и сценарий развертывания