Saltar al contenido principal

Documentation Index

Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

Use this file to discover all available pages before exploring further.

De forma predeterminada, cualquiera que ejecute Claude Code puede conectar cualquier servidor MCP que elija. Anthropic revisa los conectores según sus criterios de listado antes de agregarlos al Directorio de Anthropic, pero no realiza auditorías de seguridad ni administra ningún servidor MCP. Como administrador, puede restringir qué servidores se ejecutan en su organización, desde implementar un conjunto fijo aprobado hasta deshabilitar MCP completamente. Esta página cubre cómo:
La página Security cubre el modelo de amenaza de MCP y cómo evaluar un servidor antes de aprobarlo. Decide what to enforce cubre restricciones de MCP junto con los otros controles administrativos.

Elegir un patrón

Claude Code admite una variedad de niveles de restricción. Cada patrón utiliza uno o ambos de los mecanismos cubiertos a continuación: managed-mcp.json para implementar un conjunto fijo, y allowedMcpServers/deniedMcpServers para filtrar lo que los usuarios configuran.
PatrónQué haceConfigurar
Deshabilitar MCPNingún servidor se carga en ningún lugarmanaged-mcp.json con un mapa de servidor vacío
Implementación fijaCada usuario obtiene los mismos servidores y no puede agregar otrosmanaged-mcp.json con los servidores que desea
Catálogo aprobadoPublique una lista de servidores aprobados; los usuarios agregan los que desean, todo lo demás se bloqueaallowedMcpServers + allowManagedMcpServersOnly: true
Solo servidores de pluginsLos servidores solo pueden provenir de plugins; los usuarios no pueden agregar los suyos propiosstrictPluginOnlyCustomization con mcp en la lista
Lista de permitidos suaveAplicar una lista de permitidos que los usuarios pueden ampliar en su propia configuraciónallowedMcpServers sin allowManagedMcpServersOnly
Solo lista de bloqueadosBloquee servidores conocidos como malos, permita todo lo demásdeniedMcpServers
Sin restriccionesLos usuarios agregan cualquier cosaNo implemente ninguna configuración administrada de MCP
Claude Code no tiene un registro de servidor MCP integrado que los usuarios puedan examinar e instalar. Para el patrón de catálogo aprobado, comparta la lista aprobada y sus comandos claude mcp add en algún lugar donde sus usuarios los encuentren, como un wiki interno, o distribuya los servidores como plugins a través de un marketplace de plugins administrado para que los usuarios puedan examinarlos e instalarlos desde /plugin.

Control exclusivo con managed-mcp.json

Si implementa un archivo managed-mcp.json, Claude Code carga solo los servidores que ese archivo define. Los usuarios no pueden agregar, modificar ni usar ningún otro servidor MCP, incluidos los servidores proporcionados por plugins y los conectores de claude.ai. Dos otras configuraciones pueden filtrar aún más el conjunto administrado:
  • allowedMcpServers y deniedMcpServers también se aplican a servidores administrados, por lo que un servidor administrado que no los cumpla no se cargará.
  • El propio deniedMcpServers de un usuario se fusiona desde su configuración, por lo que los usuarios pueden bloquear un servidor administrado para sí mismos.
Consulte Cómo se evalúa un servidor para el orden completo de verificaciones. managed-mcp.json es un archivo independiente, por lo que no se puede entregar a través de configuración administrada por servidor. Cualquier proceso que pueda escribir en una ruta del sistema con privilegios de administrador puede implementarlo. A escala, eso suele ser a través de herramientas de administración de dispositivos, como Jamf o un perfil de configuración en macOS, Directiva de grupo o Intune en Windows, o su administración de flota de su elección en Linux. Claude Code busca el archivo en una de estas rutas:
PlataformaRuta
macOS/Library/Application Support/ClaudeCode/managed-mcp.json
Linux y WSL/etc/claude-code/managed-mcp.json
WindowsC:\Program Files\ClaudeCode\managed-mcp.json
El archivo utiliza el mismo formato que un archivo de proyecto .mcp.json:
{
  "mcpServers": {
    "github": {
      "type": "http",
      "url": "https://api.githubcopilot.com/mcp/"
    },
    "sentry": {
      "type": "http",
      "url": "https://mcp.sentry.dev/mcp"
    },
    "company-internal": {
      "type": "stdio",
      "command": "/usr/local/bin/company-mcp-server",
      "args": ["--config", "/etc/company/mcp-config.json"],
      "env": {
        "COMPANY_API_URL": "https://internal.example.com"
      }
    }
  }
}

Autenticar con credenciales por usuario

Cualquier usuario en la máquina puede leer este archivo, así que no almacene claves API u otras credenciales en bloques env. Pase credenciales por usuario con una de estas en su lugar:

Validar la configuración

Para confirmar que el archivo está en vigor, ejecute dos verificaciones en una máquina administrada:
  1. claude mcp list muestra solo los servidores en managed-mcp.json. Si los propios servidores de un usuario aún aparecen, el archivo no se está leyendo; verifique la ruta y los permisos.
  2. claude mcp add --transport http test https://example.com/mcp falla con Cannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers. La URL no necesita ser un servidor real, ya que la verificación de política rechaza el comando antes de que se contacte con nada.

Deshabilitar MCP completamente

Implemente un managed-mcp.json que contenga un mapa de servidor vacío para bloquear cada servidor MCP:
{
  "mcpServers": {}
}
Los usuarios no ven servidores MCP en /mcp, y claude mcp add falla con el error de política empresarial anterior. Los servidores que los usuarios habían configurado previamente dejan de cargarse la próxima vez que inician una sesión, sin advertencia de que la política es la razón.

Control basado en políticas con listas de permitidos y listas de bloqueados

Las listas de permitidos y listas de bloqueados filtran qué servidores configurados pueden cargarse. No son un registro: un servidor aún tiene que ser agregado por un usuario, un plugin o managed-mcp.json antes de que la lista de permitidos o la lista de bloqueados se aplique a él. Para implementar servidores a los usuarios, use managed-mcp.json. Para hacer que la lista de permitidos sea autoritaria, establezca allowedMcpServers y allowManagedMcpServersOnly: true juntos en una fuente de configuración administrada, como configuración administrada por servidor o un archivo managed-settings.json implementado. Restringir la lista de permitidos solo a configuración administrada muestra la configuración. Sin allowManagedMcpServersOnly, las listas de permitidos de cada fuente de configuración se fusionan, incluido el propio ~/.claude/settings.json de un usuario, por lo que un usuario puede ampliar lo que su lista de permitidos permite. Las listas de bloqueados se fusionan desde cada fuente independientemente.
allowManagedMcpServersOnly es separado de allowManagedPermissionRulesOnly, que bloquea solo reglas de permisos. Establecer esa bandera no aplica la lista de permitidos de MCP.

Hacer coincidir servidores por URL, comando o nombre

allowedMcpServers y deniedMcpServers son listas de entradas. Cada entrada es un objeto con una sola clave que identifica servidores por su URL, su comando o su nombre:
ClaveCoincideUsar para
serverUrlUna URL de servidor remoto, exacta o con comodines *Servidores HTTP y SSE
serverCommandEl comando exacto y los argumentos que inician un servidor stdioServidores stdio
serverNameLa etiqueta asignada por el usuario. Solo coincidencia exacta; los comodines no se expandenCualquier tipo, pero vea la Advertencia a continuación
Dejar allowedMcpServers sin establecer es diferente a establecerlo en una matriz vacía:
ConfiguraciónSin establecer (predeterminado)Matriz vacía []Poblada
allowedMcpServersTodos los servidores permitidosNingún servidor permitidoSolo servidores coincidentes permitidos
deniedMcpServersNingún servidor bloqueadoNingún servidor bloqueadoServidores coincidentes bloqueados
Una lista de permitidos que usa solo entradas serverName no es un control de seguridad. El nombre es la etiqueta que un usuario asigna al ejecutar claude mcp add o editar un archivo de configuración, no el servidor subyacente, por lo que un usuario puede llamar a cualquier servidor github. Para aplicar qué servidores realmente se ejecutan, agregue entradas serverCommand o serverUrl.

Cómo se evalúa un servidor

Antes de cargar un servidor, incluido uno de managed-mcp.json, Claude Code ejecuta tres verificaciones en orden:
  1. Fusionar las listas. Las entradas de lista de permitidos y lista de bloqueados de cada fuente de configuración se combinan en una lista de permitidos y una lista de bloqueados. Cuando allowManagedMcpServersOnly es true, solo se mantiene la lista de permitidos administrada; la lista de bloqueados siempre se fusiona desde cada fuente.
  2. Verificar la lista de bloqueados. Un servidor que coincida con cualquier entrada de lista de bloqueados, por URL, comando o nombre, se bloquea. Nada anula una coincidencia de lista de bloqueados.
  3. Verificar la lista de permitidos. Si allowedMcpServers no está establecido en ningún lugar, cada servidor que pasó la lista de bloqueados se carga. Si está establecido, lo que el servidor debe coincidir depende de su tipo, que se muestra en la tabla a continuación.
Tipo de servidorPermitido cuando coincide
Remoto (HTTP o SSE)Una entrada serverUrl. Una coincidencia serverName cuenta solo cuando la lista de permitidos no contiene entradas serverUrl
StdioUna entrada serverCommand. Una coincidencia serverName cuenta solo cuando la lista de permitidos no contiene entradas serverCommand
Dos reglas de coincidencia se aplican dentro de esas verificaciones:
  • Los comandos coinciden exactamente. Cada argumento, en orden. ["npx", "-y", "server"] no coincide con ["npx", "server"] o ["npx", "-y", "server", "--flag"].
  • Las URLs admiten comodines * en cualquier lugar del patrón, incluido el esquema. La coincidencia del nombre de host no distingue mayúsculas de minúsculas e ignora un punto FQDN final, por lo que https://Mcp.Example.com/* coincide con https://mcp.example.com/api. Las rutas permanecen sensibles a mayúsculas y minúsculas.
PatrónPermite
https://mcp.example.com/*Todas las rutas en un dominio específico
https://mcp.example.comTambién todas las rutas en ese dominio. Un patrón sin ruta coincide con cualquier ruta
https://*.example.com/*Cualquier subdominio de example.com
http://localhost:*/*Cualquier puerto en localhost
*://mcp.example.com/*Cualquier esquema a un dominio específico

Configuración de ejemplo

La configuración a continuación configura una lista de permitidos dura con una lista de bloqueados. Las líneas resaltadas cambian cómo se evalúa el resto de la lista, y las llamadas después del bloque explican cada una:
{
  "allowedMcpServers": [
    { "serverUrl": "https://api.githubcopilot.com/*" },
    { "serverUrl": "https://mcp.sentry.dev/*" },
    { "serverCommand": ["npx", "-y", "@modelcontextprotocol/server-filesystem", "."] },
    { "serverCommand": ["python", "/usr/local/bin/approved-server.py"] },
    { "serverUrl": "https://mcp.example.com/*" },
    { "serverUrl": "https://*.internal.example.com/*" }
  ],
  "deniedMcpServers": [
    { "serverName": "dangerous-server" },
    { "serverCommand": ["npx", "-y", "unapproved-package"] },
    { "serverUrl": "https://*.untrusted.example.com/*" }
  ]
}
  • Línea 3: la primera entrada serverUrl. Una vez que existe una, cada servidor remoto debe coincidir con un patrón de URL, por lo que un usuario no puede obtener un servidor remoto no listado dándole un nombre permitido.
  • Línea 5: la primera entrada serverCommand. El mismo efecto para servidores stdio, por lo que cada servidor local debe coincidir exactamente con un comando listado.
  • Línea 11: una entrada serverName en la lista de bloqueados. Las entradas de lista de bloqueados siempre se aplican, por lo que cualquier servidor llamado dangerous-server se bloquea independientemente de su URL o comando.
Una entrada serverName en esta lista de permitidos nunca coincidiría con nada, ya que ambos tipos de transporte ya tienen entradas más estrictas. Los acordeones a continuación recorren cómo se evalúa un servidor contra otras combinaciones de lista de permitidos y lista de bloqueados.
{
  "allowedMcpServers": [
    { "serverUrl": "https://mcp.example.com/*" },
    { "serverUrl": "https://*.internal.example.com/*" }
  ]
}
ServidorResultado
Servidor HTTP en https://mcp.example.com/apiPermitido: coincide con patrón de URL
Servidor HTTP en https://api.internal.example.com/mcpPermitido: coincide con subdominio comodín
Servidor HTTP en https://external.example.com/mcpBloqueado: no coincide con ningún patrón de URL
Servidor stdio con cualquier comandoBloqueado: sin entradas de nombre o comando para coincidir
{
  "allowedMcpServers": [
    { "serverCommand": ["npx", "-y", "approved-package"] }
  ]
}
ServidorResultado
Servidor stdio con ["npx", "-y", "approved-package"]Permitido: coincide con comando
Servidor stdio con ["node", "server.js"]Bloqueado: no coincide con comando
Servidor HTTP llamado my-apiBloqueado: sin entradas de nombre para coincidir
{
  "allowedMcpServers": [
    { "serverName": "github" },
    { "serverCommand": ["npx", "-y", "approved-package"] }
  ]
}
ServidorResultado
Servidor stdio llamado local-tool con ["npx", "-y", "approved-package"]Permitido: coincide con comando
Servidor stdio llamado local-tool con ["node", "server.js"]Bloqueado: existen entradas de comando pero no coincide
Servidor stdio llamado github con ["node", "server.js"]Bloqueado: los servidores stdio deben coincidir con comandos cuando existen entradas de comando
Servidor HTTP llamado githubPermitido: coincide con nombre
Servidor HTTP llamado other-apiBloqueado: el nombre no coincide
{
  "allowedMcpServers": [
    { "serverName": "github" },
    { "serverName": "internal-tool" }
  ]
}
ServidorResultado
Servidor stdio llamado github con cualquier comandoPermitido: sin restricciones de comando
Servidor stdio llamado internal-tool con cualquier comandoPermitido: sin restricciones de comando
Servidor HTTP llamado githubPermitido: coincide con nombre
Cualquier servidor llamado otherBloqueado: el nombre no coincide
{
  "allowedMcpServers": [
    { "serverUrl": "https://*.example.com/*" }
  ],
  "deniedMcpServers": [
    { "serverUrl": "https://staging.example.com/*" }
  ]
}
ServidorResultado
Servidor HTTP en https://mcp.example.com/apiPermitido: coincide con patrón de URL de lista de permitidos, sin coincidencia de lista de bloqueados
Servidor HTTP en https://staging.example.com/apiBloqueado: coincide con ambos, pero la lista de bloqueados tiene prioridad
Servidor HTTP en https://other.com/mcpBloqueado: no coincide con la lista de permitidos

Restringir la lista de permitidos solo a configuración administrada

Para hacer que la lista de permitidos administrada sea la única que se aplique, establezca allowManagedMcpServersOnly en el archivo de configuración administrada:
{
  "allowManagedMcpServersOnly": true,
  "allowedMcpServers": [
    { "serverUrl": "https://api.githubcopilot.com/*" },
    { "serverUrl": "https://*.internal.example.com/*" }
  ]
}
Cuando allowManagedMcpServersOnly es true, las listas de permitidos de configuración de usuario, proyecto y local se ignoran. La lista de bloqueados aún se fusiona desde todas las fuentes, por lo que los usuarios siempre pueden bloquear servidores para sí mismos.

Cómo aparecen las restricciones a los usuarios

Cuando una restricción bloquea un servidor, el usuario ve un error de claude mcp add o el servidor deja de cargarse silenciosamente. Use esta tabla para reconocer esos informes y para informar a los usuarios qué esperar antes de implementar un cambio:
RestricciónLo que ve el usuario
managed-mcp.json está presente y el usuario ejecuta claude mcp addCannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers
El servidor está en una lista de bloqueados y el usuario ejecuta claude mcp addCannot add MCP server "<name>": server is explicitly blocked by enterprise policy
El servidor no está en la lista de permitidos y el usuario ejecuta claude mcp addCannot add MCP server "<name>": not allowed by enterprise policy
Un servidor configurado previamente ahora está bloqueado por políticaEl servidor desaparece silenciosamente de /mcp y claude mcp list sin advertencia
En el último caso, el usuario no recibe ninguna señal de que la política es la razón por la que su servidor desapareció, así que informe a los usuarios afectados qué servidores se bloquean cuando implemente una nueva restricción.

Monitorear el uso de MCP

Cuando se configura exportación de OpenTelemetry, Claude Code puede registrar qué servidores MCP y herramientas invocan los usuarios. Establezca OTEL_LOG_TOOL_DETAILS=1 para incluir nombres de servidor MCP y herramientas en eventos de herramientas, luego agréguelos en su recopilador para ver qué servidores conectan realmente sus usuarios. Consulte Monitoring para configurar el exportador y para el esquema de evento completo.

Resumen de configuración

Cada archivo y configuración que cubre esta página, qué controla y cómo entregarlo:
SuperficieQué controlaDónde viveCómo entregar
managed-mcp.jsonConjunto de servidor fijo, control exclusivoRuta del sistema: /Library/Application Support/ClaudeCode/, /etc/claude-code/, o C:\Program Files\ClaudeCode\MDM, GPO, administración de flota, o cualquier proceso con privilegios de administrador. No se puede establecer a través de configuración administrada por servidor
allowedMcpServersLista de permitidos de servidores permitidosCualquier archivo de configuración; las entradas de cada fuente se fusionan a menos que allowManagedMcpServersOnly esté establecidoPara aplicación, una fuente de configuración administrada: configuración administrada por servidor, managed-settings.json, perfil MDM, o registro
deniedMcpServersLista de bloqueados de servidores bloqueadosCualquier archivo de configuración; las entradas de cada fuente se fusionanIgual que allowedMcpServers
allowManagedMcpServersOnlyBloquea la lista de permitidos solo a fuentes administradasSolo fuentes de configuración administrada; la configuración no tiene efecto en otros lugaresIgual que allowedMcpServers

Recursos relacionados