Skip to main content
Glama

Azure MCP Server

Servidor MCP (Model Context Protocol) desenvolvido com Node.js e Express para monitorar serviços da Azure, incluindo Virtual Machines (VMs) e Virtual Machine Scale Sets (VMSS).

Funcionalidades

  • Monitoramento de Virtual Machines (VMs)

  • Monitoramento de Virtual Machine Scale Sets (VMSS)

  • Obtenção de status e detalhes de recursos Azure

  • API RESTful com endpoints organizados

  • Autenticação segura com Azure via Service Principal

Pré-requisitos

  • Node.js 14+ instalado

  • Conta Azure ativa

  • Service Principal configurado com permissões adequadas

  • Subscription ID da Azure

Configuração

1. Instalação

cd azure-mcp-server npm install

2. Configurar variáveis de ambiente

Copie o arquivo .env.example para .env:

cp .env.example .env

Edite o arquivo .env com suas credenciais Azure:

# Azure Configuration AZURE_SUBSCRIPTION_ID=sua-subscription-id AZURE_TENANT_ID=seu-tenant-id AZURE_CLIENT_ID=seu-client-id AZURE_CLIENT_SECRET=seu-client-secret # Server Configuration PORT=3000 NODE_ENV=development # Resource Groups to Monitor (comma-separated) RESOURCE_GROUPS=rg-production,rg-staging

3. Criar Service Principal na Azure

az login az ad sp create-for-rbac --name "azure-mcp-server" --role "Reader" --scopes /subscriptions/{subscription-id}

Anote os valores retornados:

  • appId → AZURE_CLIENT_ID

  • password → AZURE_CLIENT_SECRET

  • tenant → AZURE_TENANT_ID

Uso

Iniciar o servidor

IMPORTANTE: O servidor pode iniciar mesmo sem as credenciais Azure configuradas, mas as chamadas à API falharão. Configure o arquivo .env antes de usar os endpoints da API.

Desenvolvimento (com hot-reload):

npm run dev

Produção:

npm start

Testar servidor:

npm test

O servidor estará disponível em http://localhost:3000

Ao iniciar, você verá:

  • ✓ Azure Config: Configurado → Credenciais OK, API funcionará

  • ✗ Azure Config: Não configurado → Configure o .env antes de usar a API

Endpoints da API

Health Check

GET /health

Verifica se o servidor está funcionando.

Informações do Serviço

GET /

Retorna informações sobre o serviço e lista de endpoints disponíveis.

Virtual Machines (VMs)

Listar todas as VMs

GET /api/vms

Listar VMs por Resource Group

GET /api/vms/resource-group/:resourceGroup

Obter detalhes de uma VM

GET /api/vms/:resourceGroup/:vmName

Obter status de uma VM

GET /api/vms/:resourceGroup/:vmName/status

Virtual Machine Scale Sets (VMSS)

Listar todos os VMSS

GET /api/vmss

Listar VMSS por Resource Group

GET /api/vmss/resource-group/:resourceGroup

Obter detalhes de um VMSS

GET /api/vmss/:resourceGroup/:vmssName

Obter status de um VMSS

GET /api/vmss/:resourceGroup/:vmssName/status

Listar instâncias de um VMSS

GET /api/vmss/:resourceGroup/:vmssName/instances

Obter view de uma instância específica

GET /api/vmss/:resourceGroup/:vmssName/instances/:instanceId

Exemplos de Uso

Listar todas as VMs

curl http://localhost:3000/api/vms

Obter status de uma VM específica

curl http://localhost:3000/api/vms/meu-resource-group/minha-vm/status

Listar instâncias de um VMSS

curl http://localhost:3000/api/vmss/meu-resource-group/meu-vmss/instances

Estrutura do Projeto

azure-mcp-server/ ├── src/ │ ├── config/ │ │ └── azure.js # Configuração de autenticação Azure │ ├── services/ │ │ ├── vmService.js # Serviço para gerenciar VMs │ │ └── vmssService.js # Serviço para gerenciar VMSS │ ├── routes/ │ │ ├── vmRoutes.js # Rotas para VMs │ │ └── vmssRoutes.js # Rotas para VMSS │ └── server.js # Servidor Express principal ├── .env.example # Exemplo de variáveis de ambiente ├── .gitignore ├── package.json └── README.md

Segurança

  • Nunca commite o arquivo .env com credenciais reais

  • Use Service Principal com princípio de menor privilégio

  • Em produção, considere usar Azure Key Vault para armazenar secrets

  • O servidor usa Helmet.js para headers de segurança HTTP

Troubleshooting

Erro de autenticação

Verifique se as credenciais no .env estão corretas e se o Service Principal tem permissões adequadas.

Timeout ao listar recursos

Aumente o timeout no cliente ou verifique a conectividade com Azure.

Resource Group não encontrado

Certifique-se de que o Resource Group existe e que o Service Principal tem acesso a ele.

Melhorias Futuras

  • Adicionar cache para melhorar performance

  • Implementar webhooks para notificações

  • Adicionar monitoramento de App Services

  • Implementar autenticação no próprio servidor

  • Adicionar métricas e logs estruturados

  • Criar dashboard web para visualização

  • Adicionar testes unitários e de integração

Licença

ISC

Contribuindo

Pull requests são bem-vindos. Para mudanças maiores, abra uma issue primeiro para discutir o que você gostaria de mudar.

-
security - not tested
F
license - not found
-
quality - not tested

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/pcsouzafv/azure-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server