AKS モデル コンテキスト プロトコル (MCP) サーバーを使用すると、AI アシスタントは、明確さ、安全性、制御性を備えた Azure Kubernetes Service (AKS) クラスターと対話できます。 これは、AI ツール (GitHub Copilot、Claude、その他の MCP 互換 AI アシスタントなど) と AKS の間の橋渡しとして機能し、自然言語要求を AKS 操作に変換し、AI ツールが理解できる形式で結果を返します。
AKS MCP サーバーは、Azure SDK を使用して Azure に接続し、AI アシスタントが AKS リソースとの対話に使用できる一連のツールを提供します。 これらのツールを使用すると、AI エージェントは次のようなタスクを実行できます。
- トラブルシューティングと診断
- クラスターの正常性を分析する
- AKS リソースに対して作成、読み取り、更新、削除 (CRUD) を実行する
- AKS クラスター (VNet、サブネット、ネットワーク セキュリティ グループ (NSG)、ルート テーブルなど) に関連する詳細を取得します。
- ベスト プラクティスと推奨される機能の有効化
- マルチクラスター シナリオの Azure Fleet 操作を管理する
AKS MCP サーバーは完全にオープン ソースのプロジェクトであり、サンプル テンプレートと Helm 構成は GitHub リポジトリで使用できます。
AKS MCP サーバーを使用するタイミング
AKS MCP サーバーは、AKS および Microsoft Copilot 用のエージェント CLI を含め、互換性のある任意の AI アシスタントと共に使用できます。 一般的なユース ケースは次のとおりです。
- AI アシスタントに次のような質問をする:
- "ポッドがこのクラスターで保留になっているのはなぜですか?
- "AKS クラスターのネットワーク構成は何ですか?
- "app=frontend label を使用して nginx ワークロードをクラスターにデプロイする配置を作成します。"
- AI ツールを次の機能に許可します。
- クラスターの状態と構成の読み取り
- メトリック、イベント、ログを検査する
- Kubernetes と Azure リソース間でシグナルを関連付ける
- 変更を適用し、クラスターで新機能を直接有効にする
AKS MCP サーバーを介して実行されるすべてのアクションは、Kubernetes Role-Based アクセス制御 (RBAC) と Azure RBAC によって制限されます。 既定では、AKS MCP サーバーは、クラスターと Azure リソースにアクセスするときにユーザーのアクセス許可を継承します。 AKS MCP サーバーのロールとアクセス許可をカスタマイズするには、組み込みの RBAC 制御を使用してリモート AKS MCP サーバー モードをデプロイします。
使用可能なツール
AKS MCP サーバーには、AKS クラスターと関連リソースを操作するための包括的なツール セットが用意されています。 既定では、サーバーは 統合ツール (Azure 操作用にcall_az 、Kubernetes 操作用に call_kubectl ) を使用します。これは、Kubernetes および Azure リソースと対話するためのより柔軟なインターフェイスを提供します。
AKS MCP サーバーに対して有効にできるアクセス許可には、読み取り専用 (既定)、読み取り/書き込み、管理者の 3 つのアクセス許可があります。一部のツールでは、クラスターでのポッドのデバッグや CRUD アクションのデプロイなどのアクションを実行するために、読み取り/書き込みまたは管理者のアクセス許可が必要です。 AKS-MCP サーバーの読み取り/書き込みアクセス許可または管理者アクセス許可を有効にするには、MCP 構成ファイルに アクセス レベル パラメーターを追加します。
-
mcp.json ファイルに移動するか、MCP: List Servers -> AKS-MCP ->コマンド パレットに構成の詳細を表示する (VS Code の場合、Windows/Linux の場合は
Ctrl+Shift+P、macOS ではCmd+Shift+P) に移動します。 - AKS-MCP の "args" セクションで、次のパラメーターを追加します: "--access-level"、"readwrite"、または "admin"
例えば次が挙げられます。
"args": [
"--transport",
"stdio",
"--access-level",
"readwrite"
]
これらのツールは、統合インターフェイスを介して包括的な機能を提供するように設計されています。
Azure CLI 操作 (統合ツール)
ツール: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"
}
アクセス制御:
- readonly: 読み取り操作のみが許可されます
- readwrite/admin: 読み取り操作と書き込み操作の両方が許可されます
Important
コマンドは、パイプ (|)、リダイレクト (>、 <)、コマンドの置換、セミコロン (;)などのシェル機能を使用しない単純な Azure CLI 呼び出しである必要があります。
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"
}
アクセス制御: 操作は、構成されたアクセス レベルに基づいて制限されます。
- readonly: 読み取り操作 (取得、説明、ログなど) のみが許可されます
- readwrite/admin: 変更コマンド (作成、削除、適用など) を含むすべての操作
Helm
ツール:call_helm
Kubernetes の Helm パッケージ マネージャー。
Cilium
ツール:call_cilium
eBPF ベースのネットワークとセキュリティのための Cilium CLI。
ハッブル
ツール:call_hubble
Cilium のハッブル ネットワーク可観測性。
ネットワーク リソース管理
ツール:aks_network_resources
AKS クラスターで使用される Azure ネットワーク リソース情報を取得するための統合ツール。
使用可能なリソースの種類:
-
all: すべてのネットワーク リソースに関する情報を取得します -
vnet: 仮想ネットワーク情報 -
subnet: サブネット情報 -
nsg: ネットワーク セキュリティ グループの情報 -
route_table: ルート テーブル情報 -
load_balancer: ロード バランサーの情報 -
private_endpoint: プライベート エンドポイント情報
監視と診断
ツール:aks_monitoring
AKS クラスターの Azure 監視および診断操作用の統合ツール。
使用可能な操作:
-
metrics: リソースのメトリック値を一覧表示する -
resource_health: AKS クラスターのリソース正常性イベントを取得する -
app_insights: Application Insights テレメトリ データに対して KQL クエリを実行する -
diagnostics: AKS クラスターに診断設定が構成されているかどうかを確認する -
control_plane_logs: 安全性の制約と時間範囲の検証を使用して AKS コントロール プレーン ログにクエリを実行する
コンピューティング リソース
ツール:get_aks_vmss_info
- AKS クラスター内の仮想マシン スケール セット (ノード プール) の詳細な構成を取得する
車両管理
ツール:az_fleet
マルチクラスター シナリオ向けの包括的な Azure Fleet 管理。
使用可能な操作:
- フリート操作: list、show、create、update、delete、get-credentials
- メンバー操作: リスト、表示、作成、更新、削除
- 実行操作の更新: 一覧表示、表示、作成、開始、停止、削除
- 戦略操作の更新: 一覧表示、表示、作成、削除
- ClusterResourcePlacement 操作: リスト、表示、取得、作成、削除
Azure Fleet 管理と Kubernetes ClusterResourcePlacement CRD 操作の両方をサポートします。
Diagnostic Detectors
ツール:aks_detector
AKS 診断検出操作を実行するための統合ツール。
使用可能な操作:
-
list: 使用可能なすべての AKS クラスター検出機能を一覧表示する -
run: 特定の AKS 診断検出機能を実行する -
run_by_category: 特定のカテゴリ内のすべての検出器を実行します
パラメーター:
-
operation(必須): 実行する操作 (list、run、またはrun_by_category) -
aks_resource_id(必須): AKS クラスター リソース ID -
detector_name(run操作に必要): 実行する検出器の名前 -
category(run_by_category操作に必要): 検出カテゴリ -
start_time(runおよびrun_by_category操作に必要): 開始時刻 (過去 30 日以内) (UTC ISO 形式) -
end_time(runおよびrun_by_category操作に必要): UTC ISO 形式の終了時刻 (過去 30 日以内、開始から最大 24 時間以内)
利用可能なカテゴリ:
- ベスト プラクティス
- クラスターとコントロール プレーンの可用性とパフォーマンス
- 接続の問題
- 作成、アップグレード、削除、およびスケーリング
- 非推奨
- ID とセキュリティ
- ノードの正常性
- Storage
使用例:
ツール: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
AKS クラスターの Azure Advisor の推奨事項を取得して管理します。
使用可能な操作:
-
list: フィルター オプションを使用して推奨事項を一覧表示する -
report: 推奨事項レポートを生成する - フィルター オプション: resource_group、cluster_names、カテゴリ (コスト、高可用性、パフォーマンス、セキュリティ)、重大度 (高、中、低)
リアルタイムの可観測性
ツール:inspektor_gadget_observability
eBPF を使用した Azure Kubernetes Service (AKS) クラスターのリアルタイム監視ツール。
使用可能なアクション:
-
deploy: クラスターに Inspektor ガジェットをデプロイする -
undeploy:クラスターから Inspektor ガジェットを削除する -
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 サーバーには、ローカルとリモートの 2 つのモードがあります。 このセクションでは、両方のモードのユース ケースとインストール プロセスについて説明します。
ローカル MCP サーバー
ローカル モードでは、MCP サーバーは開発者のローカル コンピューター上で実行され、開発者の既存のアクセス許可を使用して AKS に接続されます。 このモードは、クラスター側のコンポーネントを必要とせずに、AKS の専門知識とツールを使用してローカル AI エージェントをすばやく設定するのに最適です。 ローカル モードでは、現在のクラスター コンテキストを使用でき、開発者の Kubernetes と Azure RBAC のアクセス許可が適用されます。 既定では、ローカル AKS MCP サーバーは STDIO および SSE トランスポート モードをサポートします。
[前提条件]
AKS MCP サーバーをインストールする前に、 Azure CLI を 設定して認証します。
az login
AKS-MCP の使用を開始する最も簡単な方法は、 VS Code 用 Azure Kubernetes Service 拡張機能を使用することです。 AKS 拡張機能は、バイナリのダウンロード、更新、構成を自動的に処理し、常に最適な設定で最新バージョンを使用できるようにします。
手順 1: AKS 拡張機能をインストールする
- VS Code を開き、[拡張機能] に移動します (Windows/Linux の
Ctrl+Shift+Xまたは macOS のCmd+Shift+X)。 - Azure Kubernetes Service を検索します。
- 公式の Microsoft AKS 拡張機能をインストールします。
手順 2: AKS-MCP サーバーを起動する
-
コマンド パレットを開きます (Windows/Linux では
Ctrl+Shift+P、macOS ではCmd+Shift+P)。 - 検索と実行: AKS: AKS MCP サーバーのセットアップ。
インストールが成功すると、 MCP: List Servers (コマンド パレット経由) にサーバーが表示されます。 そこから、MCP サーバーを起動するか、その状態を表示できます。
手順 3: AKS-MCP の使用を開始する
起動すると、MCP サーバーが [Copilot Chat: Configure Tools ]\(ツールの構成\) ドロップダウンで MCP Server: AKS MCP の下に表示され、AKS 環境に基づいてコンテキスト プロンプトを強化できます。 既定では、すべての AKS-MCP サーバー ツールが有効になっています。 使用可能なツールの一覧を確認し、シナリオに必要のないツールを無効にすることができます。
"すべての AKS クラスターを一覧表示する" などのプロンプトを試して、AKS-MCP サーバーのツールの使用を開始します。
ヒント
WSL 構成: WSL で Windows 上の VS Code を使用している場合は、 "command": "wsl" を使用して WSL バイナリを呼び出します。 VS Code が WSL (Remote-WSL) 内で実行されている場合は、バイナリを直接呼び出すか、代わりに bash ラッパーを使用します。
リモート MCP サーバー
リモート モードでは、MCP サーバーは、AKS クラスター内または任意のコンピューティング内のワークロードとして実行されます。 このモードは、共有ツールを使用する運用環境、ユーザー間で一貫したアクセス許可、Kubernetes ServiceAccount とワークロード ID を使用したフル アクセス制御に最適です。 リモート AKS MCP サーバーは、HTTP プロトコルを使用して、AI アシスタントと AKS クラスター間の対話を容易にします。
[前提条件]
- Kubernetes 1.19 以降の AKS クラスター
- Helm 3.8 以降
- Azure CLI のインストールと認証 (
az login)
Helm チャートを使用してインストールする
リポジトリを複製し、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 チャートのドキュメントを参照してください。
認証を構成する
環境とセキュリティの要件に基づいて認証方法を選択します。
ワークロード ID は、Kubernetes ServiceAccount を Azure マネージド ID にリンクすることで、パスワードレス認証を提供します。
1. AKS クラスターで OIDC を有効にする
az aks update \
--resource-group <your-resource-group> \
--name <your-aks-cluster> \
--enable-oidc-issuer \
--enable-workload-identity
2. マネージド ID を作成し、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. フェデレーション ID 資格情報を作成する
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
Important
Helm チャートをインストールする 前に 、フェデレーション資格情報を作成します。
4. ワークロード ID を有効にしてインストールする
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>
Azure アプリ ルーティングでイングレスを有効にする
Azure App Routing を使用して 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 ワークロード ID を有効にする | false |
azure.clientId |
Azure クライアント ID | "" |
azure.tenantId |
Azure テナント ID | "" |
azure.clientSecret |
Azure クライアント シークレット | "" |
azure.subscriptionId |
Azure サブスクリプション ID | "" |
azure.existingSecret |
既存の Kubernetes シークレットを使用する | "" |
app.accessLevel |
アクセス レベル: readonly、 readwrite、 admin |
readonly |
app.transport |
トランスポート: stdio、 sse、 streamable-http |
streamable-http |
oauth.enabled |
OAuth 認証を有効にする | false |
ingress.enabled |
イングレスを有効にする | false |
AKS MCP サーバーをアンインストールする
AKS MCP サーバーをアンインストールするプロセスは、デプロイ モードと現在実行されている場所によって異なります。
AKS 拡張機能を使用した VS Code
-
コマンド パレットを開きます (Windows/Linux では
Ctrl+Shift+P、macOS ではCmd+Shift+P)。 - MCP を実行する: サーバーを一覧表示します。
- 一覧から AKS MCP を選択します。
- [ サーバーの停止] を選択して、実行中のサーバーを停止します。
- 構成を削除するには、[ サーバー構成の削除] を選択します。
または、サーバー構成を手動で削除します。
-
.vscode/mcp.jsonファイルまたは VS Code ユーザー設定を開きます。 -
aks-mcp-serverまたはserversオブジェクトからgithub.copilot.chat.mcp.serversエントリを削除します。 - AKS-MCP バイナリをシステムから削除します (場所はインストール方法によって異なります)。
Docker
Docker MCP Toolkit を使用している場合:
- Docker Desktop を開きます。
- 左側のサイドバーで MCP Toolkit を選択します。
- AKS-MCP サーバーを見つけて無効にします。
コンテナー化された構成を使用している場合は、コンテナーを停止して削除します。
docker stop <container-id>
docker rm <container-id>
その他の MCP クライアント
MCP クライアント構成ファイル (Claude Desktop のaksなど) からaks-mcpまたはclaude_desktop_config.jsonエントリを削除します。
一般的な問題とトラブルシューティング
このセクションでは、一般的なセットアップとランタイムの問題、その症状、および解決方法について説明します。
AKS MCP サーバーがクラスターにアクセスできない
症状:
- ツールから承認エラーが返される
- リソースが表示されない
考えられる原因:
- ユーザーまたは MCP ID に十分なアクセス許可がない
- ServiceAccount バインドが正しくありません
- 正しく構成されていない kubeconfig コンテキスト (ローカル モード)
解決策:
- ローカル モード: クラスターにアクセスするための十分なアクセス許可があることを確認します。 適切なクラスターとサブスクリプションのコンテキストにあることを確認します。
- リモート モード: MCP サーバーによって使用される ServiceAccount の ClusterRole バインドを確認する
Azure API 呼び出しが失敗する
症状:
- call_az ツールが認証または承認エラーを返す
考えられる原因:
- クラスターでワークロード ID が有効になっていない
- ServiceAccount がフェデレーションされていない
- 欠落している Azure RBAC の割り当て
解決策:
- クラスターでワークロード ID が有効になっていることを確認する
- フェデレーション ID の構成を確認する
- マネージド ID に適切な Azure ロールを割り当てる
次のステップ
AKS 用にネイティブに構築されたインテリジェント機能の詳細については、以下を参照してください。
- AKS のエージェンティック CLI について
- AKS 用のエージェント CLI をインストールして使用する