Skip to main content
Glama

Azure MCP Server

by pcsouzafv
README.md5.34 kB
# 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 ```bash cd azure-mcp-server npm install ``` ### 2. Configurar variáveis de ambiente Copie o arquivo `.env.example` para `.env`: ```bash cp .env.example .env ``` Edite o arquivo `.env` com suas credenciais Azure: ```env # 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 ```bash 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):** ```bash npm run dev ``` **Produção:** ```bash npm start ``` **Testar servidor:** ```bash 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 ```bash curl http://localhost:3000/api/vms ``` ### Obter status de uma VM específica ```bash curl http://localhost:3000/api/vms/meu-resource-group/minha-vm/status ``` ### Listar instâncias de um VMSS ```bash 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.

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