利用模型情境協定(MCP)伺服器,將您的 Azure Kubernetes Service(AKS)叢集連接到 AI 代理

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 設定檔中加入 存取層級 參數:

  1. 瀏覽至您的 mcp.json 檔案,或在命令選擇區 (適用於 VS Code;Windows/Linux 使用 Ctrl+Shift+P,macOS 使用 Cmd+Shift+P) 中前往 MCP:列出伺服器 -> AKS-MCP -> 顯示組態詳細資料。
  2. 在 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 myRGaz 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 podsdescribe node mynodeapply -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 (必要條件):執行(listrun、或 run_by_category)的操作
  • aks_resource_id (必備):AKS 叢集資源識別碼
  • detector_name (操作所需 run ):偵測器名稱
  • categoryrun_by_category 運作所需):檢測器類別
  • start_time (runrun_by_category 作業的必要項目):UTC ISO 格式的開始時間 (限最近 30 天內)
  • end_time (適用於 runrun_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 擴充功能

  1. 打開 VS Code,然後進入擴充功能(Ctrl+Shift+X Windows/Linux 或 Cmd+Shift+X macOS 上)。
  2. 搜尋 Azure Kubernetes Service
  3. 安裝官方 的 Microsoft AKS 擴充功能

步驟二:啟動 AKS-MCP 伺服器

  1. 打開 指令面板Ctrl+Shift+P Windows/Linux 或 Cmd+Shift+P macOS)。
  2. 搜尋並執行: 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 存取層級: readonlyreadwriteadmin readonly
app.transport 運輸: stdiossestreamable-http streamable-http
oauth.enabled 啟用 OAuth 認證 false
ingress.enabled 啟用 Ingress false

卸載 AKS MCP 伺服器

卸載 AKS MCP 伺服器的過程取決於部署模式及目前執行的地點。

VS Code 搭配 AKS 擴充功能

  1. 打開 指令面板Ctrl+Shift+P Windows/Linux 或 Cmd+Shift+P macOS)。
  2. 運行 MCP:列表伺服器
  3. 從列表中選擇 AKS MCP
  4. 選擇 停止伺服器 以停止正在運行的伺服器。
  5. 要移除該設定,請選擇 刪除伺服器設定

或者,手動移除伺服器設定:

  1. 打開你的 .vscode/mcp.json 檔案或 VS Code 使用者設定。
  2. 刪除serversgithub.copilot.chat.mcp.servers物件中的aks-mcp-server條目。
  3. 從系統中刪除 AKS-MCP 二進位檔(地點會依安裝方式而異)。

Docker

如果使用 Docker MCP 工具包:

  1. 開啟 Docker 桌面。
  2. 在左側邊欄選擇 MCP 工具包
  3. 找到 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)