K8s MCP Server (Go) について
K8s MCP Server (Go) は、権限を制御しながらクラスターを確認したい AI アシスタントや運用担当者向けの Kubernetes MCP サーバーです。既定では読み取り専用で、限定操作またはフルアクセスのモードも明示的に選べます。
主な機能
- 01既定で読み取り専用アクセス
- 02readonly、readwrite、dangerous モードの明示設定
- 03ワークロード、ログ、イベント、ノードの確認
- 04CPU とメモリの使用状況の表示
- 05MCPB バンドルまたはネイティブバイナリでの導入
活用シーン
- 01リソースを変更せずに異常な Pod を診断
- 02ワークロードのログと最近のイベントを確認
- 03ノードまたは Pod のリソース使用量を確認
- 04readwrite モードで選択したデプロイ操作を実行
MCP 対応
MCP クライアントに Kubernetes の確認・運用ツールを提供します。利用可能なツールは設定した権限モードによって異なります。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
k8s-mcp-go
AI エージェントが安全に Kubernetes にアクセスできる、デフォルトで読み取り専用のツールです。
AI アシスタントが、制限のない kubectl を与えられることなく、クラスターを安全に調査できる Kubernetes MCP サーバーです。
特長
- デフォルトで読み取り専用:AI にクラスターを変更する権限を与えずに、診断に活用できます。
- 明示的な権限モード:アシスタントの起動前に、
readonly、readwrite、dangerousを選択できます。 - Docker 不要:MCPB バンドルまたは単一のネイティブバイナリでインストールできます。
- Kubernetes に特化した可視性:ポッド、デプロイメント、サービス、ログ、イベント、ノード、リアルタイムの CPU/メモリ使用量を調査できます。
- レジストリに対応した配布:MCP Registry の利用者やパッケージ化されたクライアント向けに、
io.github.kaneg/k8s-mcp-goとして公開されています。
配布先
- MCP Registry:
io.github.kaneg/k8s-mcp-goとして公開されています。 - PulseMCP:公式の
server.jsonとともに、MCP エコシステムからインデックスされています。 - Claude Code Marketplaces:MCPB のインストールメタデータとともに掲載されています。
理由
ほとんどの AI エージェントは Kubernetes ツールを使用できます。 本当の課題は、間違ったものを変更させない方法です。
AI に生の kubectl アクセスを与えるのは危険です。優れたモデルであっても、次のような操作を誤る可能性があります。
- 間違ったリソースを削除する
- 間違ったワークロードを再起動する
- 危険な変更を適用する
- デバッグセッションを本番環境のインシデントに変えてしまう
k8s-mcp-go は、制限のないシェルアクセスの代わりに、AI エージェントが Kubernetes を操作するための安全策を備えたインターフェースを提供します。
実際の現場で生じる、次の問いに答えるために作られています。
クラスターを壊させることなく、AI に Kubernetes の作業を手伝わせるにはどうすればよいでしょうか?
権限モード
あらかじめ権限の範囲を選択します。
| 希望する操作 | モード |
|---|---|
| 「AI に調査や診断をさせたいが、何も変更させたくない」 | readonly |
| 「スケーリングや再起動など、安全な運用操作を許可する」 | readwrite |
| 「クラスターへの全権限を与える」 | dangerous |
readonly(デフォルト)
診断、調査、安全な探索に適しています。
AI は次のような操作を行えます。
- ポッド、デプロイメント、サービス、ノード、名前空間を一覧表示する
- ログやイベントを読み取る
- クラスターの状態を調査する
- リソース使用量を確認する
ワークロードの変更やリソースの削除はできません。
readwrite
制御された運用ワークフローに適しています。
AI は次のような操作を行えます。
- デプロイメントをスケーリングする
- デプロイメントを再起動する
- ステートフルセットを再起動する
- イメージを更新する
- デプロイメントにパッチを適用する
- 名前空間を作成する
最も破壊的な操作は引き続き実行できません。
dangerous
すべてのアクセスを許可します。
AI に次の操作を許可したい場合に限り使用してください。
- リソースを削除する
- 名前空間を削除する
- 任意の YAML を適用する
判断に迷う場合は、readonly を使用してください。
クイックスタート
オプション 1:MCPB のインストール(推奨)
お使いのプラットフォーム用の .mcpb バンドルをリリースからダウンロードします。MCPB 対応クライアント(Claude Desktop、Cursor など)から直接インストールできます。Docker、Go、手動セットアップは不要です。
| OS | アーキテクチャ | ファイル |
|---|---|---|
| Linux | x86_64 | k8s-mcp-go_*_linux_amd64.mcpb |
| Linux | ARM64 | k8s-mcp-go_*_linux_arm64.mcpb |
| macOS | Intel | k8s-mcp-go_*_darwin_amd64.mcpb |
| macOS | Apple Silicon | k8s-mcp-go_*_darwin_arm64.mcpb |
| Windows | x86_64 | k8s-mcp-go_*_windows_amd64.mcpb |
| Windows | ARM64 | k8s-mcp-go_*_windows_arm64.mcpb |
オプション 2:バイナリを手動でインストールする
Releases からバイナリアーカイブをダウンロードして、展開します。
# Example: Linux x86_64
tar xzf k8s-mcp-go_*_linux_amd64.tar.gz
chmod +x k8s-mcp-go
sudo mv k8s-mcp-go /usr/local/bin/
その後、MCP クライアントに追加します。
Claude Desktop(claude_desktop_config.json):
{
"mcpServers": {
"k8s": {
"command": "k8s-mcp-go",
"args": ["-mode=readonly"]
}
}
}
Cursor(.cursor/mcp.json):
{
"mcpServers": {
"k8s": {
"command": "k8s-mcp-go",
"args": ["-mode=readonly"]
}
}
}
クライアントを再起動して、クラスターについて質問してみましょう。
プロンプトの例
インストール後、AI アシスタントに次のような質問をしてみましょう。
- 「すべての名前空間で、正常でないポッドを表示してください。」
- 「最も多くのメモリを使用しているポッドはどれですか?」
- 「最近の警告イベントを要約してください。」
- 「このデプロイメントを調べて、準備が整っていない理由を説明してください。」
- 「このデプロイメントのロールアウト状況を確認してください。」
readonly モードでは、アシスタントは調査できますが、クラスターを変更することはできません。
kubectl だけでは不十分な理由
問題は、AI が Kubernetes と通信できるかどうかではありません。 問題は、安全に通信できるかどうかです。
kubectl は強力ですが、AI の動作に対する製品レベルの権限モードは備えていません。
k8s-mcp-go を使えば、アシスタントに許可する操作を選べます。
- 調査のみ
- 制限付きの運用操作
- または、すべての操作
権限の境界こそが、この製品の本質です。
利用可能なツール(合計 35 個)
ツールは権限レベルごとに分類されています。
ツール名は get、list、delete などの動詞で始まります。top_nodes と top_pods
は、Kubernetes で定着している kubectl top の用語をそのまま使用しています。
読み取り専用(24 個)
| ツール | 説明 |
|---|---|
get_server_info | サーバーのバージョン、モード、Kubernetes 設定の参照元、実行時の詳細を表示します |
resolve_workload | アプリケーション/ワークロード名を対応するリソースに解決し、次に推奨されるツールを提示します |
list_pods | ポッドを一覧表示します。all_namespaces=true をサポートします |
get_pod | ポッドの詳細を取得します |
get_pod_logs | ポッドのログを取得します |
list_deployments | デプロイメントを一覧表示します。all_namespaces=true をサポートします |
get_deployment | デプロイメントの詳細を取得します |
list_statefulsets | StatefulSet を一覧表示します。all_namespaces=true をサポートします |
get_statefulset | StatefulSet の詳細を取得します |
list_services | サービスを一覧表示します。all_namespaces=true をサポートします |
get_service | サービスの詳細を取得します |
list_configmaps | ConfigMap を一覧表示します。all_namespaces=true をサポートします |
get_configmap | ConfigMap のデータを取得します |
list_secrets | Secret を一覧表示します(キーのみ)。all_namespaces=true をサポートします |
get_secret | Secret のメタデータとキーを取得します |
list_pvc | PersistentVolumeClaim を一覧表示します。all_namespaces=true をサポートします |
list_ingress | Ingress リソースを一覧表示します。all_namespaces=true をサポートします |
list_jobs | Job を一覧表示します。all_namespaces=true をサポートします |
top_nodes | ノードの現在の CPU とメモリの使用量 |
top_pods | ポッドの現在の CPU とメモリの使用量 |
list_nodes | クラスターのノードを一覧表示します |
list_namespaces | 名前空間を一覧表示します |
get_cluster_overview | クラスターの正常性の概要 |
list_events | イベントを一覧表示します |
読み取り/書き込み(7 個)
| ツール | 説明 |
|---|---|
scale_deployment | デプロイメントのレプリカ数を変更します |
restart_deployment | デプロイメントをローリング再起動します |
restart_statefulset | StatefulSet をローリング再起動します |
set_image | コンテナイメージを更新します |
get_rollout_status | ロールアウトの進行状況を確認します |
create_namespace | 新しい名前空間を作成します |
patch_deployment | 戦略的マージパッチを適用します |
危険な操作(7 個)
| ツール | 説明 |
|---|---|
delete_pod | ポッドを削除します |
delete_deployment | デプロイメントを削除します |
delete_statefulset | StatefulSet とそのポッドを削除します |
delete_daemonset | DaemonSet とそのポッドを削除します |
delete_resource | 専用の削除ツールがないリソースを削除します |
delete_namespace | 名前空間とすべてのリソースを削除します |
apply_yaml | 任意の YAML マニフェストを適用します |
上記に専用の削除ツールがある場合は、そちらを優先してください。それ以外の種類のリソースには、代替手段として delete_resource
を使用します。Kubernetes のディスカバリーを通じて、名前空間スコープとクラスター スコープのどちらのリソースかを解決します。
{"api_version":"v1","kind":"ServiceAccount","namespace":"apps","name":"builder"}
{"api_version":"rbac.authorization.k8s.io/v1","kind":"ClusterRole","name":"auditor"}
Kubernetes の設定
設定は次の順序で選択されます。
KUBECONFIGが設定されている場合は、指定されたファイル。- Pod のクラスター内 ServiceAccount 設定。
- クラスター外で実行する場合は、
~/.kube/config。
明示的に指定された KUBECONFIG が優先されます。読み込めない場合、サーバーは Pod の ServiceAccount に暗黙に切り替えるのではなく、エラーを返します。
クラスター内設定では Kubernetes のマウントされたトークンファイルを使用するため、トークンを kubeconfig にコピーしなくても、投影された ServiceAccount トークンのローテーションが引き続き機能します。
環境変数
| 変数 | 説明 |
|---|---|
KUBECONFIG | kubeconfig の明示的なパスです。設定されていない場合は、クラスター内設定を使用するか、~/.kube/config にフォールバックします。 |
ソースからビルドする
git clone https://github.com/kaneg/k8s-mcp-go.git
cd k8s-mcp-go
go build -o k8s-mcp-go .
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。