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
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
| Aspecto | Indicador | Predeterminado | Efecto |
|---|---|---|---|
| ¿Qué puede hacer el servidor? | AZURE_MODE | read-only | read-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 permanente | AZURE_PROTECTED_RESOURCE_GROUPS | (ninguno) | Legibles, nunca mutables. |
| Regiones aprobadas | AZURE_LOCATION_ALLOWLIST | (cualquiera) | Solo se pueden crear nuevos grupos de recursos aquí. |
| ¿Puede eliminar? | AZURE_ALLOW_DELETE | false | Las eliminaciones requieren esto y el modo administrador. |
| Confirmación tipada | AZURE_REQUIRE_CONFIRMATION | true | Las eliminaciones requieren que confirm sea igual al nombre del objetivo — no solo un booleano. |
| Vista previa | AZURE_DRY_RUN | false | Las herramientas de escritura/administración validan + registran la intención y luego regresan. |
| Rastro de auditoría | AZURE_AUDIT_LOG | true | Lí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