- Escolher um padrão que corresponda ao nível de controle necessário
- Implantar um conjunto de servidor fixo com
managed-mcp.json, incluindo como desabilitar MCP completamente - Controlar servidores com listas de permissão e listas de bloqueio
- Informar aos usuários o que esperar quando uma restrição bloqueia um servidor
- Monitorar quais servidores sua organização realmente usa
A página Segurança aborda o modelo de ameaça do MCP e como avaliar um servidor antes de aprová-lo. Decidir o que aplicar aborda restrições de MCP junto com os outros controles administrativos.
Escolher um padrão
Claude Code suporta uma variedade de níveis de restrição. Cada padrão usa um ou ambos os mecanismos abordados abaixo:managed-mcp.json para implantar um conjunto fixo, e allowedMcpServers/deniedMcpServers para filtrar o que os usuários configuram.
Claude Code não possui um registro de servidor MCP integrado que os usuários possam procurar e instalar. Para o padrão de catálogo aprovado, compartilhe a lista aprovada e seus comandos
claude mcp add em algum lugar onde seus usuários a encontrem, como um wiki interno, ou distribua os servidores como plugins através de um marketplace de plugins gerenciado para que os usuários possam procurar e instalá-los em /plugin.Controle exclusivo com managed-mcp.json
Se você implantar um arquivomanaged-mcp.json, Claude Code carrega apenas os servidores que esse arquivo define. Os usuários não podem adicionar, modificar ou usar nenhum outro servidor MCP, incluindo servidores fornecidos por plugins. O arquivo também suprime conectores do claude.ai, a menos que você permita-os junto com o conjunto gerenciado.
Duas outras configurações podem filtrar ainda mais o conjunto gerenciado:
allowedMcpServersedeniedMcpServerstambém se aplicam a servidores gerenciados, portanto um servidor gerenciado que não passar por eles não será carregado.- O próprio
deniedMcpServersde um usuário é mesclado a partir de suas configurações, portanto os usuários podem bloquear um servidor gerenciado para si mesmos.
managed-mcp.json é um arquivo autônomo, portanto não pode ser entregue através de configurações gerenciadas pelo servidor. Qualquer processo que possa escrever em um caminho do sistema com privilégios de administrador pode implantá-lo. Em escala, isso geralmente é feito através de ferramentas de gerenciamento de dispositivos, como Jamf ou um perfil de configuração no macOS, Política de Grupo ou Intune no Windows, ou seu gerenciamento de frota de escolha no Linux. Claude Code procura o arquivo em um destes caminhos:
O arquivo usa o mesmo formato que um arquivo de projeto
.mcp.json:
Autenticar com credenciais por usuário
Qualquer usuário na máquina pode ler este arquivo, portanto não armazene chaves de API ou outras credenciais em blocosenv. Passe credenciais por usuário com uma destas alternativas:
- Expansão
${VAR}para ler segredos do ambiente de cada usuário. - OAuth ou cabeçalhos por usuário para que cada usuário se autentique como si mesmo.
headersHelperpara gerar credenciais no momento da conexão.
Validar a configuração
Para confirmar que o arquivo está em vigor, execute duas verificações em uma máquina gerenciada:claude mcp listmostra apenas os servidores emmanaged-mcp.json. Se os próprios servidores de um usuário ainda aparecerem, o arquivo não está sendo lido; verifique o caminho e as permissões.claude mcp add --transport http test https://example.com/mcpfalha comCannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers. A URL não precisa ser um servidor real, pois a verificação de política rejeita o comando antes de qualquer coisa ser contatada.
Desabilitar MCP completamente
Implante ummanaged-mcp.json contendo um mapa de servidor vazio para bloquear todos os servidores MCP:
/mcp, e claude mcp add falha com o erro de política empresarial acima. Os servidores que os usuários configuraram anteriormente param de ser carregados na próxima vez que iniciam uma sessão, sem aviso de que a política é o motivo.
Permitir conectores do claude.ai junto com o conjunto gerenciado
Implantarmanaged-mcp.json suprime conectores do claude.ai por padrão, incluindo conectores que um administrador configurou para a organização no console de administração do claude.ai. Para carregar esses conectores junto com os servidores em managed-mcp.json, defina "allowAllClaudeAiMcps": true em uma fonte de configurações gerenciadas. Requer Claude Code v2.1.149 ou posterior.
Com a configuração ativada, Claude Code carrega os mesmos conectores do claude.ai que carregaria se managed-mcp.json não fosse implantado. Listas de permissão e listas de negação ainda se aplicam a esses conectores, portanto você pode bloquear específicos com deniedMcpServers. A configuração afeta apenas conectores do claude.ai; servidores fornecidos por plugins permanecem suprimidos.
Claude Code lê essa configuração apenas de camadas de política controladas por administrador: configurações gerenciadas pelo servidor, uma chave de registro plist implantada por MDM ou HKLM, ou um arquivo managed-settings.json do sistema. Colocá-la em configurações de usuário ou projeto não tem efeito, portanto os usuários não podem reabilitar conectores que o controle exclusivo suprimiu.
Controle baseado em política com listas de permissão e listas de bloqueio
Listas de permissão e listas de bloqueio filtram quais servidores configurados podem ser carregados. Elas não são um registro: um servidor ainda precisa ser adicionado por um usuário, um plugin oumanaged-mcp.json antes que a lista de permissão ou lista de bloqueio se aplique a ele. Para implantar servidores para usuários, use managed-mcp.json. Ambas as listas também filtram servidores passados com o sinalizador CLI --mcp-config; --strict-mcp-config limita quais arquivos de configuração são carregados e não contorna nenhuma das duas listas.
Para tornar a lista de permissão autoritária, defina allowedMcpServers e allowManagedMcpServersOnly: true juntos em uma fonte de configurações gerenciadas, como configurações gerenciadas pelo servidor ou um arquivo managed-settings.json implantado. Restringir a lista de permissão apenas a configurações gerenciadas mostra a configuração. Sem allowManagedMcpServersOnly, listas de permissão de todas as fontes de configurações são mescladas, incluindo o próprio ~/.claude/settings.json de um usuário, portanto um usuário pode ampliar o que sua lista de permissão permite. Listas de bloqueio são mescladas de todas as fontes independentemente.
allowManagedMcpServersOnly é separado de allowManagedPermissionRulesOnly, que bloqueia apenas regras de permissão. Definir esse sinalizador não aplica a lista de permissão de MCP.Corresponder servidores por URL, comando ou nome
allowedMcpServers e deniedMcpServers são listas de entradas. Cada entrada é um objeto com uma única chave que identifica servidores por sua URL, seu comando ou seu nome:
Deixar
allowedMcpServers não definido é diferente de defini-lo como uma matriz vazia:
Veja Entradas inválidas em configurações gerenciadas para saber o que acontece quando uma entrada falha na validação do esquema.
A validação de
serverName difere entre as duas listas:
- Em
deniedMcpServers,serverNameaceita qualquer string não vazia, portanto você pode bloquear conectores claude.ai por seu nome de exibição. Por exemplo,{ "serverName": "claude.ai Slack" }bloqueia o conector Slack. Prefira uma entradaserverUrlquando você precisar que a negação seja robusta a renomeações, ou quando um nome de conector colide e ganha um sufixo(N). - Em
allowedMcpServers,serverNameé limitado a letras, números, hífens e sublinhados. UseserverUrlpara adicionar um conector claude.ai à lista de permissão.
disableClaudeAiConnectors.
Como um servidor é avaliado
Antes de carregar um servidor, incluindo um demanaged-mcp.json, Claude Code executa três verificações em ordem:
- Mesclar as listas. Entradas de lista de permissão e lista de bloqueio de todas as fontes de configurações se combinam em uma lista de permissão e uma lista de bloqueio. Quando
allowManagedMcpServersOnlyétrue, apenas a lista de permissão gerenciada é mantida; a lista de bloqueio sempre é mesclada de todas as fontes. - Verificar a lista de bloqueio. Um servidor que corresponde a qualquer entrada da lista de bloqueio, por URL, comando ou nome, é bloqueado. Nada substitui uma correspondência da lista de bloqueio.
- Verificar a lista de permissão. Se
allowedMcpServersnão estiver definido em lugar nenhum, todos os servidores que passaram na lista de bloqueio são carregados. Se estiver definido, o que o servidor deve corresponder depende de seu tipo, mostrado na tabela abaixo.
Três regras de correspondência se aplicam dentro dessas verificações:
- Comandos correspondem exatamente. Cada argumento, em ordem.
["npx", "-y", "server"]não corresponde a["npx", "server"]ou["npx", "-y", "server", "--flag"]. serverCommandeserverUrlvalores se expandem antes de corresponder. Tanto a entrada de política quanto o valor configurado do servidor passam pela mesma expansão${VAR}e${VAR:-default}que.mcp.json, portanto uma entrada escrita como["${HOME}/bin/server"]corresponde a uma configuração de servidor que usa a mesma referência ou o caminho expandido. No Windows, faça referência a uma variável de ambiente que está definida lá, como${USERPROFILE}em vez de${HOME}. Os valores deserverNamecorrespondem literalmente e nunca se expandem.- URLs suportam curingas
*em qualquer lugar do padrão, incluindo o esquema. A correspondência de nome de host não diferencia maiúsculas de minúsculas e ignora um ponto FQDN à direita, portantohttps://Mcp.Example.com/*corresponde ahttps://mcp.example.com/api. Os caminhos permanecem sensíveis a maiúsculas e minúsculas.
Como a expansão
${VAR} lê o próprio ambiente de processo do Claude Code, uma entrada de política serverCommand ou serverUrl que faz referência a uma variável se expande para qualquer valor que um usuário defina. Use URLs e comandos literais para entradas que você depende para aplicação.
Configuração de exemplo
A configuração abaixo configura uma lista de permissão rígida com uma lista de bloqueio. As linhas destacadas alteram como o resto da lista é avaliado, e os textos explicativos após o bloco explicam cada uma:- Linha 3: a primeira entrada
serverUrl. Uma vez que existe uma, cada servidor remoto deve corresponder a um padrão de URL, portanto um usuário não pode obter um servidor remoto não listado dando-lhe um nome permitido. - Linha 5: a primeira entrada
serverCommand. Mesmo efeito para servidores stdio, portanto cada servidor local deve corresponder a um comando listado exatamente. - Linha 11: uma entrada
serverNamena lista de bloqueio. Entradas da lista de bloqueio sempre se aplicam, portanto qualquer servidor nomeadodangerous-serveré bloqueado independentemente de sua URL ou comando.
serverName nesta lista de permissão nunca corresponderia a nada, pois ambos os tipos de transporte já têm entradas mais rigorosas.
Os acordeões abaixo percorrem como um servidor é avaliado em relação a outras combinações de lista de permissão e lista de bloqueio.
Lista de permissão apenas de URL
Lista de permissão apenas de URL
Lista de permissão apenas de comando
Lista de permissão apenas de comando
Lista de permissão mista de nome e comando
Lista de permissão mista de nome e comando
Lista de permissão apenas de nome
Lista de permissão apenas de nome
Lista de permissão com substituição de lista de bloqueio
Lista de permissão com substituição de lista de bloqueio
Restringir a lista de permissão apenas a configurações gerenciadas
Para tornar a lista de permissão gerenciada a única que se aplica, definaallowManagedMcpServersOnly no arquivo de configurações gerenciadas:
allowManagedMcpServersOnly é true, listas de permissão de configurações de usuário, projeto e local são ignoradas. A lista de bloqueio ainda é mesclada de todas as fontes, portanto os usuários sempre podem bloquear servidores para si mesmos.
Como as restrições aparecem para os usuários
Quando uma restrição bloqueia um servidor, o usuário vê um erro declaude mcp add ou o servidor para de ser carregado silenciosamente. Use esta tabela para reconhecer esses relatórios e para informar aos usuários o que esperar antes de implementar uma alteração:
No último caso, o usuário não recebe nenhum sinal de que a política é o motivo pelo qual seu servidor desapareceu, portanto informe aos usuários afetados quais servidores são bloqueados quando você implementar uma nova restrição.
Monitorar o uso de MCP
Quando exportação OpenTelemetry está configurada, Claude Code pode registrar quais servidores MCP e ferramentas os usuários invocam. DefinaOTEL_LOG_TOOL_DETAILS=1 para incluir nomes de servidor MCP e ferramentas em eventos de ferramentas, depois agregue-os em seu coletor para ver quais servidores seus usuários realmente conectam. Consulte Monitoramento para configurar o exportador e para o esquema de evento completo.
Resumo de configuração
Cada arquivo e configuração que esta página aborda, o que controla e como entregá-lo:Recursos relacionados
- Decidir o que aplicar: restrições de MCP junto com regras de permissão, sandboxing e os outros controles de administrador
- Conectar Claude Code a ferramentas via MCP: a referência completa de MCP, incluindo transportes, escopos e autenticação
- Configurações: a hierarquia de configurações e como as configurações gerenciadas têm precedência
- Configurações gerenciadas pelo servidor: entregar
allowedMcpServersedeniedMcpServersdo console de administrador do Claude.ai - Segurança: o modelo de ameaça que esses controles defendem
- Guia do Administrador Empresarial Claude: SSO, SCIM, gerenciamento de assentos e playbook de implementação