モデル コンテキスト プロトコル (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 エージェントは次のようなタスクを実行できます。

  • トラブルシューティングと診断
  • クラスターの正常性を分析する
  • 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 構成ファイルに アクセス レベル パラメーターを追加します。

  1. mcp.json ファイルに移動するか、MCP: List Servers -> AKS-MCP ->コマンド パレットに構成の詳細を表示する (VS Code の場合、Windows/Linux の場合はCtrl+Shift+P、macOS ではCmd+Shift+P) に移動します。
  2. 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 podsdescribe 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 (必須): 実行する操作 (listrun、または 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 拡張機能をインストールする

  1. VS Code を開き、[拡張機能] に移動します (Windows/Linux のCtrl+Shift+X または macOS の Cmd+Shift+X )。
  2. Azure Kubernetes Service を検索します。
  3. 公式の Microsoft AKS 拡張機能をインストールします。

手順 2: AKS-MCP サーバーを起動する

  1. コマンド パレットを開きます (Windows/Linux ではCtrl+Shift+P、macOS ではCmd+Shift+P)。
  2. 検索と実行: 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 アクセス レベル: readonlyreadwriteadmin readonly
app.transport トランスポート: stdiossestreamable-http streamable-http
oauth.enabled OAuth 認証を有効にする false
ingress.enabled イングレスを有効にする false

AKS MCP サーバーをアンインストールする

AKS MCP サーバーをアンインストールするプロセスは、デプロイ モードと現在実行されている場所によって異なります。

AKS 拡張機能を使用した VS Code

  1. コマンド パレットを開きます (Windows/Linux ではCtrl+Shift+P、macOS ではCmd+Shift+P)。
  2. MCP を実行する: サーバーを一覧表示します
  3. 一覧から AKS MCP を選択します。
  4. [ サーバーの停止] を選択して、実行中のサーバーを停止します。
  5. 構成を削除するには、[ サーバー構成の削除] を選択します。

または、サーバー構成を手動で削除します。

  1. .vscode/mcp.json ファイルまたは VS Code ユーザー設定を開きます。
  2. aks-mcp-serverまたはservers オブジェクトからgithub.copilot.chat.mcp.serversエントリを削除します。
  3. AKS-MCP バイナリをシステムから削除します (場所はインストール方法によって異なります)。

Docker

Docker MCP Toolkit を使用している場合:

  1. Docker Desktop を開きます。
  2. 左側のサイドバーで MCP Toolkit を選択します。
  3. 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 をインストールして使用する