mcp-azure

Servidor MCP para Azure (Resource Manager): inventario, etiquetas, energía de VM y ciclo de vida, con controles de gobernanza (alcance de suscripción/grupo de recursos, grupos protegidos, lista de ubicaciones permitidas, control de eliminación, confirmación tipada, simulación y auditoría).

Documentación

mcp-azure

CI License: MIT npm

Un servidor de Model Context Protocol para Azure (a través de la API de Azure Resource Manager — la capa programática detrás del Portal de Azure). Permite que un cliente compatible con MCP (Claude Desktop, Claude Code, Cursor, Codex, …) inventarie y opere recursos de Azure — con una capa de gobernanza que mantiene a un agente de IA dentro de límites seguros.

Qué ofrece

  • Inventario — lista suscripciones, ubicaciones, grupos de recursos y recursos; obtén cualquier recurso por su id de ARM.
  • Operaciones — crea grupos de recursos (en regiones aprobadas), fusiona etiquetas en cualquier recurso y controla el estado de energía de las máquinas virtuales (iniciar / detener / reiniciar / desasignar).
  • Ciclo de vida — elimina grupos de recursos y recursos individuales, con protección.
  • Gobernanza integrada — modos de acceso, listas permitidas de suscripciones/grupos de recursos, grupos de recursos protegidos, lista permitida de ubicaciones para nuevos grupos, control de eliminación, confirmación tipada para eliminaciones de alto impacto, simulación (dry-run) y registro de auditoría en JSON.

Modelo de gobernanza y seguridad

AspectoIndicadorPredeterminadoEfecto
¿Qué puede hacer el servidor?AZURE_MODEread-onlyread-only → inventario; read-write → crear RG, etiquetar, energía de VM; admin → eliminaciones. Las herramientas por encima del modo nunca se registran.
¿Qué suscripciones?AZURE_SUBSCRIPTION_ALLOWLIST(todas)Se rechazan operaciones en otras suscripciones.
¿Qué grupos de recursos?AZURE_RESOURCE_GROUP_ALLOWLIST(todos)Se rechazan operaciones fuera de la lista.
Grupos de solo lectura permanenteAZURE_PROTECTED_RESOURCE_GROUPS(ninguno)Legibles, nunca mutables.
Regiones aprobadasAZURE_LOCATION_ALLOWLIST(cualquiera)Solo se pueden crear nuevos grupos de recursos aquí.
¿Puede eliminar?AZURE_ALLOW_DELETEfalseLas eliminaciones requieren esto y el modo administrador.
Confirmación tipadaAZURE_REQUIRE_CONFIRMATIONtrueLas eliminaciones requieren que confirm sea igual al nombre del objetivo — no solo un booleano.
Vista previaAZURE_DRY_RUNfalseLas herramientas de escritura/administración validan + registran la intención y luego regresan.
Rastro de auditoríaAZURE_AUDIT_LOGtrueLínea JSON en stderr por operación protegida.
Confirmación interactiva(automática)—Las acciones destructivas y de alto impacto solicitan la aprobación humana mediante la elicitación de MCP antes de ejecutarse; los clientes sin elicitación recurren a la puerta *_ALLOW_*.

Herramientas

Lectura (read-only+): list_subscriptions, list_locations, list_resource_groups, list_resources, get_resource

Escritura (read-write+): create_resource_group, tag_resource, control_vm

Administración (admin): delete_resource_group, delete_resource (ambas necesitan AZURE_ALLOW_DELETE + confirm tipado)

Inicio rápido — agrégalo a tu agente

Publicado en npm como @dockndevai/mcp-azure. Se ejecuta mediante npx con una entidad de servicio de Entra ID. Consulta docs/CLIENTS.md para cada cliente y .env.example para todas las variables.

Claude Code

claude mcp add azure -e AZURE_TENANT_ID="…" -e AZURE_CLIENT_ID="…" -e AZURE_CLIENT_SECRET="…" -e AZURE_SUBSCRIPTION_ID="…" -e AZURE_MODE="read-only" -- npx -y @dockndevai/mcp-azure

Claude Desktop · Cursor · Windsurf

{
  "mcpServers": {
    "azure": {
      "command": "npx",
      "args": ["-y", "@dockndevai/mcp-azure"],
      "env": {
        "AZURE_TENANT_ID": "…",
        "AZURE_CLIENT_ID": "…",
        "AZURE_CLIENT_SECRET": "…",
        "AZURE_SUBSCRIPTION_ID": "…",
        "AZURE_MODE": "read-only"
      }
    }
  }
}

Ejemplos de indicaciones

  • "Lista todos los grupos de recursos en mi suscripción y en qué región está cada uno"
  • "Muestra todos los recursos del grupo rg-web"
  • "Etiqueta el recurso app-plan con env=prod y owner=team-a" (requiere lectura-escritura)
  • "Detén la VM build-agent en rg-ci" (requiere lectura-escritura)

Ejecutar desde el código fuente (desarrollo)

npm install
npm run build
node dist/index.js   # with the environment variables set

Desarrollo

npm run dev
npm test          # governance policy: modes, scoping, location allowlist, delete + confirmation
npm run typecheck

Publicación

Incluye un server.json para el registro oficial de MCP y un mcpName para la validación de propiedad de npm. Consulta PUBLISHING.md.

Licencia

MIT