Skip to main content
Glama

Azure MCP Server

Official
MIT License
1,161
  • Linux
  • Apple
ClusterGetCommand.cs3.67 kB
// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. using AzureMcp.Aks.Options; using AzureMcp.Aks.Options.Cluster; using AzureMcp.Aks.Services; using AzureMcp.Core.Commands; using AzureMcp.Core.Services.Telemetry; using Microsoft.Extensions.Logging; namespace AzureMcp.Aks.Commands.Cluster; public sealed class ClusterGetCommand(ILogger<ClusterGetCommand> logger) : BaseAksCommand<ClusterGetOptions> { private const string CommandTitle = "Get AKS Cluster Details"; private readonly ILogger<ClusterGetCommand> _logger = logger; // Define options from OptionDefinitions private readonly Option<string> _clusterNameOption = AksOptionDefinitions.Cluster; public override string Name => "get"; public override string Description => """ Get details for a specific Azure Kubernetes Service (AKS) cluster. Returns detailed cluster information including configuration, network settings, and status. """; public override string Title => CommandTitle; public override ToolMetadata Metadata => new() { Destructive = false, ReadOnly = true }; protected override void RegisterOptions(Command command) { base.RegisterOptions(command); RequireResourceGroup(); command.AddOption(_clusterNameOption); } protected override ClusterGetOptions BindOptions(ParseResult parseResult) { var options = base.BindOptions(parseResult); options.ClusterName = parseResult.GetValueForOption(_clusterNameOption); return options; } public override async Task<CommandResponse> ExecuteAsync(CommandContext context, ParseResult parseResult) { var options = BindOptions(parseResult); try { if (!Validate(parseResult.CommandResult, context.Response).IsValid) { return context.Response; } var aksService = context.GetService<IAksService>(); var cluster = await aksService.GetCluster( options.Subscription!, options.ClusterName!, options.ResourceGroup!, options.Tenant, options.RetryPolicy); context.Response.Results = cluster is null ? null : ResponseResult.Create( new ClusterGetCommandResult(cluster), AksJsonContext.Default.ClusterGetCommandResult); } catch (Exception ex) { _logger.LogError(ex, "Error getting AKS cluster. Subscription: {Subscription}, ResourceGroup: {ResourceGroup}, ClusterName: {ClusterName}, Options: {@Options}", options.Subscription, options.ResourceGroup, options.ClusterName, options); HandleException(context, ex); } return context.Response; } protected override string GetErrorMessage(Exception ex) => ex switch { Azure.RequestFailedException reqEx when reqEx.Status == 404 => "AKS cluster not found. Verify the cluster name, resource group, and subscription, and ensure you have access.", Azure.RequestFailedException reqEx when reqEx.Status == 403 => $"Authorization failed accessing the AKS cluster. Details: {reqEx.Message}", Azure.RequestFailedException reqEx => reqEx.Message, _ => base.GetErrorMessage(ex) }; protected override int GetStatusCode(Exception ex) => ex switch { Azure.RequestFailedException reqEx => reqEx.Status, _ => base.GetStatusCode(ex) }; internal record ClusterGetCommandResult(AzureMcp.Aks.Models.Cluster Cluster); }

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/Azure/azure-mcp'

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