Skip to main content
Glama

Azure MCP Server

by pcsouzafv
vmService.js2.63 kB
const { ComputeManagementClient } = require('@azure/arm-compute'); const azureConfig = require('../config/azure'); /** * Serviço para monitorar Virtual Machines (VMs) da Azure */ class VMService { constructor() { this.client = null; } getClient() { if (!this.client) { this.client = new ComputeManagementClient( azureConfig.getCredential(), azureConfig.getSubscriptionId() ); } return this.client; } /** * Lista todas as VMs em um grupo de recursos */ async listVMsByResourceGroup(resourceGroupName) { try { const client = this.getClient(); const vms = []; for await (const vm of client.virtualMachines.list(resourceGroupName)) { vms.push(vm); } return vms; } catch (error) { throw new Error(`Erro ao listar VMs: ${error.message}`); } } /** * Lista todas as VMs na subscription */ async listAllVMs() { try { const client = this.getClient(); const vms = []; for await (const vm of client.virtualMachines.listAll()) { vms.push(vm); } return vms; } catch (error) { throw new Error(`Erro ao listar todas as VMs: ${error.message}`); } } /** * Obtém detalhes de uma VM específica */ async getVM(resourceGroupName, vmName) { try { const client = this.getClient(); const vm = await client.virtualMachines.get( resourceGroupName, vmName, { expand: 'instanceView' } ); return vm; } catch (error) { throw new Error(`Erro ao obter VM ${vmName}: ${error.message}`); } } /** * Obtém o status de uma VM */ async getVMStatus(resourceGroupName, vmName) { try { const vm = await this.getVM(resourceGroupName, vmName); const statuses = vm.instanceView?.statuses || []; return { name: vm.name, location: vm.location, vmSize: vm.hardwareProfile?.vmSize, osType: vm.storageProfile?.osDisk?.osType, provisioningState: vm.provisioningState, powerState: this.extractPowerState(statuses), statuses: statuses.map(s => ({ code: s.code, level: s.level, displayStatus: s.displayStatus, message: s.message })) }; } catch (error) { throw new Error(`Erro ao obter status da VM ${vmName}: ${error.message}`); } } extractPowerState(statuses) { const powerStatus = statuses.find(s => s.code?.startsWith('PowerState/')); return powerStatus ? powerStatus.displayStatus : 'Unknown'; } } module.exports = new VMService();

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