mcpField
M
Multi Cluster Kubernetes MCP Server

Multi Cluster Kubernetes MCP Server

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

Multi Cluster Kubernetes MCP Server について

Multi Cluster Kubernetes MCP Serverは、複数のkubeconfigファイルからクラスターを検出し、Kubernetes操作をMCP経由で提供します。複数クラスターのリソース管理、監視、RBAC、ストレージ、ネットワーク操作を一元化したい運用担当者向けで、クラスター間の比較にも対応します。

主な機能

  1. 01kubeconfigコンテキストの自動検出
  2. 02クラスター間のリソースと状態の比較
  3. 03クラスターリソースの管理と診断
  4. 04監視、RBAC、ストレージ、ネットワークのツール
  5. 05再スキャンを抑えるコンテキストキャッシュ

活用シーン

  1. 01開発、ステージング、本番クラスターの一元確認
  2. 02クラスター間のリソースと健全性の比較
  3. 03アプリケーションの診断とPodログの確認
  4. 04スケーリング、ロールバック、ノード保守

MCP 対応

MCPクライアントに、クラスター操作、リソース管理、監視、RBAC、ストレージ、ネットワークを扱う60以上のKubernetesツールを提供します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"k8s_multicluster_mcp": {
"command": "npx",
"args": [
"-y",
"@smithery/cli"
]
}
}
}
起動コマンドnpx -y @smithery/cli

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

パッケージ
npm@smithery/cli

ツール

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

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

詳細

マルチクラスター Kubernetes MCP サーバー

smithery badge Python 3.11+ License: Apache 2.0

複数の Kubernetes クラスターを同時に管理するための MCP(Model Context Protocol)サーバーです。クラスター操作、リソース管理、モニタリング、RBAC、ストレージ、ネットワーキングなどを網羅する 60 以上のツールを提供し、Claude Desktop などの AI アシスタントから利用できます。

クイックスタート

Smithery 経由でインストール
npx -y @smithery/cli install @razvanmacovei/k8s-multicluster-mcp --client claude
手動インストール
git clone https://github.com/razvanmacovei/k8s-multicluster-mcp.git
cd k8s-multicluster-mcp
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python3 app.py
Docker
docker build -t k8s-mcp .
docker run -v ~/.kube:/root/.kube k8s-mcp

設定

Claude Desktop / MCP クライアント

MCP クライアントの設定に追加します。

{
  "mcpServers": {
    "kubernetes": {
      "command": "python3",
      "args": ["/path/to/k8s-multicluster-mcp/app.py"],
      "env": {
        "KUBECONFIG_DIR": "/path/to/your/kubeconfigs"
      }
    }
  }
}
環境変数
変数デフォルト説明
KUBECONFIG_DIR~/.kubekubeconfig ファイルを含むディレクトリです。各ファイルには 1 つ以上のコンテキストを含めることができます。

kubeconfig ファイルを設定したディレクトリに配置します。サーバーは、すべてのファイルに含まれるコンテキストを自動的に検出します。

前提条件
  • Python 3.11 以降
  • 有効なクラスター認証情報を含む kubeconfig ファイルが 1 つ以上あること
  • k8s_top_* および k8s_cluster_info ツールを使用するには、クラスターに metrics-server がインストールされていること

マルチクラスター管理

このサーバーは、複数の Kubernetes クラスターを管理するために特化して構築されています。

  • 自動検出:KUBECONFIG_DIR 内のすべての kubeconfig ファイルをスキャンし、コンテキストを集約します
  • 名前の部分一致:arn:aws:eks:us-east-1:123456:cluster/prod-cluster の代わりに prod を使用できます
  • クラスター横断操作:クラスター間でリソース、健全性、設定を比較します
  • コンテキストキャッシュ:効率的な 30 秒 TTL キャッシュにより、呼び出しごとに kubeconfig ファイルを読み直す必要がありません
  • 一元管理:単一のインターフェースから dev、staging、production を管理します

ツールのリファレンス(60 以上のツール)

クラスターとコンテキストの管理(6 ツール)
ツール説明
k8s_get_contextsすべての kubeconfig ファイルにある利用可能なコンテキストを一覧表示します
k8s_get_namespacesクラスター内のすべての名前空間を一覧表示します
k8s_create_nsオプションでラベルやアノテーションを指定して、新しい名前空間を作成します
k8s_delete_ns名前空間を削除します(システム名前空間は保護されます)
k8s_get_nodesステータス、ロール、容量、バージョンを含むすべてのノードを一覧表示します
k8s_cluster_infoクラスターの健全性の概要を包括的に表示します(ノード、ポッド、デプロイ、警告)
リソースの検出と調査(7 ツール)
ツール説明
k8s_get_resources任意の種類のリソース(ポッド、デプロイ、サービス、イングレスなど)を一覧表示します
k8s_get_resource単一のリソースの完全な定義を取得します
k8s_get_pod_logs期間による絞り込みとコンテナー選択に対応したポッドログを取得します
k8s_get_events名前空間内のクラスターイベントを、最新のものから順に一覧表示します
k8s_describekubectl describe に似た、リソースの詳細な説明を表示します
k8s_apisクラスターで利用可能なすべての API グループとリソースを一覧表示します
k8s_crdsバージョンとスコープを含むすべてのカスタムリソース定義を一覧表示します
メトリクスとモニタリング(3 ツール)
ツール説明
k8s_top_nodesノードの CPU/メモリ使用量を容量と合わせて表示します
k8s_top_podsポッド/コンテナーの CPU/メモリ使用量を表示します
k8s_diagnose_application問題の検出と推奨事項を含む、アプリの包括的な診断を行います
ロールアウト管理(6 ツール)
ツール説明
k8s_rollout_statusデプロイ/ステートフルセット/デーモンセットのロールアウト状況を取得します
k8s_rollout_historyリビジョン履歴を取得します
k8s_rollout_undo以前のリビジョンにロールバックします
k8s_rollout_restartローリング再起動を開始します
k8s_rollout_pause進行中のロールアウトを一時停止します
k8s_rollout_resume一時停止中のロールアウトを再開します
スケーリング(3 ツール)
ツール説明
k8s_scale_resourcedeployment/statefulset/replicaset を N 個のレプリカにスケーリングします
k8s_autoscale_resourceHorizontal Pod Autoscaler(HPA)を設定します
k8s_update_resourcesコンテナの CPU/メモリのリクエストと制限を更新します
リソースの CRUD(6 ツール)
ツール説明
k8s_create_resourceYAML/JSON の内容からリソースを作成します
k8s_apply_resource設定を適用します(kubectl apply のように作成または更新します)
k8s_delete_resource任意のリソースタイプを削除します。強制削除/猶予期間を指定できます
k8s_patch_resourceストラテジックマージパッチで特定のフィールドを更新します
k8s_label_resourceリソースのラベルを追加または更新します
k8s_annotate_resourceリソースのアノテーションを追加または更新します
ワークロード管理(3 ツール)
ツール説明
k8s_expose_resourcedeployment/pod を新しい Service として公開します
k8s_run_pod指定したイメージで Pod を作成して実行します
k8s_set_resources_for_containerコンテナのリソース制限/リクエストを設定します
ノード管理(5 ツール)
ツール説明
k8s_cordon_nodeノードをスケジュール不可としてマークします
k8s_uncordon_nodeノードをスケジュール可能としてマークします
k8s_drain_nodePod を退避させてノードをドレインします(メンテナンス用)
k8s_taint_nodeノードにテイントを追加します
k8s_untaint_nodeノードからテイントを削除します
Pod 操作(1 ツール)
ツール説明
k8s_pod_execコンテナ内でコマンドを実行します(引用符で囲んだ引数に対応)
Secrets と ConfigMaps(6 ツール)
ツール説明
k8s_list_secretメタデータ付きで Secret を一覧表示します(セキュリティ保護のため値は非表示)
k8s_get_secret_detailSecret を取得します。値をデコードするかどうかを指定できます
k8s_create_secret_resource新しい Secret を作成します(値は自動的に Base64 エンコードされます)
k8s_list_configmapキー名とともに ConfigMap を一覧表示します
k8s_get_configmap_detail全データの内容を含む ConfigMap を取得します
k8s_create_configmap_resource新しい ConfigMap を作成します
RBAC(5 ツール)
ツール説明
k8s_get_roles権限ルール付きで RBAC Roles を一覧表示します
k8s_get_clusterrolesRBAC ClusterRoles を一覧表示します
k8s_get_rolebindingsRoleBindings を一覧表示します(誰がどのロールを持っているか)
k8s_get_clusterrolebindingsClusterRoleBindings を一覧表示します
k8s_get_service_accountsServiceAccounts を一覧表示します
ストレージ(3 ツール)
ツール説明
k8s_get_pvcsステータス、容量、ストレージクラスとともに PersistentVolumeClaims を一覧表示します
k8s_get_pvs容量とバインドされたクレームとともに PersistentVolumes を一覧表示します
k8s_get_storage_classesプロビジョナーとデフォルトの状態とともに StorageClasses を一覧表示します
ネットワーキング(1 ツール)
ツール説明
k8s_get_network_policiesPod セレクターとルール数とともに NetworkPolicies を一覧表示します
Job 管理(2 ツール)
ツール説明
k8s_get_jobs完了ステータスと実行時間とともに Jobs を一覧表示します
k8s_get_cronjobsスケジュール、一時停止状態、最終実行とともに CronJobs を一覧表示します

使用例

クラスターのヘルスチェック
Give me a health overview of my production cluster.
マルチクラスターの比較
Compare the number of pods running in the 'backend' namespace between my 'prod' and 'staging' contexts.
アプリケーションの問題を診断する
My deployment 'my-app' in the 'production' namespace is having issues. Can you diagnose what's wrong?
リソースをスケーリングする
Scale the 'backend' deployment in the 'default' namespace to 5 replicas.
リソース管理
Delete the failed job 'data-migration-v1' in the 'batch' namespace.
Create a new namespace called 'staging' with the label environment=staging.
Secret 管理
List all secrets in the 'production' namespace and show me the keys in the 'api-credentials' secret.
RBAC の調査
Show me all role bindings in the 'default' namespace -- who has access to what?
ストレージの概要
List all PVCs in the cluster and show which ones are Pending.
ノードのメンテナンス
Cordon node 'worker-3', drain it ignoring DaemonSets, then uncordon when maintenance is complete.
Deployment のロールバック
Roll back the 'api-gateway' deployment in the 'services' namespace to the previous version.
Pod 内で実行する
Run 'ls -la /app/config' inside the 'app' container of pod 'web-app-xyz' in the 'default' namespace.
リソースを作成する
Create a new deployment with this YAML:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: default
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.27
        ports:
        - containerPort: 80

アーキテクチャ

k8s-multicluster-mcp/
├── app.py                          # MCP server entry point & tool registration
├── src/
│   ├── utils/
│   │   ├── k8s_client.py           # Multi-cluster client with context caching
│   │   └── pluralize.py            # Kubernetes resource kind pluralization
│   └── tools/
│       ├── contexts.py             # Context listing
│       ├── namespaces.py           # Namespace listing
│       ├── namespace_management.py # Namespace create/delete
│       ├── nodes.py                # Node listing
│       ├── pods.py                 # Resource listing & pod logs
│       ├── resources.py            # Single resource retrieval
│       ├── events.py               # Event listing
│       ├── describe.py             # kubectl describe equivalent
│       ├── api_discovery.py        # API & CRD discovery
│       ├── metrics.py              # Node/pod metrics (top)
│       ├── diagnosis.py            # Application diagnostics
│       ├── cluster_health.py       # Cluster health summary
│       ├── rollouts.py             # Rollout management
│       ├── scaling.py              # Scale & autoscale & resource updates
│       ├── resource_management.py  # Create, apply, patch, label, annotate
│       ├── delete_resource.py      # Resource deletion
│       ├── workload_management.py  # Expose, run pod, set resources
│       ├── node_management.py      # Cordon, drain, taint
│       ├── pod_operations.py       # Exec into pods
│       ├── secret_configmap.py     # Secret & ConfigMap management
│       ├── rbac.py                 # Roles, bindings, service accounts
│       ├── storage_network.py      # PVC, PV, StorageClass, NetworkPolicy
│       └── job_management.py       # Jobs & CronJobs
├── requirements.txt
├── pyproject.toml
├── Dockerfile
└── smithery.yaml

v2.0.0 の新機能

  • 20 個以上の新しいツール:リソースの削除、ネームスペースの管理、シークレットと ConfigMap、RBAC の調査、ストレージとネットワークの可視化、ジョブの管理、クラスターの健全性の概要、ポッドの作成
  • バグ修正:リソースの複数形化を修正(例:Ingress → ingresses。ingresss ではありません)、引用符で囲まれた引数に対応するためポッドの exec コマンドの分割を修正、タイムアウトパラメーターの処理を修正
  • パフォーマンス:コンテキストの検出で、コンテキストからファイルへの直接マッピングを使用する有効期間 30 秒のキャッシュを導入し、冗長なファイルスキャンを排除しました
  • ツールの説明を改善:AI アシスタントとの連携を強化するため、60 個以上すべてのツールに詳細な説明を追加しました
  • 依存関係を整理:未使用の fastapi と uvicorn の依存関係を削除しました
  • セキュリティ:ネームスペースの削除時にシステムネームスペースを保護し、シークレットの値をデフォルトで非表示にしました

コントリビューション

コントリビューションを歓迎します!お気軽にプルリクエストを送信してください。

コメント

MCP は初めてですか?

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

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