mcpField
K
Kubernetes MCP Server

Kubernetes MCP Server

ローカル
github.com/basebanditクラウド・インフラ2020 週間前に更新

Kubernetes MCP Server について

Kai は、Claude Desktop、Cursor、Continue などの MCP 対応クライアントから Kubernetes クラスターを管理するための MCP サーバーです。クラスター操作を MCP ツールとして公開し、LLM クライアントが自然言語でワークロード、ネットワーク、設定、ストレージ、RBAC を扱えるようにします。

主な機能

  1. 01Pod、Deployment、Job、CronJob の管理
  2. 02Service と Ingress の管理
  3. 03ノードの cordon、uncordon、drain 操作
  4. 04ポートフォワーディングセッションの管理
  5. 05CRD を含む YAML / JSON マニフェストの適用と削除
  6. 06カスタムリソースと API リソースの検出

活用シーン

  1. 01自然言語による Pod ログの確認やクラスターイベントの一覧表示
  2. 02チャットセッションでの Deployment、CronJob、Ingress の作成
  3. 03メンテナンス前のノードの cordon と drain

MCP 対応

Kai は Kubernetes 操作を MCP ツールとして Claude Desktop、Cursor、Continue などのクライアントに提供する MCP サーバーです。stdio と streamable HTTP のトランスポートに対応しています。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"kai": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"pull"
]
}
}
}
起動コマンドdocker run -i --rm pull

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocipull

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Kai ロゴ

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 の下でライセンスされています。


Kubernetes MCP サーバー

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

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