AKS 模型情境協定(MCP)伺服器使 AI 助理能以清晰、安全且可控的方式與 Azure Kubernetes Service(AKS)叢集互動。 它作為 AI 工具(如 GitHub Copilot、Claude 及其他相容 MCP 的 AI 助理)與 AKS 之間的橋樑,將自然語言請求轉換為 AKS 操作,並以 AI 工具能理解的格式回傳結果。
AKS MCP 伺服器透過 Azure SDK 連接 Azure,並提供一組工具,讓 AI 助理能與 AKS 資源互動。 這些工具讓 AI 代理能執行以下任務:
- 疑難排解與診斷
- 分析您的叢集的健康狀況
- 操作(CRUD)AKS 資源
- 檢索與 AKS 叢集相關的細節(VNet、子網、網路安全群組(NSG)、路由表等)
- 啟用最佳實務與推薦功能
- 管理多叢集場景的 Azure Fleet 運作
AKS MCP 伺服器是完全開源的專案,GitHub 倉庫中提供範例範本與 Helm 設定。
何時使用 AKS MCP 伺服器
AKS MCP 伺服器可以搭配任何相容的 AI 助理使用,包括 AKS 的 Agentic CLI 和 Microsoft Copilot。 常見的使用案例包括:
- 向 AI 助理提問,例如:
- 「為什麼此叢集中的 Pod 處於待處理狀態?」
- 「我的 AKS 叢集的網路配置是什麼?」
- 「建立一個部署位置,將 nginx 工作負載部署到叢集,標籤為 app=frontend。」
- 讓 AI 工具能夠:
- 讀取叢集狀態與配置
- 檢查指標、事件與日誌
- 跨 Kubernetes 與 Azure 資源關聯訊號
- 直接在您的叢集上套用變更並啟用新功能
所有透過 AKS MCP 伺服器執行的操作都受 Kubernetes Role-Based 存取控制(RBAC)及 Azure RBAC 約束。 預設情況下,AKS MCP 伺服器在存取叢集與 Azure 資源時會繼承使用者的權限。 若要自訂 AKS MCP 伺服器的角色與權限,請部署內建 RBAC 控制的遠端 AKS MCP 伺服器模式。
可用工具
AKS MCP 伺服器提供一套完整的工具,用於與 AKS 叢集及相關資源互動。 預設情況下,伺服器使用 統一工具 (call_az 用於 Azure 作業與 call_kubectl Kubernetes 作業),提供更靈活的介面來與 Kubernetes 及 Azure 資源互動。
你可以為 AKS MCP 伺服器啟用三組權限:唯讀(預設)、讀寫和管理員權限。有些工具需要讀寫或管理員權限,才能執行像是部署除錯 Pod 或 CRUD 動作等動作。 若要啟用 AKS-MCP 伺服器的讀寫或管理員權限,請在您的 MCP 設定檔中加入 存取層級 參數:
- 瀏覽至您的 mcp.json 檔案,或在命令選擇區 (適用於 VS Code;Windows/Linux 使用
Ctrl+Shift+P,macOS 使用Cmd+Shift+P) 中前往 MCP:列出伺服器 -> AKS-MCP -> 顯示組態詳細資料。 - 在 AKS-MCP 的「args」區塊中,新增以下參數:「--access-level」、「readwrite」或「admin」。
例如:
"args": [
"--transport",
"stdio",
"--access-level",
"readwrite"
]
這些工具設計用於透過統一介面提供全面功能:
Azure CLI Operations (Unified Tool)
工具:call_az
統一工具,直接執行 Azure CLI 指令。 此工具提供靈活介面,可執行任何 Azure CLI 指令。
參數:
-
cli_command: 執行完整的 Azure CLI 指令。 例如,az aks list --resource-group myRG或az vm list --subscription <sub-id>。 -
timeout:可選超時秒數(預設:120秒)
範例用法:
{
"cli_command": "az aks list --resource-group myResourceGroup --output json"
}
存取控制:
- 唯讀:僅允許讀取作業
- 讀寫/管理:允許同時讀寫操作
這很重要
指令必須是簡單的 Azure CLI 調用,沒有 shell 功能,如管道(|)、重定向(>、)、 <指令替換或分號(;))。
Kubernetes 操作(統一工具)
kubectl 統一工具
工具:call_kubectl
統一工具,可直接執行 kubectl 指令。 此工具提供靈活介面,能執行任何 kubectl 指令,並支援完整參數。
參數:
-
args:kubectl 指令的參數。 例如get pods、describe node mynode或apply -f deployment.yaml。
範例用法:
{
"args": "get pods -n kube-system -o wide"
}
存取控制: 操作會根據設定的存取層級受到限制:
- 唯讀:僅允許讀取操作(取得、描述、紀錄等)
- readwrite/admin:所有操作,包括變異指令(建立、刪除、套用等)
Helm
工具:call_helm
Kubernetes 的 Helm 套件管理器。
Cilium
工具:call_cilium
Cilium CLI,用於基於 eBPF 的網路與安全功能。
哈 勃
工具:call_hubble
適用於 Cilium 的 Hubble 網路可觀察性。
網路資源管理
工具:aks_network_resources
統一工具,用於取得 AKS 叢集使用的 Azure 網路資源資訊。
可用資源類型:
-
all:獲取所有網路資源資訊 -
vnet:虛擬網路資訊 -
subnet:子網資訊 -
nsg:網路安全群組資訊 -
route_table:路線表資訊 -
load_balancer:負載平衡器資訊 -
private_endpoint:私有端點資訊
監測與診斷
工具:aks_monitoring
用於 Azure 監控與診斷操作的統一工具,適用於 AKS 叢集。
可操作的行動:
-
metrics: 列出資源的度量值 -
resource_health: 取得 AKS 叢集的資源健康事件 -
app_insights: 對 Application Insights 遙測資料執行 KQL 查詢 -
diagnostics: 檢查 AKS 叢集是否有設定診斷設定 -
control_plane_logs:查詢帶有安全限制與時間範圍驗證的 AKS 控制平面日誌
計算資源
工具:get_aks_vmss_info
- 在 AKS 叢集中詳細設定你的虛擬機縮放集(節點池)
車隊管理
工具:az_fleet
多叢集情境下的全面 Azure 艦隊管理。
可操作的行動:
- 艦隊操作:列出、顯示、建立、更新、刪除、取得憑證
- 成員操作:列出、顯示、建立、更新、刪除
- 更新執行操作:列出、顯示、建立、開始、停止、刪除
- 更新策略操作:列出、顯示、建立、刪除
- ClusterResourcePlacement 操作:清單、顯示、取得、建立、刪除
支援 Azure Fleet 管理及 Kubernetes ClusterResourcePlacement CRD 操作。
診斷偵測器
工具:aks_detector
執行 AKS 診斷偵測器操作的統一工具。
可操作的行動:
-
list:列出所有可用的AKS叢集探測器 -
run: 運行特定的AKS診斷偵測器 -
run_by_category:運行特定類別的所有偵測器
參數:
-
operation(必要條件):執行(list、run、或run_by_category)的操作 -
aks_resource_id(必備):AKS 叢集資源識別碼 -
detector_name(操作所需run):偵測器名稱 -
category(run_by_category運作所需):檢測器類別 -
start_time(run與run_by_category作業的必要項目):UTC ISO 格式的開始時間 (限最近 30 天內) -
end_time(適用於run和run_by_category操作):結束時間須為 UTC ISO 格式,需在過去 30 天內,且自開始起計不超過 24 小時。
可用類別:
- 最佳做法
- 叢集與控制平面可用性與效能
- 連接性問題
- 建立、升級、刪除與縮放
- 棄用項目
- 身分識別與安全性
- 節點健康
- 儲存體
範例用法:
工具:run_detectors_by_category
{
"operation": "list",
"aks_resource_id": "/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.ContainerService/managedClusters/xxx"
}
{
"operation": "run",
"aks_resource_id": "/subscriptions/xxx/resourceGroups/xxx/providers/Microsoft.ContainerService/managedClusters/xxx",
"detector_name": "node-health-detector",
"start_time": "2025-01-15T10:00:00Z",
"end_time": "2025-01-15T12:00:00Z"
}
Azure Advisor
工具:aks_advisor_recommendation
檢索及管理 Azure Advisor 對 AKS 叢集的建議。
可操作的行動:
-
list: 列出帶有篩選選項的推薦 -
report: 產生推薦報告 - 篩選選項:resource_group、cluster_names、類別(成本、高可用性、效能、安全性)、嚴重度(高、中、低)
即時可觀察性
工具:inspektor_gadget_observability
使用 eBPF 的 Azure Kubernetes Service (AKS) 叢集即時可觀察性工具。
可用行動:
-
deploy:在叢集上安裝 Inspektor Gadget -
undeploy:從叢集中移除 Inspektor Gadget -
is_deployed:檢查部署狀態 -
run:執行一次性工具 -
start:啟動連續性工具 -
stop:停止運行小工具 -
get_results:取得小工具結果 -
list_gadgets:列出可用裝置
可用裝備:
-
observe_dns:監控 DNS 請求與回應 -
observe_tcp: 監控 TCP 連線 -
observe_file_open: 監控檔案系統操作 -
observe_process_execution:監控程序執行 -
observe_signal:監控訊號傳遞 -
observe_system_calls: 監控系統呼叫 -
top_file:依I/O操作排序的頂尖檔案 -
top_tcp:按流量分類的頂尖 TCP 連線 -
tcpdump:擷取網路封包
開始使用 AKS MCP 伺服器
AKS MCP 伺服器有兩種模式:本地與遠端。 本節將介紹兩種模式的使用案例與安裝流程。
本地 MCP 伺服器
在本地模式下,MCP 伺服器運行於開發者的本地機器上,並利用開發者現有的權限連接到 AKS。 此模式最適合快速設置本地 AI 代理,具備 AKS 專業知識與工具,且不需叢集端元件。 本地模式可以使用目前的叢集上下文,並強制執行開發者的 Kubernetes 與 Azure RBAC 權限。 預設情況下,本地 AKS MCP 伺服器支援 STDIO 與 SSE 傳輸模式。
先決條件
在安裝 AKS MCP 伺服器前,先設定 Azure CLI 並進行驗證:
az login
最簡單的入門方式是透過 適用於 VS Code 的 Azure Kubernetes 服務擴充功能 來使用 AKS-MCP。 AKS 擴充功能自動處理二進位下載、更新和設定,確保你永遠擁有最新版本且設定最佳。
步驟 1:安裝 AKS 擴充功能
- 打開 VS Code,然後進入擴充功能(
Ctrl+Shift+XWindows/Linux 或Cmd+Shift+XmacOS 上)。 - 搜尋 Azure Kubernetes Service。
- 安裝官方 的 Microsoft AKS 擴充功能。
步驟二:啟動 AKS-MCP 伺服器
- 打開 指令面板 (
Ctrl+Shift+PWindows/Linux 或Cmd+Shift+PmacOS)。 - 搜尋並執行: AKS:設定 AKS MCP 伺服器。
成功安裝後,伺服器會顯示在 MCP:List 伺服器 中(透過指令面板)。 接著,你可以啟動 MCP 伺服器或查看其狀態。
步驟 3:開始使用 AKS-MCP
啟動後,MCP 伺服器會出現在 Copilot 聊天:配置工具 的下拉選單中,準備根據您的 AKS 環境增強上下文提示。 預設情況下,所有 AKS-MCP 伺服器工具都是啟用的。 你可以查看可用工具清單,並關閉所有不需要的工具。
試試像 「列出我所有的 AKS 叢集」 這樣的提示,開始使用 AKS-MCP 伺服器上的工具。
小提示
WSL 設定:如果你在 Windows 上使用 VS Code 搭配 WSL,請用 "command": "wsl" 來呼叫 WSL 二進位檔。 如果 VS Code 在 WSL(Remote-WSL中執行),請直接呼叫二進位檔或改用 bash 包裝器。
遠端 MCP 伺服器
在遠端模式下,MCP 伺服器會以 AKS 叢集內的工作負載形式運行,或是你選擇的任何運算方式。 此模式最適合使用共享工具、使用者權限一致,以及使用 Kubernetes ServiceAccount 與 Workload Identity 進行完整存取控制的生產環境。 遠端 AKS MCP 伺服器使用 HTTP 協定促進你的 AI 助理與 AKS 叢集之間的互動。
先決條件
- AKS 叢集使用 Kubernetes 1.19+
- Helm 3.8+
- Azure CLI 安裝並認證 (
az login)
使用舵手圖安裝
複製儲存庫並安裝 AKS-MCP Helm 圖表:
git clone https://github.com/Azure/aks-mcp.git
cd aks-mcp/chart
helm install aks-mcp . --namespace aks-mcp --create-namespace
完整的設定參數清單,請參閱 Helm 圖表文件。
設定驗證
根據您的環境與安全需求,選擇一種認證方式:
Workload Identity 透過將 Kubernetes ServiceAccount 與 Azure 管理身份綁定,提供無密碼認證。
1. 在您的 AKS 叢集啟用 OIDC
az aks update \
--resource-group <your-resource-group> \
--name <your-aks-cluster> \
--enable-oidc-issuer \
--enable-workload-identity
2. 建立管理身份並指派 RBAC 權限
# Create identity
az identity create --resource-group <your-resource-group> --name aks-mcp-identity --location <your-location>
# Get IDs
IDENTITY_CLIENT_ID=$(az identity show --resource-group <your-resource-group> --name aks-mcp-identity --query "clientId" -o tsv)
IDENTITY_PRINCIPAL_ID=$(az identity show --resource-group <your-resource-group> --name aks-mcp-identity --query "principalId" -o tsv)
# Assign Reader role (use Contributor for readwrite access)
az role assignment create --role "Reader" --assignee-object-id $IDENTITY_PRINCIPAL_ID --assignee-principal-type ServicePrincipal --scope "/subscriptions/<subscription-id>"
3. 建立聯邦身份憑證
AKS_OIDC_ISSUER=$(az aks show --resource-group <your-resource-group> --name <your-aks-cluster> --query "oidcIssuerProfile.issuerUrl" -o tsv)
az identity federated-credential create \
--name "aks-mcp-federated-credential" \
--identity-name aks-mcp-identity \
--resource-group <your-resource-group> \
--issuer $AKS_OIDC_ISSUER \
--subject "system:serviceaccount:aks-mcp:aks-mcp" \
--audience api://AzureADTokenExchange
這很重要
安裝 Helm 圖表 前 先建立聯邦憑證。
4. 在安裝過程中啟用 Workload Identity
helm install aks-mcp . \
--namespace aks-mcp \
--create-namespace \
--set workloadIdentity.enabled=true \
--set azure.clientId=$IDENTITY_CLIENT_ID \
--set azure.subscriptionId=<your-subscription-id>
啟用 Ingress 與 Azure App Routing
使用 Azure App 路由外部公開 MCP 伺服器:
# Enable App Routing on your cluster
az aks approuting enable --resource-group <your-resource-group> --name <your-cluster-name>
# Install with Ingress enabled
helm install aks-mcp . \
--namespace aks-mcp \
--create-namespace \
--set ingress.enabled=true \
--set ingress.hosts[0].host=aks-mcp.example.com \
--set ingress.hosts[0].paths[0].path=/ \
--set ingress.hosts[0].paths[0].pathType=Prefix \
--set azure.existingSecret=azure-credentials
連接你的 MCP 客戶端
部署後,將您的 AI 助理連接到遠端 MCP 伺服器:
# Port forward for local testing
kubectl port-forward svc/aks-mcp 8000:8000 -n aks-mcp
設定你的 MCP 用戶端以連接:
{
"mcpServers": {
"aks-mcp": {
"url": "http://localhost:8000",
"transport": "streamable-http"
}
}
}
若要在叢集內存取,請使用: http://aks-mcp.aks-mcp.svc.cluster.local:8000
Helm 組態參考
| 參數 | Description | 預設 |
|---|---|---|
workloadIdentity.enabled |
啟用Azure工作負載身份識別 | false |
azure.clientId |
Azure Client ID | "" |
azure.tenantId |
Azure 租用戶識別碼 | "" |
azure.clientSecret |
Azure 用戶端密鑰 | "" |
azure.subscriptionId |
Azure 訂閱識別碼 | "" |
azure.existingSecret |
使用現有的 Kubernetes 機密 | "" |
app.accessLevel |
存取層級: readonly, readwrite, admin |
readonly |
app.transport |
運輸: stdio, sse, streamable-http |
streamable-http |
oauth.enabled |
啟用 OAuth 認證 | false |
ingress.enabled |
啟用 Ingress | false |
卸載 AKS MCP 伺服器
卸載 AKS MCP 伺服器的過程取決於部署模式及目前執行的地點。
VS Code 搭配 AKS 擴充功能
- 打開 指令面板 (
Ctrl+Shift+PWindows/Linux 或Cmd+Shift+PmacOS)。 - 運行 MCP:列表伺服器。
- 從列表中選擇 AKS MCP 。
- 選擇 停止伺服器 以停止正在運行的伺服器。
- 要移除該設定,請選擇 刪除伺服器設定。
或者,手動移除伺服器設定:
- 打開你的
.vscode/mcp.json檔案或 VS Code 使用者設定。 - 刪除
servers或github.copilot.chat.mcp.servers物件中的aks-mcp-server條目。 - 從系統中刪除 AKS-MCP 二進位檔(地點會依安裝方式而異)。
Docker
如果使用 Docker MCP 工具包:
- 開啟 Docker 桌面。
- 在左側邊欄選擇 MCP 工具包 。
- 找到 AKS-MCP 伺服器並停用它。
若使用容器化配置,請停止並移除容器:
docker stop <container-id>
docker rm <container-id>
其他 MCP 用戶端
從你的 MCP 用戶端設定檔(例如 Claude Desktop 的aks)中移除 aks-mcp or claude_desktop_config.json 這個項目。
常見問題與疑難排解
本節概述常見的設定與執行時問題、症狀及解決方法。
AKS MCP 伺服器無法存取叢集
徵兆:
- 工具返回授權錯誤
- 目前沒有顯示任何資源
可能的原因:
- 使用者或 MCP 帳戶沒有足夠的權限
- ServiceAccount 綁定錯誤
- 錯誤設定 kubeconfig context(本地模式)
解決方案:
- 本地模式:檢查你是否擁有足夠的權限來存取叢集。 確認你所在的群組和訂閱環境是正確的。
- 遠端模式:驗證 MCP 伺服器所使用 ServiceAccount 的 ClusterRole 繫結
Azure API 呼叫失敗
徵兆:
- call_az 工具會回傳驗證或授權錯誤
可能的原因:
- 叢集尚未啟用工作負載身份識別
- ServiceAccount 未被聯合
- 缺少 Azure RBAC 角色指派
解決方案:
- 檢查你的叢集是否啟用了 Workload Identity
- 驗證聯邦身份設定
- 將適當的 Azure 角色指派給受控識別
後續步驟
了解更多為 AKS 原生打造的智慧功能:
- 關於 AKS 的代理性命令列介面
- 安裝並使用 AKS 的 Agentic 指令列介面 (CLI)