Pular para o conteúdo principal
Por padrão, qualquer pessoa que execute Claude Code pode conectar qualquer servidor MCP que escolher. A Anthropic analisa conectores em relação aos seus critérios de listagem antes de adicioná-los ao Diretório Anthropic, mas não realiza auditoria de segurança ou gerencia nenhum servidor MCP. Como administrador, você pode restringir quais servidores são executados em sua organização, desde a implantação de um conjunto fixo aprovado até a desabilitação completa do MCP. Esta página aborda como:
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 arquivo managed-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:
  • allowedMcpServers e deniedMcpServers também se aplicam a servidores gerenciados, portanto um servidor gerenciado que não passar por eles não será carregado.
  • O próprio deniedMcpServers de um usuário é mesclado a partir de suas configurações, portanto os usuários podem bloquear um servidor gerenciado para si mesmos.
Consulte Como um servidor é avaliado para a ordem completa de verificações. 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 blocos env. Passe credenciais por usuário com uma destas alternativas:

Validar a configuração

Para confirmar que o arquivo está em vigor, execute duas verificações em uma máquina gerenciada:
  1. claude mcp list mostra apenas os servidores em managed-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.
  2. claude mcp add --transport http test https://example.com/mcp falha com Cannot 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 um managed-mcp.json contendo um mapa de servidor vazio para bloquear todos os servidores MCP:
Os usuários não veem nenhum servidor MCP em /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

Implantar managed-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 ou managed-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.
Uma entrada serverName, em qualquer lista, não é um controle de segurança. O nome é o rótulo que um usuário atribui ao executar claude mcp add ou editar um arquivo de configuração, não o servidor subjacente, portanto um usuário pode chamar qualquer servidor de github. Para conectores claude.ai, o nome é o nome de exibição retornado por claude.ai, que pode mudar. Para aplicar quais servidores realmente são executados, adicione entradas serverCommand ou serverUrl.
A validação de serverName difere entre as duas listas:
  • Em deniedMcpServers, serverName aceita 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 entrada serverUrl quando 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. Use serverUrl para adicionar um conector claude.ai à lista de permissão.
Para desativar todos os conectores claude.ai, veja disableClaudeAiConnectors.

Como um servidor é avaliado

Antes de carregar um servidor, incluindo um de managed-mcp.json, Claude Code executa três verificações em ordem:
  1. 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.
  2. 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.
  3. Verificar a lista de permissão. Se allowedMcpServers nã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"].
  • serverCommand e serverUrl valores 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 de serverName correspondem 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, portanto https://Mcp.Example.com/* corresponde a https://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 serverName na lista de bloqueio. Entradas da lista de bloqueio sempre se aplicam, portanto qualquer servidor nomeado dangerous-server é bloqueado independentemente de sua URL ou comando.
Uma entrada 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.

Restringir a lista de permissão apenas a configurações gerenciadas

Para tornar a lista de permissão gerenciada a única que se aplica, defina allowManagedMcpServersOnly no arquivo de configurações gerenciadas:
Quando 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 de claude 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. Defina OTEL_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: