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 cada operación protegida. |
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 requieren 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 un principal 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 en el 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