MCP Server Kubernetes について
現在のkubectlコンテキストを通じてKubernetesクラスターを管理するMCPサーバーです。一般的なリソース操作やトラブルシューティング、Helmリリース管理に対応し、非破壊モードも利用できます。
主な機能
- 01Pod、Service、Deployment、Nodeの一覧表示と管理
- 02Namespace、CronJob、Serviceの作成
- 03Podやワークロードのログ、クラスターイベントの取得
- 04Helmリリースのインストール、アップグレード、削除
- 05PodまたはServiceへのポートフォワード
- 06非破壊モードでのクラスターアクセス
活用シーン
- 01クラスターのリソースとイベントの確認
- 02ログを使ったワークロードのデバッグ
- 03DeploymentとHelmリリースの管理
- 04読み取りと作成・更新に操作を制限
MCP 対応
MCPクライアントにKubernetes管理ツールを公開し、現在のkubectlコンテキストを通じて接続します。mcp-chatからも利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP サーバー Kubernetes
Kubernetes クラスターに接続して管理できる MCP サーバーです。
https://github.com/user-attachments/assets/f25f8f4e-4d04-479b-9ae0-5dac452dd2ed
Claude Desktop での使用方法
{
"mcpServers": {
"kubernetes": {
"command": "npx",
"args": ["mcp-server-kubernetes"]
}
}
}
サーバーは現在の kubectl コンテキストに自動的に接続します。以下を確認してください。
- kubectl がインストールされ、PATH に含まれていること
- コンテキストが設定された有効な kubeconfig ファイルがあること
- kubectl 用に設定された Kubernetes クラスター(minikube、Rancher Desktop、GKE など)にアクセスできること
- Helm v3 がインストールされ、PATH に含まれていること(Tiller は不要)。Helm を使用する予定がない場合は省略できます。
Claude にポッドの一覧表示やテスト用デプロイメントの作成を依頼すると、接続を確認できます。
エラーが発生した場合は、標準のターミナルを開いて kubectl get pods を実行し、認証情報の問題なくクラスターに接続できるか確認してください。
mcp-chat での使用方法
mcp-chat は、MCP サーバー用の CLI チャットクライアントです。これを使って Kubernetes サーバーとやり取りできます。
npx mcp-chat --server "npx mcp-server-kubernetes"
または、上記の既存の Claude Desktop 設定ファイルを渡すこともできます(Linux では正しい設定ファイルのパスを指定してください)。
Mac:
npx mcp-chat --config "~/Library/Application Support/Claude/claude_desktop_config.json"
Windows:
npx mcp-chat --config "%APPDATA%\Claude\claude_desktop_config.json"
機能
- Kubernetes クラスターに接続
- すべてのポッド、サービス、デプロイメント、ノードを一覧表示
- ポッドの作成、詳細表示、削除
- すべてのネームスペースを一覧表示し、ネームスペースを作成
- カスタムのポッドおよびデプロイメント設定を作成し、デプロイメントのレプリカ数を更新
- サービスを作成
- デバッグ用にポッドのログを取得(ポッド、デプロイメント、ジョブ、ラベルセレクターに対応)
- Helm v3 によるチャートのインストールに対応
- カスタム値を指定してチャートをインストール
- リリースをアンインストール
- 既存のリリースをアップグレード
- ネームスペースに対応
- バージョン指定に対応
- カスタムリポジトリに対応
- kubectl explain および kubectl api-resources に対応
- クラスターから Kubernetes イベントを取得
- ポッドまたはサービスへのポートフォワード
- cronjob の作成、一覧表示、詳細表示
- クラスターへの読み取りおよび作成・更新のみのアクセスを可能にする非破壊モード
ローカル開発
bun のインストールが完了していることを確認してください。リポジトリをクローンし、依存関係をインストールします。
git clone https://github.com/Flux159/mcp-server-kubernetes.git
cd mcp-server-kubernetes
bun install
開発ワークフロー
- 開発モードでサーバーを起動します(ファイルの変更を監視します)。
bun run dev
- 単体テストを実行します。
bun run test
- プロジェクトをビルドします。
bun run build
- Inspector を使用したローカルテスト
npx @modelcontextprotocol/inspector node dist/index.js
# Follow further instructions on terminal for Inspector link
- Claude Desktop を使用したローカルテスト
{
"mcpServers": {
"mcp-server-kubernetes": {
"command": "node",
"args": ["/path/to/your/mcp-server-kubernetes/dist/index.js"]
}
}
}
- mcp-chat を使用したローカルテスト
bun run chat
コントリビュート
詳細については、CONTRIBUTING.md ファイルを参照してください。
詳細情報
その他の高度な機能
SSE トランスポートの使用や ALLOW_ONLY_NON_DESTRUCTIVE_TOOLS による非破壊モードなど、より高度な情報については、ADVANCED_README.md を参照してください。
アーキテクチャ
このセクションでは、MCP Kubernetes サーバーの高レベルアーキテクチャについて説明します。
リクエストフロー
以下のシーケンス図は、システム内でリクエストがどのように流れるかを示しています。
sequenceDiagram
participant Client
participant Transport as StdioTransport
participant Server as MCP Server
participant Handler as Request Handler
participant K8sManager as KubernetesManager
participant K8s as Kubernetes API
Client->>Transport: Send Request via STDIO
Transport->>Server: Forward Request
alt Tools Request
Server->>Handler: Route to tools handler
Handler->>K8sManager: Execute tool operation
K8sManager->>K8s: Make API call
K8s-->>K8sManager: Return result
K8sManager-->>Handler: Process response
Handler-->>Server: Return tool result
else Resource Request
Server->>Handler: Route to resource handler
Handler->>K8sManager: Get resource data
K8sManager->>K8s: Query API
K8s-->>K8sManager: Return data
K8sManager-->>Handler: Format response
Handler-->>Server: Return resource data
end
Server-->>Transport: Send Response
Transport-->>Client: Return Final Response
新しいリリースの公開
リリースページに移動し、「Draft New Release」をクリックして、「Choose a tag」をクリックします。続いて、「v{major}.{minor}.{patch}」のセマンティックバージョン形式で新しいバージョン番号を入力し、新しいタグを作成します。その後、リリースタイトル「Release v{major}.{minor}.{patch}」と、必要に応じて説明/変更履歴を入力し、「Publish Release」をクリックします。
これにより新しいタグが作成され、cd.yml ワークフローによる新しいリリースのビルドが開始されます。成功すると、新しいリリースが npm に公開されます。ワークフローが package.json ファイルのバージョン番号を自動的に更新し、main にコミットをプッシュするため、package.json のバージョンを手動で更新する必要はありません。
予定なし
認証/kubectx へのクラスターの追加。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。