mcpField
M
mcp-k8s

mcp-k8s

ローカル
silenceper.comクラウド・インフラ1525 週間前に更新

mcp-k8s について

mcp-k8s は、MCP ツールを通じて Kubernetes クラスターを操作できる MCP サーバーです。LLM を使ったリソース管理や運用、開発・テストを目的とする方を対象とし、書き込みや Helm 操作は個別に有効・無効を切り替えられます。

主な機能

  1. 01組み込みリソースと CRD の種類の照会
  2. 02リソースの取得とフィルター付きの一覧表示
  3. 03作成・更新・削除の個別の有効化設定
  4. 04Helm リリースとリポジトリの管理
  5. 05stdio、SSE、Streamable HTTP のトランスポート

活用シーン

  1. 01自然言語による Kubernetes リソースの管理
  2. 02クラスターの問題調査や設定レビューの補助
  3. 03テスト環境でのリソースの作成と後片付け

MCP 対応

mcp-k8s は MCP サーバーとして、リソースの照会・作成・更新・削除や Helm のインストール・アップグレードなどのツールを MCP クライアントに公開します。既定では stdio で動作し、HTTP トランスポートにも対応します。

設定

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

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

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

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

詳細

mcp-k8s

Go Version License Latest Release Go Report Card Go CI PRs Welcome

MCP ツールを通じて Kubernetes クラスターと対話できる、Kubernetes MCP(Model Control Protocol)サーバーです。

特長

  • 対応する Kubernetes リソースタイプを照会(組み込みリソースと CRD)
  • Kubernetes リソースをきめ細かく制御して操作
    • 読み取り操作:リソースの詳細取得、フィルターオプションを指定したタイプ別リソース一覧の取得
    • 書き込み操作:リソースの作成、更新、削除(各操作を個別に有効化/無効化可能)
    • カスタムリソースを含む、すべての Kubernetes リソースタイプに対応
  • kubeconfig を使用して Kubernetes クラスターに接続
  • きめ細かな制御が可能な Helm サポート
    • Helm リリースの管理(一覧表示、取得、インストール、アップグレード、アンインストール)
    • Helm リポジトリの管理(一覧表示、追加、削除)
    • 各操作を個別に有効化/無効化可能

プレビュー

cursor を通じた対話

README の画像

ユースケース

1. LLM による Kubernetes リソース管理
  • 対話型のリソース管理:LLM と自然言語で対話して Kubernetes リソースを管理でき、複雑な kubectl コマンドを覚える必要がありません
  • 一括操作:複雑な一括操作の要件を自然言語で説明すると、LLM が具体的なリソース操作に変換します
  • リソースの状態照会:自然言語でクラスターのリソース状態を照会し、わかりやすい回答を受け取れます
2. 運用自動化のシナリオ
  • インテリジェントな運用アシスタント:日常的なクラスター管理タスクで、運用担当者を支援するアシスタントとして利用できます
  • 問題の診断:自然言語による問題の説明を通じて、クラスターの問題診断を支援します
  • 設定のレビュー:LLM の理解能力を活用して、Kubernetes リソース設定のレビューと最適化を支援します
3. 開発とテストのサポート
  • プロトタイプの迅速な検証:開発者は自然言語を使って、リソース設定をすばやく作成し、検証できます
  • 環境管理:テスト環境のリソース管理を簡素化し、テストリソースをすばやく作成、変更、クリーンアップできます
  • 設定の生成:要件の説明に基づき、ベストプラクティスに沿ったリソース設定を自動生成します
4. 教育・トレーニングのシナリオ
  • 対話型学習:初心者は自然言語で対話しながら、Kubernetes の概念や操作を学べます
  • ベストプラクティスの案内:リソース操作中に、LLM がベストプラクティスを提案します
  • エラーの説明:操作に失敗した場合、わかりやすいエラーの説明と修正案を提示します

アーキテクチャ

1. プロジェクト概要

Kubernetes クラスターに接続し、以下の機能を提供する stdio ベースの MCP サーバーです。

  • Kubernetes リソースタイプの照会(組み込みリソースと CRD を含む)
  • Kubernetes リソースの CRUD 操作(書き込み操作は設定可能)
  • リリースとリポジトリを管理する Helm 操作
2. 技術スタック
  • Go
  • mcp-go SDK
  • Kubernetes client-go ライブラリ
  • Helm v3 クライアントライブラリ
  • 通信には Stdio を使用
3. コアコンポーネント
  1. MCP Server:mcp-go の mcp-k8s パッケージを使用して、stdio ベースの MCP サーバーを作成します
  2. K8s クライアント:client-go を使用して Kubernetes クラスターに接続します
  3. Helm クライアント:Helm v3 ライブラリを使用して Helm の操作を行います
  4. ツールの実装:さまざまな Kubernetes 操作に対応する MCP ツールを実装します
4. 利用可能なツール
リソースタイプのクエリツール
  • get_api_resources:クラスターでサポートされているすべての API リソースタイプを取得します
リソース操作ツール
  • get_resource:特定のリソースの詳細情報を取得します
  • list_resources:リソースタイプのすべてのインスタンスを一覧表示します
  • create_resource:新しいリソースを作成します(無効にできます)
  • update_resource:既存のリソースを更新します(無効にできます)
  • delete_resource:リソースを削除します(無効にできます)
Helm 操作ツール
  • list_helm_releases:クラスター内のすべての Helm リリースを一覧表示します
  • get_helm_release:特定の Helm リリースの詳細情報を取得します
  • install_helm_chart:Helm チャートをインストールします(無効にできます)
  • upgrade_helm_chart:Helm リリースをアップグレードします(無効にできます)
  • uninstall_helm_chart:Helm リリースをアンインストールします(無効にできます)
  • list_helm_repositories:設定済みの Helm リポジトリを一覧表示します
  • add_helm_repository:新しい Helm リポジトリを追加します(無効にできます)
  • remove_helm_repository:Helm リポジトリを削除します(無効にできます)

使用方法

mcp-k8s は、3 つの通信モードに対応しています。

1. Stdio モード(デフォルト)

stdio モードでは、mcp-k8s は標準入出力ストリームを介してクライアントと通信します。これがデフォルトのモードであり、ほとんどのユースケースに適しています。

# Run in stdio mode (default)
{
    "mcpServers":
    {
        "mcp-k8s":
        {
            "command": "/path/to/mcp-k8s",
            "args":
            [
                "--kubeconfig",
                "/path/to/kubeconfig",
                "--enable-create",
                "--enable-delete",
                "--enable-update",
                "--enable-list",
                "--enable-helm-install",
                "--enable-helm-upgrade"
            ]
        }
    }
}
2. SSE モード

SSE(Server-Sent Events)モードでは、mcp-k8s は mcp クライアント向けの HTTP エンドポイントを公開します。 サービスをリモートサーバーにデプロイできます(ただし、セキュリティに注意する必要があります)。

# Run in SSE mode
./bin/mcp-k8s --kubeconfig=/path/to/kubeconfig --transport=sse --port=8080 --host=localhost --enable-create --enable-delete --enable-list --enable-update --enable-helm-install
# This command will open all operations

mcp の設定

{
  "mcpServers": {
    "mcp-k8s": {
      "url": "http://localhost:8080/sse",
      "args": []
    }
  }
}

SSE モードの設定:

  • --transport:SSE モードを有効にするには「sse」に設定します
  • --port:HTTP サーバーのポート(デフォルト:8080)
  • --host:HTTP サーバーのホスト(デフォルト:「localhost」)
3. Streamable HTTP モード

Streamable HTTP モードでは、mcp-k8s は直接的な HTTP レスポンスと SSE ストリームの両方をサポートする HTTP エンドポイントを公開します。このモードは柔軟性に優れ、ストリーミング出力に対応しています。

# Run in Streamable HTTP mode
./bin/mcp-k8s --kubeconfig=/path/to/kubeconfig --transport=streamable-http --port=8080 --host=localhost --endpoint-path=/mcp --enable-create --enable-delete --enable-list --enable-update --enable-helm-install

mcp の設定

{
  "mcpServers": {
    "mcp-k8s": {
      "url": "http://localhost:8080/mcp",
      "args": []
    }
  }
}

Streamable HTTP モードの設定:

  • --transport:Streamable HTTP モードを有効にするには「streamable-http」に設定します
  • --port:HTTP サーバーのポート(デフォルト:8080)
  • --host:HTTP サーバーのホスト(デフォルト:「localhost」)
  • --endpoint-path:MCP サーバーのエンドポイントパス(デフォルト:「/mcp」)
4. Docker 環境
SSE モード
  1. 完全な例 イメージ名が mcp-k8s で、ポートのマッピングと環境パラメーターの設定が必要な場合は、次のコマンドを実行できます。
docker run --rm -p 8080:8080 -i -v ~/.kube/config:/root/.kube/config ghcr.io/silenceper/mcp-k8s:latest --transport=sse
Streamable HTTP モード
docker run --rm -p 8080:8080 -i -v ~/.kube/config:/root/.kube/config ghcr.io/silenceper/mcp-k8s:latest --transport=streamable-http --endpoint-path=/mcp
stdio モード
{
  "mcpServers": {
    "mcp-k8s": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "-v",
        "~/.kube/config:/root/.kube/config",
        "--rm",
        "ghcr.io/silenceper/mcp-k8s:latest"
      ]
    }
  }
}

はじめに

直接使用する

リリースページからお使いのプラットフォーム向けのバイナリを直接ダウンロードして、すぐに使用できます。

Go Install
go install github.com/silenceper/mcp-k8s/cmd/mcp-k8s@latest
ビルド
Makefile を使用する(推奨)

Makefile は VERSION ファイルからバージョン情報を自動的に取り込みます。

git clone https://github.com/silenceper/mcp-k8s.git
cd mcp-k8s
make build

これにより、ldflags を使ってバージョン情報を埋め込んだ状態でビルドされます。

直接ビルドする
git clone https://github.com/silenceper/mcp-k8s.git
cd mcp-k8s
go build -o bin/mcp-k8s cmd/mcp-k8s/main.go

注:ldflags を手動で指定しない限り、直接ビルドした場合のバージョンは「dev」と表示されます。

コマンドライン引数

mcp-k8s --help で利用可能なすべてのオプションを確認できます。また、mcp-k8s --version でバージョンを確認できます。

Kubernetes リソース操作
  • --kubeconfig:Kubernetes 設定ファイルへのパス(指定しない場合はデフォルトの設定を使用します)
  • --enable-create:リソースの作成操作を有効にします(デフォルト:false)
  • --enable-update:リソースの更新操作を有効にします(デフォルト:false)
  • --enable-delete:リソースの削除操作を有効にします(デフォルト:false)
  • --enable-list:リソースの一覧表示操作を有効にします(デフォルト:true)
Helm 操作
  • --enable-helm-release-list:启用 Helm リリース一覧操作(デフォルト:true)
  • --enable-helm-release-get:启用 Helm リリース取得操作(デフォルト:true)
  • --enable-helm-install:启用 Helm チャートのインストール(デフォルト:false)
  • --enable-helm-upgrade:启用 Helm チャートのアップグレード(デフォルト:false)
  • --enable-helm-uninstall:启用 Helm チャートのアンインストール(デフォルト:false)
  • --enable-helm-repo-list:启用 Helm リポジトリ一覧操作(デフォルト:true)
  • --enable-helm-repo-add:启用 Helm リポジトリ追加操作(デフォルト:false)
  • --enable-helm-repo-remove:启用 Helm リポジトリ削除操作(デフォルト:false)
トランスポート設定
  • --transport:トランスポートの種類(stdio、sse、または streamable-http)(デフォルト:"stdio")
  • --host:HTTP トランスポート(SSE または Streamable HTTP)のホスト(デフォルト:"localhost")
  • --port:HTTP トランスポート(SSE または Streamable HTTP)の TCP ポート(デフォルト:8080)
  • --endpoint-path:Streamable HTTP トランスポートのエンドポイントパス(デフォルト:"/mcp")
バージョン情報
  • --version:バージョン、コミットハッシュ、ビルド日時を含むバージョン情報を表示します
  • --help または -h:ヘルプ情報を表示します
Streamable HTTP のテスト

Streamable HTTP モードが正しく動作しているかテストするには、付属のテストスクリプトを使用します。

# Start the server in one terminal
./bin/mcp-k8s --transport=streamable-http --port=8080 --enable-list

# In another terminal, run the test script
./test_streamable_http.sh

詳しいテスト手順については、TEST_STREAMABLE_HTTP.md を参照してください。

MCP クライアントとの統合

mcp-k8s は stdio ベースの MCP サーバーであり、MCP 対応の LLM クライアントであればどれでも統合できます。統合手順については、お使いの MCP クライアントのドキュメントを参照してください。

セキュリティに関する考慮事項

  • 書き込み操作は、独立した設定スイッチによって厳密に制御されます
  • RBAC を使用し、K8s クライアントに必要最小限の権限のみを付与します
  • インジェクション攻撃を防ぐため、すべてのユーザー入力を検証します
  • Helm 操作も同じセキュリティ原則に従い、読み取り操作はデフォルトで有効、書き込み操作はデフォルトで無効です

WeChat 公式アカウントをフォロー

AI技术小林

コメント

MCP は初めてですか?

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

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