Azure MCP Server
Enables monitoring and management of Azure resources including Virtual Machines (VMs) and Virtual Machine Scale Sets (VMSS) through a RESTful API with secure Service Principal authentication.
README
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_IDpassword→ AZURE_CLIENT_SECRETtenant→ 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
.envcom 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.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.