Azure Kubernetes Service (AKS) MCP Server
Azure Kubernetes Service (AKS) official MCP server.
MCP Info
| Attribute | Details |
|---|---|
| Docker Image | mcp/aks |
| Author | Azure |
| Repository | https://github.com/Azure/aks-mcp |
Image Building Info
| Attribute | Details |
|---|---|
| Dockerfile | https://github.com/Azure/aks-mcp/blob/e60444c3d739dc3606d9ff4cd3826019e02df8d9/Dockerfile |
| Commit | e60444c3d739dc3606d9ff4cd3826019e02df8d9 |
| Docker Image built by | Docker Inc. |
| Docker Scout Health Score | Docker Scout Health Score |
| Verify Signature | COSIGN_REPOSITORY=mcp/signatures cosign verify mcp/aks --key https://raw.githubusercontent.com/docker/keyring/refs/heads/main/public/mcp/latest.pub |
| Licence | MIT License |
Available Tools (15)
| Tools provided by this Server | Short Description |
|---|---|
az_advisor_recommendation |
Retrieve and manage Azure Advisor recommendations for AKS clusters |
az_aks_operations |
Unified tool for managing Azure Kubernetes Service (AKS) clusters and related operations. |
az_compute_operations |
Unified tool for managing Azure Virtual Machines (VMs) and Virtual Machine Scale Sets (VMSS) using Azure CLI. |
az_fleet |
Run Azure Kubernetes Service Fleet management commands. |
az_monitoring |
Unified tool for Azure monitoring and diagnostics operations for AKS clusters. |
az_network_resources |
Unified tool for getting Azure network resource information used by AKS clusters. |
get_aks_vmss_info |
Get detailed VMSS configuration for a specific node pool or all node pools in the AKS cluster (provides low-level VMSS settings not available in az aks nodepool show). |
inspektor_gadget_observability |
Real-time observability tool for Azure Kubernetes Service (AKS) clusters, allowing users to manage gadgets for monitoring and debugging Apart from 'action' param: It supports 'action_params' (type=object) to specify parameters for the action.Available params are: gadget_name, duration, gadget_id, chart_version. |
kubectl_cluster |
Get information about the Kubernetes cluster and API. |
kubectl_config |
Work with Kubernetes configurations (read-only). |
kubectl_diagnostics |
Diagnose and debug Kubernetes resources. |
kubectl_resources |
View Kubernetes resources with read-only operations. |
list_detectors |
List all available AKS cluster detectors |
run_detector |
Run a specific AKS detector |
run_detectors_by_category |
Run all detectors in a specific category |
Tools Details
Tool: az_advisor_recommendation
Retrieve and manage Azure Advisor recommendations for AKS clusters
| Parameters | Type | Description |
|---|---|---|
operation |
string |
Operation to perform: list or report |
subscription_id |
string |
Azure subscription ID to query recommendations |
category |
string optional |
Filter by recommendation category: Cost, HighAvailability, Performance, Security |
cluster_names |
string optional |
Comma-separated list of specific AKS cluster names to filter recommendations |
format |
string optional |
Output format for reports: summary, detailed, actionable |
resource_group |
string optional |
Filter by specific resource group containing AKS clusters |
severity |
string optional |
Filter by severity level: High, Medium, Low |
This tool may perform destructive updates.
This tool interacts with external entities.
Tool: az_aks_operations
Unified tool for managing Azure Kubernetes Service (AKS) clusters and related operations.
Supported operations:
- Cluster: show, list, get-versions, check-network
- Nodepool: nodepool-list, nodepool-show
- Account: account-list
Examples:
- Show cluster: operation="show", args="--name myCluster --resource-group myRG"
- List nodepools: operation="nodepool-list", args="--cluster-name myCluster --resource-group myRG"
| Parameters | Type | Description |
|---|---|---|
args |
string |
Arguments for the operation |
operation |
string |
The operation to perform |
resource_type |
string optional |
The resource type (cluster, nodepool, account). Can be inferred from operation. |
This tool may perform destructive updates.
This tool interacts with external entities.
Tool: az_compute_operations
Unified tool for managing Azure Virtual Machines (VMs) and Virtual Machine Scale Sets (VMSS) using Azure CLI.
IMPORTANT: VM/VMSS resources are managed by AKS. Write operations should be used carefully and only for debugging purposes.
Use resource_type="vm" for single virtual machines or resource_type="vmss" for virtual machine scale sets.
Available operation values:
- show: Get details of a VM/VMSS
- list: List VMs/VMSS in subscription or resource group
- get-instance-view: Get runtime status
EXAMPLES: List VMSS: operation="list", resource_type="vmss", args="--resource-group myRG" Show VMSS: operation="show", resource_type="vmss", args="--name myVMSS --resource-group myRG" List VMs: operation="list", resource_type="vm", args="--resource-group myRG"
| Parameters | Type | Description |
|---|---|---|
args |
string |
Azure CLI arguments: '--resource-group myRG' (required for most operations), '--name myVM' (for specific resources), '--new-capacity 3' (for scaling) |
operation |
string |
Operation to perform. Common operations: list, show, start, stop, restart, deallocate, scale, etc. |
resource_type |
string |
Resource type: 'vm' (single virtual machine) or 'vmss' (virtual machine scale set) |
This tool may perform destructive updates.
This tool interacts with external entities.
Tool: az_fleet
Run Azure Kubernetes Service Fleet management commands.
Available operations and resources:
- fleet: list, show, create, update, delete, get-credentials
- member: list, show, create, update, delete
- updaterun: list, show, create, start, stop, delete
- updatestrategy: list, show, create, delete
- clusterresourceplacement: list, show, get, create, delete (Kubernetes CRD operations)
Examples:
- List fleets: operation='list', resource='fleet', args='--resource-group myRG'
- Show fleet: operation='show', resource='fleet', args='--name myFleet --resource-group myRG'
- Get fleet credentials: operation='get-credentials', resource='fleet', args='--name myFleet --resource-group myRG'
- Create member: operation='create', resource='member', args='--name myMember --fleet-name myFleet --resource-group myRG --member-cluster-id /subscriptions/.../myCluster'
- Create clusterresourceplacement: operation='create', resource='clusterresourceplacement', args='--name nginx --selector app=nginx --policy PickAll'
- List clusterresourceplacements: operation='list', resource='clusterresourceplacement', args=''
| Parameters | Type | Description |
|---|---|---|
args |
string |
Additional arguments for the command (e.g., '--name myFleet --resource-group myRG') |
operation |
string |
The operation to perform. Valid values: list, show, create, update, delete, start, stop, get-credentials |
resource |
string |
The resource type to operate on. Valid values: fleet, member, updaterun, updatestrategy, clusterresourceplacement |
This tool may perform destructive updates.
This tool interacts with external entities.
Tool: az_monitoring
Unified tool for Azure monitoring and diagnostics operations for AKS clusters.
Supported Operations:
-
Metrics - Query Azure Monitor metrics for AKS clusters and nodes
- list: Get metric values for specific metrics
- list-definitions: Get available metrics for a resource
- list-namespaces: Get metric namespaces for a resource
Use for: CPU usage, memory consumption, network traffic, pod counts, node health Required parameters: resource (Azure resource ID) Additional for 'list': metrics (metric names) Optional: aggregation, start-time, end-time, interval, filter
-
Resource Health - Get Azure Resource Health events for AKS clusters Use for: Cluster availability issues, platform problems, service health events Required parameters: subscription_id, resource_group, cluster_name, start_time Optional: end_time, status (Available, Unavailable, Degraded, Unknown)
-
Application Insights - Execute KQL queries against Application Insights telemetry Use for: Application performance monitoring, custom telemetry analysis, trace correlation Required parameters: subscription_id, resource_group, app_insights_name, query Optional: start_time + end_time OR timespan (not both)
-
Diagnostics - Check AKS cluster diagnostic settings configuration Use for: Verify logging is enabled, check log retention, validate diagnostic configuration Required parameters: subscription_id, resource_group, cluster_name
-
Control Plane Logs - Query AKS control plane logs Supported log categories:
- kube-apiserver
- kube-audit
- kube-audit-admin
- kube-controller-manager
- kube-scheduler
- cluster-autoscaler
- cloud-controller-manager
- guard (for authentication/authorization issues)
- csi-azuredisk-controller
- csi-azurefile-controller
- csi-snapshot-controller
- fleet-member-agent
- fleet-member-net-controller-manager
- fleet-mcs-controller-manager PLEASE NOTE: you need to check if the category is enabled in your cluster's diagnostic settings by using the diagnostics tool.
Use This Tool When You Need To:
- Monitor cluster or other azure resource performance and usage (use metrics)
- Check cluster availability and platform health (use resource_health)
- Analyze application telemetry and performance (use app_insights)
- Verify diagnostic logging configuration (use diagnostics)
- Debug Kubernetes API server issues (use control_plane_logs with kube-apiserver)
- Investigate authentication/authorization problems (use control_plane_logs with kube-audit, guard)
- Troubleshoot pod scheduling issues (use control_plane_logs with kube-scheduler)
- Check storage-related problems (use control_plane_logs with csi-azuredisk-controller, csi-azurefile-controller)
- Analyze cluster scaling behavior (use control_plane_logs with cluster-autoscaler)
- Review security audit events (use control_plane_logs with kube-audit, kube-audit-admin)
Examples:
metrics:
- Get CPU usage: operation="metrics", query_type="list", parameters="{"resource":"/subscriptions/sub-id/resourceGroups/rg/providers/Microsoft.ContainerService/managedClusters/cluster", "metrics":"node_cpu_usage_percentage", "aggregation":"Average", "start-time":"<start-time>", "end-time":"<end-time>"}"
- List available metrics: operation="metrics", query_type="list-definitions", parameters="{"resource":"/subscriptions/sub-id/resourceGroups/rg/providers/Microsoft.ContainerService/managedClusters/cluster"}"
resource_health:
- Check recent cluster health: operation="resource_health", subscription_id="<subscription-id>", resource_group="<resource-group>", cluster_name="<cluster-name>", parameters="{"start_time":"<start-time>"}"
app_insights:
- Query request telemetry: operation="app_insights", subscription_id="<subscription-id>", resource_group="<resource-group>", parameters="{"app_insights_name":"myapp-insights", "query":"requests | where timestamp > ago(1h) | summarize count() by bin(timestamp, 5m)"}"
- Analyze exceptions: operation="app_insights", subscription_id="<subscription-id>", resource_group="<resource-group>", parameters="{"app_insights_name":"myapp-insights", "query":"exceptions | where timestamp > ago(24h) | summarize count() by type, bin(timestamp, 1h)"}"
- Performance with timespan: operation="app_insights", subscription_id="<subscription-id>", resource_group="<resource-group>", parameters="{"app_insights_name":"myapp-insights", "query":"performanceCounters | where category == 'Processor' | summarize avg(value) by bin(timestamp, 5m)", "timespan":"PT1H"}"
diagnostics:
- Verify diagnostic settings: operation="diagnostics", subscription_id="<subscription-id>", resource_group="<resource-group>", cluster_name="<cluster-name>", parameters="{}"
control_plane_logs:
- Query API server logs: operation="control_plane_logs", subscription_id="<subscription-id>", resource_group="<resource-group>", cluster_name="<cluster-name>", parameters="{"log_category":"kube-apiserver", "start_time":"<start-time>", "end_time":"<end-time>", "max_records":"50"}"
- Debug authentication issues: operation="control_plane_logs", subscription_id="<subscription-id>", resource_group="<resource-group>", cluster_name="<cluster-name>", parameters="{"log_category":"guard", "start_time":"<start-time>", "end_time":"<end-time>", "max_records":"100"}"
- Analyze audit events: operation="control_plane_logs", subscription_id="<subscription-id>", resource_group="<resource-group>", cluster_name="<cluster-name>", parameters="{"log_category":"kube-audit", "log_level":"error", "start_time":"<start-time>", "end_time":"<end-time>", "max_records":"50"}"
| Parameters | Type | Description |
|---|---|---|
operation |
string |
The monitoring operation to perform: 'metrics' (CPU/memory/network), 'resource_health' (cluster availability), 'app_insights' (telemetry analysis), 'diagnostics' (logging config), 'control_plane_logs' (Kubernetes logs like kube-apiserver, kube-audit, guard, etc.) |
parameters |
string |
JSON string with operation parameters. metrics: resource (required), metrics (required for 'list' query_type), aggregation/start-time/end-time/interval/filter (optional). resource_health: start_time, end_time, status. app_insights: app_insights_name, query, start_time/end_time OR timespan (optional). diagnostics: none required. control_plane_logs: log_category (kube-apiserver/kube-audit/guard/etc), start_time, end_time, max_records, log_level |
cluster_name |
string optional |
AKS cluster name (required for resource_health, diagnostics, control_plane_logs) |
query_type |
string optional |
For metrics operations only: 'list' (get metric values), 'list-definitions' (available metrics), 'list-namespaces' (metric categories) |
resource_group |
string optional |
Resource group name (required for resource_health, app_insights, diagnostics, control_plane_logs) |
subscription_id |
string optional |
Azure subscription ID (required for resource_health, app_insights, diagnostics, control_plane_logs) |
This tool may perform destructive updates.
This tool interacts with external entities.
Tool: az_network_resources
Unified tool for getting Azure network resource information used by AKS clusters.
Supported resource types:
- all: Get information about all network resources
- vnet: Get Virtual Network information
- nsg: Get Network Security Group information
- route_table: Get Route Table information
- subnet: Get Subnet information
- load_balancer: Get Load Balancer information
- private_endpoint: Get Private Endpoint information (private clusters only)
Examples:
- Get all network resources: resource_type="all"
- Get VNet info: resource_type="vnet"
- Get NSG info: resource_type="nsg"
| Parameters | Type | Description |
|---|---|---|
cluster_name |
string |
Name of the AKS cluster |
resource_group |
string |
Azure Resource Group containing the AKS cluster |
resource_type |
string |
The type of network resource to query |
subscription_id |
string |
Azure Subscription ID |
filters |
string optional |
Optional filters for the query |
This tool may perform destructive updates.
This tool interacts with external entities.
Tool: get_aks_vmss_info
Get detailed VMSS configuration for a specific node pool or all node pools in the AKS cluster (provides low-level VMSS settings not available in az aks nodepool show). Leave node_pool_name empty to get info for all node pools.
| Parameters | Type | Description |
|---|---|---|
cluster_name |
string |
Name of the AKS cluster |
resource_group |
string |
Azure Resource Group containing the AKS cluster |
subscription_id |
string |
Azure Subscription ID |
node_pool_name |
string optional |
Name of the node pool to get VMSS information for. Leave empty to get info for all node pools. |
This tool may perform destructive updates.
This tool interacts with external entities.
Tool: inspektor_gadget_observability
Real-time observability tool for Azure Kubernetes Service (AKS) clusters, allowing users to manage gadgets for monitoring and debugging
Apart from 'action' param:
It supports 'action_params' (type=object) to specify parameters for the action.Available params are: gadget_name, duration, gadget_id, chart_version. Available Gadget names are: observe_dns, observe_tcp, observe_file_open, observe_process_execution, observe_signal, observe_system_calls, top_file, top_tcp, tcpdump. Example: {'action': 'run', 'action_params': {'gadget_name': 'observe_dns', 'duration': 10}}
It supports 'filter_params' (type=object) to filter the data captured by the gadget. Available params are: namespace, pod, container, selector,observe_signal.signal, observe_dns.nameserver, observe_dns.minimum_latency, observe_dns.response_code, observe_dns.unsuccessful_only, observe_tcp.destination_port, observe_tcp.event_type, observe_file_open.path, observe_dns.name, observe_file_open.unsuccessful_only, observe_process_execution.command, observe_system_calls.syscall, top_tcp.max_entries, tcpdump.pcap-filter, observe_tcp.unsuccessful_only, observe_tcp.source_port, top_file.max_entries. Example: {'action': 'run', 'filter_params': {'namespace': 'default', 'selector': 'app=myapp', 'observe_dns.unsuccessful_only': true}}
| Parameters | Type | Description |
|---|---|---|
action |
string |
Action to perform on the gadget: run to run a gadget for a specific duration, start to start a gadget for continuous observation, stop to stop a running gadget using gadget_id, get_results to retrieve results of a gadget run using gadget_id (only available before stopping the gadget), list_gadgets to list all running (not available) gadgetsdeploy to deploy Inspektor Gadget, undeploy to undeploy Inspektor Gadgetupgrade to upgrade Inspektor Gadget, is_deployed to check if Inspektor Gadget is deployed |
action_params |
object optional |
Parameters for the action |
filter_params |
object optional |
Parameters to filter the data captured by the gadget |
This tool may perform destructive updates.
This tool interacts with external entities.
Tool: kubectl_cluster
Get information about the Kubernetes cluster and API.
Available operations:
- cluster-info: Display cluster information
- api-resources: Print supported API resources
- api-versions: Print supported API versions
- explain: Get documentation for a resource
Examples:
- Cluster info: operation='cluster-info', resource='', args=''
- Cluster info dump: operation='cluster-info', resource='dump', args=''
- List resources: operation='api-resources', resource='', args=''
- Namespaced resources: operation='api-resources', resource='', args='--namespaced=true'
- Non-namespaced resources: operation='api-resources', resource='', args='--namespaced=false'
- Resources by group: operation='api-resources', resource='', args='--api-group=rbac.authorization.k8s.io'
- API versions: operation='api-versions', resource='', args=''
- Explain pod: operation='explain', resource='pods', args=''
- Explain field: operation='explain', resource='pods.spec.containers', args=''
- Explain with version: operation='explain', resource='deployments', args='--api-version=apps/v1'
| Parameters | Type | Description |
|---|---|---|
args |
string |
Additional flags and options |
operation |
string |
The operation to perform: cluster-info, api-resources, api-versions, explain |
resource |
string |
The resource type for explain operation, or empty string '' for cluster-info/api-resources/api-versions |
This tool may perform destructive updates.
This tool interacts with external entities.
Tool: kubectl_config
Work with Kubernetes configurations (read-only).
Available operations:
- diff: Diff the live version against what would be applied
- auth: Inspect authorization (can-i)
- config: View kubectl configuration contexts (read-only)
Config operations (read-only):
- current-context: Display the current context
- get-contexts: Describe one or many contexts
Examples:
- Diff config: operation='diff', resource='', args='-f pod.json'
- Check auth: operation='auth', resource='can-i', args='create pods --all-namespaces'
- Get current context: operation='config', resource='current-context', args=''
- List contexts: operation='config', resource='get-contexts', args=''
| Parameters | Type | Description |
|---|---|---|
args |
string |
Operation-specific arguments |
operation |
string |
The operation to perform: diff, auth, config |
resource |
string |
Subcommand for auth/certificate/config operations, or empty string '' for diff operation |
This tool may perform destructive updates.
This tool interacts with external entities.
Tool: kubectl_diagnostics
Diagnose and debug Kubernetes resources.
Available operations:
- logs: Print logs for a container in a pod
- events: Display events
- top: Display resource usage (CPU/Memory)
- exec: Execute a command in a container
- cp: Copy files to/from containers
Examples:
- Logs for default container: operation='logs', resource='', args='nginx'
- Logs for specific container: operation='logs', resource='', args='nginx -c ruby-container'
- Logs with selector: operation='logs', resource='', args='-l app=nginx --all-containers=true'
- Get events: operation='events', resource='', args='--all-namespaces'
- Get events namespace: operation='events', resource='', args='-n default'
- Top pods: operation='top', resource='pod', args=''
- Top nodes: operation='top', resource='node', args=''
- Top with containers: operation='top', resource='pod', args='POD_NAME --containers'
- Exec command: operation='exec', resource='', args='mypod -n NAMESPACE -- date'
- Copy to pod: operation='cp', resource='', args='/tmp/foo_dir some-pod:/tmp/bar_dir'
- Copy from pod: operation='cp', resource='', args='some-namespace/some-pod:/tmp/foo /tmp/bar'
- Copy with container: operation='cp', resource='', args='/tmp/foo some-pod:/tmp/bar -c specific-container'
| Parameters | Type | Description |
|---|---|---|
args |
string |
Resource names and operation-specific flags |
operation |
string |
The operation to perform: logs, events, top, exec, cp |
resource |
string |
The resource type: 'node'/'pod' for top, empty string '' for logs/events/exec/cp |
This tool may perform destructive updates.
This tool interacts with external entities.
Tool: kubectl_resources
View Kubernetes resources with read-only operations.
Available operations:
- get: Display one or many resources
- describe: Show detailed information about resources
Common resources: pods, deployments, services, configmaps, secrets, namespaces, etc.
Examples:
- Get pods: operation='get', resource='pods', args='-n default'
- Get specific pod: operation='get', resource='pods', args='nginx-pod -n default'
- Get with selector: operation='get', resource='pods', args='-l app=nginx'
- Get all namespaces: operation='get', resource='pods', args='--all-namespaces'
- Describe deployment: operation='describe', resource='deployment', args='myapp -n production'
- Describe all pods: operation='describe', resource='pods', args=''
- Describe with selector: operation='describe', resource='pods', args='-l name=myLabel'
| Parameters | Type | Description |
|---|---|---|
args |
string |
Additional arguments like resource names, namespaces, and flags |
operation |
string |
The operation to perform: get, describe |
resource |
string |
The resource type (e.g., pods, deployments, services) or empty string '' for file-based operations (create -f, apply -f, patch -f, replace -f, delete -f) |
This tool may perform destructive updates.
This tool interacts with external entities.
Tool: list_detectors
List all available AKS cluster detectors
| Parameters | Type | Description |
|---|---|---|
cluster_resource_id |
string |
AKS cluster resource ID |
This tool may perform destructive updates.
This tool interacts with external entities.
Tool: run_detector
Run a specific AKS detector
| Parameters | Type | Description |
|---|---|---|
cluster_resource_id |
string |
AKS cluster resource ID |
detector_name |
string |
Name of the detector to run |
end_time |
string |
End time in UTC ISO format (within last 30 days, max 24h from start). Example: 2025-07-11T14:55:13Z |
start_time |
string |
Start time in UTC ISO format (within last 30 days). Example: 2025-07-11T10:55:13Z |
This tool may perform destructive updates.
This tool interacts with external entities.
Tool: run_detectors_by_category
Run all detectors in a specific category
| Parameters | Type | Description |
|---|---|---|
category |
string |
Detector category to run (Best Practices, Cluster and Control Plane Availability and Performance, Connectivity Issues, Create/Upgrade/Delete and Scale, Deprecations, Identity and Security, Node Health, Storage) |
cluster_resource_id |
string |
AKS cluster resource ID |
end_time |
string |
End time in UTC ISO format (within last 30 days, max 24h from start). Example: 2025-07-11T14:55:13Z |
start_time |
string |
Start time in UTC ISO format (within last 30 days). Example: 2025-07-11T10:55:13Z |
This tool may perform destructive updates.
This tool interacts with external entities.
Use this MCP Server
{
"mcpServers": {
"aks": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v",
"/local-directory:/local-directory",
"mcp/aks",
"--transport=stdio",
"--access-level={{aks.access_level}}",
"--allow-namespaces={{aks.allow_namespaces}}",
"--additional-tools={{aks.additional_tools}}"
]
}
}
}