mcp-azure
Servidor MCP para Azure (Resource Manager) — inventário, tags, energia de VM e ciclo de vida — com controles de governança (escopo de assinatura/grupo de recursos, grupos protegidos, lista de permissões de localização, bloqueio de exclusão, confirmação tipada, simulação e auditoria).
Documentação
mcp-azure
Um servidor Model Context Protocol para Azure (via API do Azure Resource Manager — a camada programática por trás do Portal do Azure). Ele permite que um cliente compatível com MCP (Claude Desktop, Claude Code, Cursor, Codex, …) faça inventário e opere recursos do Azure — com uma camada de governança que mantém um agente de IA dentro de limites seguros.
O que este servidor oferece
- Inventário — liste assinaturas, localizações, grupos de recursos e recursos; obtenha qualquer recurso pelo ID ARM.
- Operações — crie grupos de recursos (em regiões aprovadas), mescle tags em qualquer recurso e controle o estado de energia de VMs (iniciar / parar / reiniciar / desalocar).
- Ciclo de vida — exclua grupos de recursos e recursos individuais, com proteção.
- Governança integrada — modos de acesso, listas de permissão de assinaturas/grupos de recursos, grupos de recursos protegidos, lista de permissão de localizações para novos grupos, bloqueio de exclusão, confirmação tipada para exclusões de alto impacto, simulação (dry-run) e registro de auditoria em JSON.
Modelo de governança e segurança
| Preocupação | Flag | Padrão | Efeito |
|---|---|---|---|
| O que o servidor pode fazer? | AZURE_MODE | read-only | read-only → inventário; read-write → criar RG, tags, energia de VM; admin → exclusões. Ferramentas acima do modo nunca são registradas. |
| Quais assinaturas? | AZURE_SUBSCRIPTION_ALLOWLIST | (todas) | Operações em outras assinaturas são recusadas. |
| Quais grupos de recursos? | AZURE_RESOURCE_GROUP_ALLOWLIST | (todos) | Operações fora da lista são recusadas. |
| Grupos somente leitura para sempre | AZURE_PROTECTED_RESOURCE_GROUPS | (nenhum) | Legíveis, nunca mutáveis. |
| Regiões aprovadas | AZURE_LOCATION_ALLOWLIST | (qualquer) | Novos grupos de recursos só podem ser criados aqui. |
| Pode excluir? | AZURE_ALLOW_DELETE | false | Exclusões precisam disso e do modo admin. |
| Confirmação tipada | AZURE_REQUIRE_CONFIRMATION | true | Exclusões exigem que confirm seja igual ao nome do alvo — não apenas um booleano. |
| Simulação (preview) | AZURE_DRY_RUN | false | Ferramentas de escrita/admin validam + registram a intenção e retornam. |
| Trilha de auditoria | AZURE_AUDIT_LOG | true | Linha JSON no stderr por operação protegida. |
Ferramentas
Leitura (read-only+): list_subscriptions, list_locations, list_resource_groups, list_resources, get_resource
Escrita (read-write+): create_resource_group, tag_resource, control_vm
Admin (admin): delete_resource_group, delete_resource (ambas precisam de AZURE_ALLOW_DELETE + confirm tipado)
Início rápido — adicione ao seu agente
Publicado no npm como @dockndevai/mcp-azure. Executa via npx com um service principal do Entra ID. Consulte docs/CLIENTS.md para cada cliente e .env.example para todas as variáveis.
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"
}
}
}
}
Exemplos de prompts
- "Liste todos os grupos de recursos na minha assinatura e em qual região cada um está"
- "Mostre todos os recursos no grupo rg-web"
- "Adicione tags ao recurso app-plan com env=prod e owner=team-a" (requer leitura-escrita)
- "Pare a VM build-agent no rg-ci" (requer leitura-escrita)
Executar a partir do código-fonte (desenvolvimento)
npm install
npm run build
node dist/index.js # with the environment variables set
Desenvolvimento
npm run dev
npm test # governance policy: modes, scoping, location allowlist, delete + confirmation
npm run typecheck
Publicação
Inclui um server.json para o registro oficial do MCP e um mcpName para validação de propriedade no npm. Consulte PUBLISHING.md.
Licença
MIT