Kubernetes MCP サーバー
標準化されたインターフェースを通じて Kubernetes クラスターと対話するためのツールを提供する Kubernetes Model Context Protocol (MCP) サーバー。
特徴
APIリソース検出:Kubernetesクラスターで利用可能なすべてのAPIリソースを取得します
リソース一覧: オプションの名前空間とラベルフィルタリングを使用して、あらゆるタイプのリソースを一覧表示します。
リソースの詳細: 特定の Kubernetes リソースに関する詳細情報を取得します
リソースの説明:Kubernetes リソースの包括的な説明を取得します
ポッドログ: 特定のポッドからログを取得する
ノードメトリック: 特定のノードのリソース使用率メトリックを取得します
ポッドメトリクス: 特定のポッドのCPUとメモリのメトリクスを取得します
イベント一覧: 名前空間内または特定のリソースのイベントを一覧表示します。
リソースの作成: マニフェストから新しい Kubernetes リソースを作成します。
標準化されたインターフェース:MCPプロトコルを使用してツールの相互作用を一貫させます
柔軟な構成: さまざまなKubernetesコンテキストとリソーススコープをサポート
Related MCP server: MCP Server
前提条件
Go 1.20以降
Kubernetes クラスターへのアクセス
適切なクラスターアクセスが設定された
kubectl
インストール
リポジトリをクローンします。
依存関係をインストールします:
サーバーを構築します。
使用法
サーバーの起動
サーバーを実行します。
サーバーが起動し、stdin/stdout で MCP プロトコル メッセージをリッスンします。
利用可能なツール
1. getAPIResources
Kubernetes クラスター内で利用可能なすべての API リソースを取得します。
パラメータ:
includeNamespaceScoped(boolean): 名前空間スコープのリソースを含めるかどうか (デフォルトは true)includeClusterScoped(ブール値): クラスタースコープのリソースを含めるかどうか (デフォルトは true)
例:
2. listResources
特定のリソース タイプのインスタンスをすべて一覧表示します。
パラメータ:
Kind(文字列、必須): リストするリソースの種類(例:「Pod」、「Deployment」)namespace(文字列): リソースを一覧表示する名前空間 (省略した場合は、名前空間付きリソースのすべての名前空間を一覧表示します)labelSelector(文字列): ラベルセレクターでリソースをフィルタリングする
例:
3. getResource
特定のリソースに関する詳細情報を取得します。
パラメータ:
kind(文字列、必須): 取得するリソースの種類 (例: "Pod"、"Deployment")name(文字列、必須): 取得するリソースの名前namespace(文字列): リソースの名前空間 (名前空間付きリソースの場合)
例:
4. describeResource
kubectl describeと同様に、指定された種類と名前に基づいて Kubernetes クラスター内のリソースについて説明します。
パラメータ:
Kind(文字列、必須): 記述するリソースの種類(例:「ポッド」、「デプロイメント」)name(文字列、必須): 記述するリソースの名前namespace(文字列): リソースの名前空間 (名前空間付きリソースの場合)
例:
5. getPodsLogs
Kubernetes クラスター内の特定のポッドのログを取得します。
パラメータ:
Name(文字列、必須): ログを取得するポッドの名前。namespace(文字列): ポッドの名前空間 (名前空間リソースの場合)。
例:
6. getNodeMetrics
Kubernetes クラスター内の特定のノードのリソース使用状況メトリックを取得します。
パラメータ:
Name(文字列、必須): メトリックを取得するノードの名前。
例:
7. getPodMetrics
Kubernetes クラスター内の特定のポッドの CPU およびメモリのメトリックを取得します。
パラメータ:
namespace(文字列、必須): ポッドの名前空間。podName(文字列、必須): ポッドの名前。
例:
8. getEvents
Kubernetes クラスター内の特定の名前空間またはリソースのイベントを取得します。
パラメータ:
namespace(文字列): イベントを取得する名前空間。省略した場合、すべての名前空間のイベントが考慮されます(RBACで許可されている場合)。resourceName(文字列): イベントをフィルタリングする特定のリソースの名前 (例: Pod 名)。resourceKind(文字列):resourceNameが指定されている場合の特定のリソースの種類 (例: "Pod")。
例 (名前空間イベント):
例 (リソース イベント):
9. createorUpdateResource
YAML または JSON マニフェストから Kubernetes クラスターに新しいリソースを作成します。
パラメータ:
manifest(文字列、必須): 作成するリソースの YAML または JSON マニフェスト。namespace(文字列、オプション): リソースを作成する名前空間。マニフェストに名前空間が含まれている場合、このパラメータは省略するか、上書きすることができます(動作はサーバーの実装によって異なる場合があります)。
例:
発達
プロジェクト構造
新しいツールの追加
新しいツールを追加するには:
handlers/handlers.goに新しいツール定義関数 (例:MyNewTool() mcp.Tool) を作成します。ツールハンドラー関数(例:
MyNewHandler(client *k8s.Client) func(...))をhandlers/handlers.goに実装します。s.AddTool()を使用して、main.goにツールとそのハンドラーを登録します。
貢献
貢献を歓迎します!このプロジェクトへの貢献方法の詳細については、 CONTRIBUTING.mdをご覧ください。
ライセンス
このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細についてはLICENSEファイルを参照してください。