mcpField
M
MCP Server Kubernetes

MCP Server Kubernetes

ローカル
github.com/kmathurクラウド・インフラ080 週間前に更新

MCP Server Kubernetes について

現在のkubectlコンテキストを通じてKubernetesクラスターを管理するMCPサーバーです。一般的なリソース操作やトラブルシューティング、Helmリリース管理に対応し、非破壊モードも利用できます。

主な機能

  1. 01Pod、Service、Deployment、Nodeの一覧表示と管理
  2. 02Namespace、CronJob、Serviceの作成
  3. 03Podやワークロードのログ、クラスターイベントの取得
  4. 04Helmリリースのインストール、アップグレード、削除
  5. 05PodまたはServiceへのポートフォワード
  6. 06非破壊モードでのクラスターアクセス

活用シーン

  1. 01クラスターのリソースとイベントの確認
  2. 02ログを使ったワークロードのデバッグ
  3. 03DeploymentとHelmリリースの管理
  4. 04読み取りと作成・更新に操作を制限

MCP 対応

MCPクライアントにKubernetes管理ツールを公開し、現在のkubectlコンテキストを通じて接続します。mcp-chatからも利用できます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"kubernetes-kmathur": {
"command": "npx",
"args": [
"-y",
"mcp-chat"
]
}
}
}
起動コマンドnpx -y mcp-chat

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmmcp-chat

ツール

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

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

詳細

MCP サーバー Kubernetes

CI Language Bun Kubernetes Docker Stars Issues PRs Welcome Last Commit smithery badge

Kubernetes クラスターに接続して管理できる MCP サーバーです。

https://github.com/user-attachments/assets/f25f8f4e-4d04-479b-9ae0-5dac452dd2ed

README の画像

Claude Desktop での使用方法

{
  "mcpServers": {
    "kubernetes": {
      "command": "npx",
      "args": ["mcp-server-kubernetes"]
    }
  }
}

サーバーは現在の kubectl コンテキストに自動的に接続します。以下を確認してください。

  1. kubectl がインストールされ、PATH に含まれていること
  2. コンテキストが設定された有効な kubeconfig ファイルがあること
  3. kubectl 用に設定された Kubernetes クラスター(minikube、Rancher Desktop、GKE など)にアクセスできること
  4. 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
開発ワークフロー
  1. 開発モードでサーバーを起動します(ファイルの変更を監視します)。
bun run dev
  1. 単体テストを実行します。
bun run test
  1. プロジェクトをビルドします。
bun run build
  1. Inspector を使用したローカルテスト
npx @modelcontextprotocol/inspector node dist/index.js
# Follow further instructions on terminal for Inspector link
  1. Claude Desktop を使用したローカルテスト
{
  "mcpServers": {
    "mcp-server-kubernetes": {
      "command": "node",
      "args": ["/path/to/your/mcp-server-kubernetes/dist/index.js"]
    }
  }
}
  1. 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 へのクラスターの追加。

コメント

MCP は初めてですか?

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

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