Kubernetes MCP Server について
Kai は、Claude Desktop、Cursor、Continue などの MCP 対応クライアントから Kubernetes クラスターを管理するための MCP サーバーです。クラスター操作を MCP ツールとして公開し、LLM クライアントが自然言語でワークロード、ネットワーク、設定、ストレージ、RBAC を扱えるようにします。
主な機能
- 01Pod、Deployment、Job、CronJob の管理
- 02Service と Ingress の管理
- 03ノードの cordon、uncordon、drain 操作
- 04ポートフォワーディングセッションの管理
- 05CRD を含む YAML / JSON マニフェストの適用と削除
- 06カスタムリソースと API リソースの検出
活用シーン
- 01自然言語による Pod ログの確認やクラスターイベントの一覧表示
- 02チャットセッションでの Deployment、CronJob、Ingress の作成
- 03メンテナンス前のノードの cordon と drain
MCP 対応
Kai は Kubernetes 操作を MCP ツールとして Claude Desktop、Cursor、Continue などのクライアントに提供する MCP サーバーです。stdio と streamable HTTP のトランスポートに対応しています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Kai - Kubernetes MCP サーバー
Claude Desktop、Cursor、Continue などの MCP 互換クライアントから Kubernetes クラスターを管理するための Model Context Protocol(MCP)サーバーです。
概要
Kai は Kubernetes の操作を MCP ツールとして公開し、LLM クライアントが自然言語を通じてクラスターを管理できるようにします。ワークロード、ネットワーク、設定、ストレージ、RBAC、カスタムリソース、未加工のマニフェストを扱えます。
機能
コアワークロード
- Pod - 作成、一覧表示、取得、削除、ログのストリーミング
- Deployment - 作成、一覧表示、詳細表示、更新
- Job - バッチワークロード管理(作成、取得、一覧表示、削除)
- CronJob - スケジュールされたバッチワークロード(作成、取得、一覧表示、削除)
ネットワーク
- Service - 作成、取得、一覧表示、削除
- Ingress - HTTP/HTTPS ルーティング、TLS 設定(作成、取得、一覧表示、更新、削除)
設定
- ConfigMap - 設定管理(作成、取得、一覧表示、更新、削除)
- Secret - シークレット管理(作成、取得、一覧表示、更新、削除)
- Namespace - 名前空間管理(作成、取得、一覧表示、削除)
クラスター操作
- コンテキスト管理 - コンテキストの切り替え、一覧表示、名前変更、削除
- Node - ノードの監視、スケジューリング禁止、ドレイン(一覧表示、取得、スケジューリング禁止の設定・解除、ドレイン)
- クラスターの健全性 - クラスターの状態とリソースメトリクス(クラスターの健全性、ノード/Pod のメトリクス)
ストレージ
- Persistent Volume - PV 管理(一覧表示、取得、削除)および PVC 管理(作成、一覧表示、取得、削除)
- Storage Class - ストレージクラスの操作(一覧表示、取得)
セキュリティ
- RBAC - Role、RoleBinding、ClusterRole、ClusterRoleBinding、ServiceAccount(一覧表示、取得)
ユーティリティ
- ポートフォワーディング - Pod と Service へのポート転送(セッションの開始、停止、一覧表示)
高度な機能
- マニフェストの適用/削除 - 未加工の YAML/JSON を適用または削除します。複数ドキュメントや CRD を含むすべての kind に対応します(apply_yaml、delete_yaml)
- カスタムリソース - CRD とカスタムリソースの操作(CRD の一覧表示/取得、カスタムリソースの一覧表示/取得/削除)
- イベント - イベントの一覧表示とフィルタリング(名前空間、タイプ、関連オブジェクトによる)
- API ディスカバリー - API リソースの探索(list_api_resources)
必要条件
サーバーはデフォルトで現在の kubectl コンテキストに接続します。kubectl 用に設定された Kubernetes クラスター(例:minikube、Rancher Desktop、kind、EKS、GKE、AKS)にアクセスできることを確認してください。
インストール
go install github.com/basebandit/kai/cmd/kai@latest
コンテナーイメージ
マルチアーキテクチャイメージ(linux/amd64、linux/arm64)が Docker Hub で公開されています。
docker pull cyclon/kai:v1.0.0
docker run --rm cyclon/kai:v1.0.0 -version
CLI オプション
kai [options]
Options:
-kubeconfig string Path to kubeconfig file (default "~/.kube/config")
-context string Name for the loaded context (default "local")
-in-cluster Use in-cluster config (when running inside a pod)
-transport string stdio (default), streamable-http, or sse-legacy
-sse-addr string HTTP listen address for streamable-http/sse-legacy (default ":8080")
-tls-cert string Path to TLS certificate (enables HTTPS)
-tls-key string Path to TLS private key (enables HTTPS)
-request-timeout duration Timeout for Kubernetes API requests (default 30s)
-metrics Expose Prometheus metrics at /metrics (default true)
-log-format string json (default) or text
-log-level string debug, info, warn, error (default "info")
-version Show version information
ログはデフォルトで構造化 JSON 形式により stderr に書き込まれるため、簡単に解析できます。
{"time":"2024-01-15T10:30:00Z","level":"INFO","msg":"kubeconfig loaded","path":"/home/user/.kube/config","context":"local"}
{"time":"2024-01-15T10:30:00Z","level":"INFO","msg":"starting server","transport":"stdio"}
設定
Claude Desktop
Claude Desktop の設定を編集します。
# macOS
code ~/Library/Application\ Support/Claude/claude_desktop_config.json
# Linux
code ~/.config/Claude/claude_desktop_config.json
サーバー設定を追加します。
{
"mcpServers": {
"kubernetes": {
"command": "/path/to/kai"
}
}
}
カスタム kubeconfig を使用する場合:
{
"mcpServers": {
"kubernetes": {
"command": "/path/to/kai",
"args": ["-kubeconfig", "/path/to/custom/kubeconfig"]
}
}
}
Cursor
Cursor の MCP 設定に追加します。
{
"mcpServers": {
"kubernetes": {
"command": "/path/to/kai"
}
}
}
Continue
Continue の設定(~/.continue/config.json)に追加します。
{
"experimental": {
"modelContextProtocolServers": [
{
"transport": {
"type": "stdio",
"command": "/path/to/kai"
}
}
]
}
}
HTTP モード(Web クライアント、リモート利用)
stdio クライアント以外の場合は、ストリーミング可能な HTTP トランスポートを実行します。
kai -transport=streamable-http -sse-addr=:8080
MCP エンドポイントは http://localhost:8080/mcp です。ヘルスプローブは /healthz
と /readyz、Prometheus メトリクスは /metrics で利用できます。レガシー SSE トランスポート
(-transport=sse-legacy、エンドポイント /sse)も引き続き動作しますが、非推奨です。
カスタム Kubeconfig
デフォルトでは、Kai は ~/.kube/config を使用します。別の kubeconfig を指定できます。
kai -kubeconfig=/path/to/custom/kubeconfig -context=my-cluster
Kubernetes クラスター内での実行
Kubernetes クラスター内に Kai をデプロイする場合は、-in-cluster フラグを使用すると、Pod のサービスアカウント認証情報が自動的に使用されます。
kai -in-cluster -transport=streamable-http -sse-addr=:8080
クラスター内で Kai を実行する推奨方法は、kmcp(kagent提供)を使用することです。kmcp は MCP サーバーを MCPServer リソースとして管理します。
apiVersion: kagent.dev/v1alpha1
kind: MCPServer
metadata:
name: kai
spec:
transportType: http
httpTransport:
targetPort: 8080
path: /mcp
deployment:
image: cyclon/kai:v1.0.0
port: 8080
cmd: /kai
args: ["-in-cluster", "-transport=streamable-http", "-sse-addr=:8080"]
serviceAccountName: kai
kmcp は Deployment と Service を作成します。サービスアカウントには、Kai が管理するリソースに対する RBAC が必要です。具体的には、広範囲の get/list/watch 権限に加え、変更を伴うツールを使用する場合は create/update/delete 権限が必要です。kmcp のデプロイガイドを参照してください。
実行可能な例:deploy/kagent/kai.example.yaml(テスト専用です。cluster-admin 権限を付与するため、実際に使用する際は権限の範囲を絞ってください)。
使用例
設定が完了すると、自然言語でクラスターを操作できます。
- 「default 名前空間のすべての Pod を一覧表示して」
- 「nginx:latest イメージを使用して、レプリカ数 3 の nginx という名前の Deployment を作成して」
- 「my-app Pod のログを表示して」
- 「backend という名前の Service を削除して」
- 「5 分ごとに実行する CronJob を作成して」
- 「TLS を有効にして、my-app の Ingress を作成して」
- 「nginx Service のポート 8080:80 をポートフォワードして」
- 「このマニフェストを適用して:<YAML を貼り付け>」
コントリビューション
コントリビューションを歓迎します。詳しくは、コントリビューションガイドラインをご覧ください。
ライセンス
このプロジェクトは MIT License の下でライセンスされています。

コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。