Integrations
Provides a comprehensive interface for managing Kubernetes clusters, including resource discovery, listing, detailed inspection, log retrieval, metrics collection, event tracking, and resource creation through a standardized MCP protocol.
Supports creation of Kubernetes resources from YAML manifests, enabling deployment of complex resources through the createorUpdateResource tool.
Kubernetes MCP サーバー
標準化されたインターフェースを通じて Kubernetes クラスターと対話するためのツールを提供する Kubernetes Model Context Protocol (MCP) サーバー。
特徴
- APIリソース検出:Kubernetesクラスターで利用可能なすべてのAPIリソースを取得します
- リソース一覧: オプションの名前空間とラベルフィルタリングを使用して、あらゆるタイプのリソースを一覧表示します。
- リソースの詳細: 特定の Kubernetes リソースに関する詳細情報を取得します
- リソースの説明:Kubernetes リソースの包括的な説明を取得します
- ポッドログ: 特定のポッドからログを取得する
- ノードメトリック: 特定のノードのリソース使用率メトリックを取得します
- ポッドメトリクス: 特定のポッドのCPUとメモリのメトリクスを取得します
- イベント一覧: 名前空間内または特定のリソースのイベントを一覧表示します。
- リソースの作成: マニフェストから新しい Kubernetes リソースを作成します。
- 標準化されたインターフェース:MCPプロトコルを使用してツールの相互作用を一貫させます
- 柔軟な構成: さまざまなKubernetesコンテキストとリソーススコープをサポート
前提条件
- 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ファイルを参照してください。
Related MCP Servers
- -securityAlicense-qualityThis project is intended as a both MCP server connecting to Kubernetes and a library to build more servers for any custom resources in Kubernetes.Last updated -267GoMIT License
- Python
- Python
- MIT License