Kubernetes MCP サーバー
✨ 機能| 🚀 はじめに| 🎥 デモ| ⚙️ 設定| 🛠️ ツール| 🧑💻 開発
https://github.com/user-attachments/assets/be2b67b3-fc1c-4d11-ae46-93deba8ed98e
✨ 特徴
KubernetesとOpenShiftをサポートする強力かつ柔軟な Kubernetes Model Context Protocol (MCP)サーバー実装。
✅ 構成:
Kubernetes 構成の変更を自動的に検出し、MCP サーバーを更新します。
現在のKubernetes またはクラスター内の構成を表示および管理します。
✅ 汎用 Kubernetes リソース:任意の Kubernetes または OpenShift リソースに対して操作を実行します。
任意の CRUD 操作 (作成または更新、取得、一覧、削除)。
✅ ポッド: ポッド固有の操作を実行します。
すべての名前空間または特定の名前空間内のポッドを一覧表示します。
指定された名前空間から名前でポッドを取得します。
指定された名前空間から名前でポッドを削除します。
指定された名前空間から名前別にポッドのログを表示します。
ポッドにexe を実行してコマンドを実行します。
ポッド内でコンテナ イメージを実行し、オプションで公開します。
✅ 名前空間: Kubernetes 名前空間を一覧表示します。
✅ イベント: すべての名前空間または特定の名前空間の Kubernetes イベントを表示します。
✅ プロジェクト: OpenShift プロジェクトを一覧表示します。
☸️ ヘルム:
現在の名前空間または指定された名前空間に Helm チャートをインストールします。
すべての名前空間または特定の名前空間の Helm リリースを一覧表示します。
現在の名前空間または指定された名前空間内の Helm リリースをアンインストールします。
他のKubernetes MCPサーバー実装とは異なり、これはkubectlやhelmコマンドラインツールの単なるラッパーではありません。Kubernetes APIサーバーと直接やり取りするGoベースのネイティブ実装です。
システムに外部依存関係やツールをインストールする必要はありません。ネイティブバイナリを使用する場合は、Node.jsやPythonをシステムにインストールする必要はありません。
✅ 軽量: サーバーは、Linux、macOS、Windows 用の単一のネイティブバイナリとして配布されます。
✅ 高パフォーマンス / 低レイテンシ: 外部コマンドの呼び出しと待機のオーバーヘッドなしで、Kubernetes API サーバーと直接対話します。
✅ クロスプラットフォーム: Linux、macOS、Windows のネイティブバイナリとして利用できるほか、npm パッケージ、Python パッケージ、コンテナー/Docker イメージとしても利用できます。
✅ 構成可能: サーバーの動作を構成するためのコマンドライン引数をサポートします。
✅ 十分にテスト済み: サーバーには、さまざまな Kubernetes 環境にわたって信頼性と正確性を確保するための広範なテスト スイートがあります。
🚀 はじめに
要件
Kubernetes クラスターへのアクセス。
クロードデスクトップ
npxの使用
npm がインストールされている場合は、これが Claude Desktop でkubernetes-mcp-serverを使い始める最も早い方法です。
claude_desktop_config.jsonを開き、mcp サーバーをmcpServersのリストに追加します。
VS Code / VS Code インサイダー
次のリンクをクリックして、VS Code Insiders に Kubernetes MCP サーバー拡張機能をインストールします。
または、次のコマンドを実行して拡張機能を手動でインストールすることもできます。
グースCLI
Goose CLI は、人工知能 (AI) エージェントを導入するための最も簡単 (かつ安価) な方法です。
npmの使用
npm がインストールされている場合は、これがkubernetes-mcp-serverを使い始める最も早い方法です。
goose config.yamlを開き、mcp サーバーをmcpServersのリストに追加します。
🎥 デモ
OpenShift デプロイメントの診断と自動修正
Claude Desktop が Kubernetes MCP サーバーを活用して、ユーザーの支援なしに OpenShift のデプロイメントを自動的に診断および修正する方法を紹介するデモです。
https://github.com/user-attachments/assets/a576176d-a142-4c19-b9aa-a83dc4b8d941
Vibe シンプルなゲームをコーディングして OpenShift にデプロイする
このデモでは、VS Code を使用してシンプルなゲームをVibe Codingするプロセスと、 Podman MCP サーバーと Kubernetes MCP サーバーを活用してそれを OpenShift にデプロイする方法について説明します。
VS Code で Kubernetes MCP サーバーを使用して GitHub Copilot を強化 - ワンクリック セットアップ!
このデモでは、リンクをクリックするだけで VS コードで Kubernetes MCP サーバーをセットアップする方法を紹介します。
⚙️ 構成
Kubernetes MCP サーバーは、コマンド ライン (CLI) 引数を使用して構成できます。
CLI 実行ファイルは、 npx 、 uvxを使用するか、最新リリースのバイナリをダウンロードすることで実行できます。
設定オプション
オプション | 説明 |
| MCP サーバーを Server-Sent Event (SSE) モードで起動し、指定されたポートでリッスンします。 |
| ログレベル( 値)を設定します。kubectl と同様です。 |
| Kubernetes 構成ファイルへのパス。指定されていない場合は、構成(クラスター内、デフォルトの場所など)の解決を試みます。 |
| 設定すると、MCPサーバーは読み取り専用モードで実行されます。つまり、Kubernetesクラスターへの書き込み操作(作成、更新、削除)は許可されません。これは、変更を加えずにクラスターのデバッグや検査を行う際に便利です。 |
| 設定すると、MCPサーバーはKubernetesクラスター上のすべての破壊的な操作(削除、更新など)を無効にします。これは、誤って変更を加えてしまうことなくクラスターのデバッグや検査を行うのに役立ちます。このオプションは
が使用されている場合は無効です。 |
🛠️ ツール
configuration_view
現在の Kubernetes 構成コンテンツを kubeconfig YAML として取得する
パラメータ:
minified(boolean、オプション、デフォルト:true)設定の縮小版を返す
true場合、現在のコンテキストと関連する構成部分のみを保持しますfalseの場合、すべてのコンテキスト、クラスタ、認証情報、およびユーザーを返します。
events_list
すべての名前空間から現在のクラスター内のすべての Kubernetes イベントを一覧表示します
パラメータ:
namespace(string、オプション)イベントを取得する名前空間。指定しない場合は、すべての名前空間のイベントがリストされます。
helm_install
指定された名前とチャートを使用して、現在の名前空間または指定された名前空間に Helm チャートをインストールします。
パラメータ:
chart(string、必須)インストールするHelmチャートの名前
ローカルパスまたはリモートURLを指定できます
例:
./my-chart.tgzまたはhttps://example.com/my-chart.tgz
values(object、オプション)Helmチャートに渡す値
例:
{"key": "value"}
name(string、オプション)Helmリリースの名前
指定されていない場合はランダムな名前
namespace(string、オプション)Helmチャートをインストールする名前空間
指定されていない場合は、設定された名前空間を使用します
helm_list
現在または指定された名前空間(または指定された場合はすべての名前空間)のすべての Helm リリースを一覧表示します。
パラメータ:
namespace(string、オプション)Helmリリースをリストするための名前空間
指定されていない場合は、設定された名前空間を使用します
all_namespaces(boolean、 オプション )trueの場合、すべての名前空間からの Helm リリースが一覧表示されます。falseの場合、指定された名前空間からの Helm リリースを一覧表示します。
helm_uninstall
現在の名前空間または指定された名前空間内の指定された名前の Helm リリースをアンインストールします
パラメータ:
name(string、必須)アンインストールする Helm リリースの名前
namespace(string、オプション)Helmリリースをアンインストールする名前空間
指定されていない場合は、設定された名前空間を使用します
namespaces_list
現在のクラスター内のすべての Kubernetes 名前空間を一覧表示する
**パラメータ:**なし
pods_delete
現在の名前空間または指定された名前空間内の指定された名前の Kubernetes Pod を削除します。
パラメータ:
name(string、必須)削除するポッドの名前
namespace(string、必須)Podを削除する名前空間
pods_exec
指定された名前とコマンドを使用して、現在または指定された名前空間の Kubernetes Pod でコマンドを実行します。
パラメータ:
command(string[]、必須)Podコンテナで実行するコマンド
最初の項目はコマンド、残りは引数です
例:
["ls", "-l", "/tmp"]
name(文字列、必須)ポッドの名前
namespace(文字列、必須)ポッドの名前空間
container(string、オプション)ログを取得するポッドコンテナの名前
pods_get
現在の名前空間または指定された名前空間で、指定された名前の Kubernetes Pod を取得します。
パラメータ:
name(string、必須)ポッドの名前
namespace(string、必須)Podを取得する名前空間
pods_list
すべての名前空間から現在のクラスター内のすべての Kubernetes ポッドを一覧表示します
パラメータ:
labelSelector(string、オプション)Kubernetesラベルセレクター(例:'app=myapp,env=prod' または 'app in (myapp,yourapp)')。このオプションを使用して、ラベルでポッドをフィルタリングします。
pods_list_in_namespace
現在のクラスター内の指定された名前空間内のすべての Kubernetes ポッドを一覧表示します。
パラメータ:
namespace(string、必須)ポッドを一覧表示する名前空間
labelSelector(string、オプション)Kubernetesラベルセレクター(例:'app=myapp,env=prod' または 'app in (myapp,yourapp)')。このオプションを使用して、ラベルでポッドをフィルタリングします。
pods_log
現在の名前空間または指定された名前空間内の Kubernetes Pod のログを取得します。
パラメータ:
name(string、必須)ログを取得するポッドの名前
namespace(string、必須)Podログを取得する名前空間
container(string、オプション)ログを取得するポッドコンテナの名前
pods_run
指定されたコンテナ イメージとオプションの名前を使用して、現在の名前空間または指定された名前空間で Kubernetes Pod を実行します。
パラメータ:
image(string、必須)ポッドで実行するコンテナイメージ
namespace(string、必須)Podを実行する名前空間
name(string、オプション)ポッドの名前(指定されていない場合はランダムな名前)
port(number、オプション)Podコンテナから公開するTCP/IPポート
提供されていない場合はポートは公開されません
projects_list
現在のクラスター内のすべての OpenShift プロジェクトを一覧表示します
resources_create_or_update
リソースのYAMLまたはJSON表現を指定して、現在のクラスター内のKubernetesリソースを作成または更新します。
パラメータ:
resource(string、必須)Kubernetes リソースの表現を含む JSON または YAML
apiVersion、kind、metadata、specなどのトップレベルフィールドを含める必要があります
一般的な apiVersion と kind には次のものがあります:
v1 ポッド
v1 サービス
v1ノード
apps/v1 デプロイメント
networking.k8s.io/v1 イングレス
resources_delete
現在のクラスター内の Kubernetes リソースを削除する
パラメータ:
apiVersion(string、必須)リソースの apiVersion (例:
v1、apps/v1、networking.k8s.io/v1)
kind(string、必須)リソースの種類 (例:
Pod、Service、Deployment、Ingress)
name(string、必須)リソースの名前
namespace(string、オプション)名前空間リソースを削除する名前空間
クラスタスコープのリソースでは無視されます
指定されていない場合は設定された名前空間を使用します
resources_get
現在のクラスター内のKubernetesリソースを取得する
パラメータ:
apiVersion(string、必須)リソースの apiVersion (例:
v1、apps/v1、networking.k8s.io/v1)
kind(string、必須)リソースの種類 (例:
Pod、Service、Deployment、Ingress)
name(string、必須)リソースの名前
namespace(string、オプション)名前空間リソースを取得する名前空間
クラスタスコープのリソースでは無視されます
指定されていない場合は設定された名前空間を使用します
resources_list
現在のクラスター内の Kubernetes リソースとオブジェクトを一覧表示する
パラメータ:
apiVersion(string、必須)リソースの apiVersion (例:
v1、apps/v1、networking.k8s.io/v1)
kind(string、必須)リソースの種類 (例:
Pod、Service、Deployment、Ingress)
namespace(string、オプション)名前空間リソースを取得する名前空間
クラスタスコープのリソースでは無視されます
指定されていない場合は、すべての名前空間のリソースを一覧表示します
labelSelector(string、オプション)Kubernetes ラベルセレクター(例:'app=myapp,env=prod' または 'app in (myapp,yourapp)')。このオプションを使用して、ラベルでポッドをフィルタリングします。
🧑💻 開発
mcp-inspectorで実行する
プロジェクトをコンパイルし、 mcp-inspectorを使用して Kubernetes MCP サーバーを実行し、MCP サーバーを検査します。
Related MCP Servers
- -security-license-qualityProvides MCP multi-cluster Kubernetes management and operations, featuring a management interface, logging, and nearly 50 built-in tools covering common DevOps and development scenarios. Supports both standard and CRD resources.Last updated -695MIT License
- -security-license-qualityProvides MCP multi-cluster Kubernetes management and operations. It can be integrated as an SDK into your own project and includes nearly 50 built-in tools covering common DevOps and development scenarios. Supports both standard and CRD resources.Last updated -131MIT License
- GoMIT License
- -security-license-qualityAn auto-generated MCP server that enables interaction with Google Kubernetes Engine Hub API for multi-cluster management through natural language commands.Last updated -