Kubernetes MCP Server について
Kubernetes MCP Serverは、AIツールからKubernetesとOpenShiftを管理するためのMCPサーバーです。Goで実装され、kubectlやhelmのコマンドラインツールを介さずKubernetes APIに直接接続し、複数クラスターを扱います。
主な機能
- 01汎用Kubernetesリソースの管理
- 02Podの確認と操作
- 03Helmリリースとチャートの管理
- 04Tektonパイプラインとタスクの操作
- 05複数クラスターのサポート
- 06ツールセットとアクセス制限の設定
活用シーン
- 01Podのログとリソース使用量を確認する
- 02Kubernetesリソースを作成・更新する
- 03Helmリリースをインストール・削除する
- 04Tektonパイプライン実行をトラブルシュートする
MCP 対応
MCPクライアントに、KubernetesとOpenShiftのリソース、Pod、Helm、Tektonなどを操作する設定可能なツールと機能を公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
翻訳後に原文が更新されています。最新の内容は原文をご確認ください。
Kubernetes MCP Server
✨ Features | 🚀 Getting Started | 🎥 Demos | ⚙️ Configuration | 🛠️ Tools | 💬 Community | 🧑💻 Development
https://github.com/user-attachments/assets/be2b67b3-fc1c-4d11-ae46-93deba8ed98e
✨ 機能
Kubernetes と OpenShift に対応した、強力で柔軟な Kubernetes Model Context Protocol (MCP) サーバーの実装です。
- ✅ 設定:
- Kubernetes の設定変更を自動的に検出し、MCP サーバーを更新します。
- 現在の Kubernetes
.kube/configまたはクラスター内設定を表示・管理します。
- ✅ 汎用 Kubernetes リソース:あらゆる Kubernetes または OpenShift リソースに対して操作を実行します。
- 任意の CRUD 操作(作成または更新、取得、一覧表示、削除)。
- ✅ Pod:Pod 固有の操作を実行します。
- すべての名前空間または特定の名前空間の Pod を一覧表示します。
- 指定した名前空間から、名前を指定して Pod を取得します。
- 指定した名前空間から、名前を指定して Pod を削除します。
- 指定した名前空間から、名前を指定して Pod のログを表示します。
- Top は、指定した名前空間のすべての Pod または特定の Pod のリソース使用状況メトリクスを取得します。
- Pod 内でコマンドを実行します。
- コンテナーイメージを Pod で実行し、必要に応じて公開します。
- ✅ 名前空間:Kubernetes の名前空間を一覧表示します。
- ✅ イベント:すべての名前空間または特定の名前空間の Kubernetes イベントを表示します。
- ✅ プロジェクト:OpenShift プロジェクトを一覧表示します。
- ☸️ Helm:
- 現在の名前空間または指定した名前空間に Helm チャートをインストールします。
- すべての名前空間または特定の名前空間の Helm リリースを一覧表示します。
- 現在の名前空間または指定した名前空間から Helm リリースをアンインストールします。
- 🔧 Tekton:汎用 Kubernetes リソース管理を補完する、Tekton 固有の操作です。
- Pipeline:PipelineRun を作成して Tekton Pipeline を開始します。
- PipelineRun:再起動、キャンセル、トラブルシューティングを行い、PipelineRun のログを取得します。
- Task:TaskRun を作成して Tekton Task を開始します。
- TaskRun:同じ spec で TaskRun を再起動し、Pod の解決を通じて TaskRun のログを取得します。
- 🔭 オブザーバビリティ:カスタムサンプリングレートを使用する、オプションの OpenTelemetry 分散トレーシングおよびメトリクスに対応しています。リアルタイム統計情報を取得できる
/statsエンドポイントが含まれます。OTEL.md を参照してください。
他の Kubernetes MCP サーバー実装とは異なり、これは kubectl や helm のコマンドラインツールを単にラップしたものではありません。
Kubernetes API サーバーと直接通信する、Go ベースのネイティブ実装です。
システムに外部依存関係やツールをインストールする必要はありません。 ネイティブバイナリを使用する場合、システムに Node や Python をインストールする必要はありません。
- ✅ 軽量:Linux、macOS、Windows 向けの単一のネイティブバイナリとしてサーバーを配布します。
- ✅ 高パフォーマンス/低レイテンシ:外部コマンドの呼び出しや応答待ちによるオーバーヘッドなしに、Kubernetes API サーバーと直接通信します。
- ✅ マルチクラスター:複数の Kubernetes クラスターと同時に通信できます(kubeconfig ファイルで定義されているクラスター)。
- ✅ クロスプラットフォーム:Linux、macOS、Windows 向けのネイティブバイナリのほか、npm パッケージ、Python パッケージ、コンテナー/Docker イメージとして利用できます。
- ✅ 設定可能:コマンドライン引数、TOML 設定ファイル、環境変数に対応しています。
- ✅ 十分にテスト済み:さまざまな Kubernetes 環境での信頼性と正確性を確保するため、充実したテストスイートを備えています。
- 📚 ドキュメント:セットアップガイド、設定リファレンス、オブザーバビリティを含む、包括的なユーザードキュメントを用意しています。
🚀 はじめに
要件
- Kubernetes クラスターへのアクセス。
Claude Code
ユーザードキュメントにあるClaude Code 専用の入門ガイドに従ってください。
専用の ServiceAccount と読み取り専用アクセスを使用する安全な本番環境のセットアップについては、Kubernetes セットアップガイドもご確認ください。
Claude Desktop
npx を使用する
npm がインストールされている場合、Claude Desktop で kubernetes-mcp-server を使い始める最も簡単な方法です。
claude_desktop_config.json を開き、mcp サーバーを mcpServers の一覧に追加します。
{
"mcpServers": {
"kubernetes": {
"command": "npx",
"args": ["-y", "kubernetes-mcp-server@latest"]
}
}
}
VS Code / VS Code Insiders
次のリンクをクリックして、VS Code Insiders に Kubernetes MCP サーバー拡張機能をインストールします。
または、次のコマンドを実行して拡張機能を手動でインストールできます。
# For VS Code
code --add-mcp '{"name":"kubernetes","command":"npx","args":["kubernetes-mcp-server@latest"]}'
# For VS Code Insiders
code-insiders --add-mcp '{"name":"kubernetes","command":"npx","args":["kubernetes-mcp-server@latest"]}'
Cursor
次のリンクをクリックして、Cursor に Kubernetes MCP サーバー拡張機能をインストールします。
または、mcp.json ファイルを編集して、拡張機能を手動でインストールできます。
{
"mcpServers": {
"kubernetes-mcp-server": {
"command": "npx",
"args": ["-y", "kubernetes-mcp-server@latest"]
}
}
}
Goose CLI
Goose CLI は、人工知能(AI)エージェントを簡単に(しかも低コストで)使い始める方法です。
npm を使用する
npm がインストールされている場合、kubernetes-mcp-server を使い始める最も簡単な方法です。
goose の config.yaml を開き、mcp サーバーを mcpServers の一覧に追加します。
extensions:
kubernetes:
command: npx
args:
- -y
- kubernetes-mcp-server@latest
🎥 デモ
OpenShift Deployment の診断と自動修正
Kubernetes MCP サーバーを Claude Desktop から利用し、ユーザーの支援なしで OpenShift のデプロイメントを自動的に診断して修正するデモです。
https://github.com/user-attachments/assets/a576176d-a142-4c19-b9aa-a83dc4b8d941
シンプルなゲームの Vibe Coding と OpenShift へのデプロイ
このデモでは、VS Code を使ってシンプルなゲームを Vibe Coding する手順と、Podman MCP サーバーおよび Kubernetes MCP サーバーを利用して OpenShift にデプロイする方法を紹介します。
VS Code の Kubernetes MCP Server で GitHub Copilot を強化 — ワンクリックセットアップ!
このデモでは、リンクをクリックするだけで VS code に Kubernetes MCP サーバーをセットアップする方法を紹介します。
## ⚙️ 設定
Kubernetes MCP サーバーは、コマンドライン(CLI)引数を使用して設定できます。
CLI 実行ファイルは、npx、uvx を使用するか、最新リリースのバイナリをダウンロードして実行できます。
# Run the Kubernetes MCP server using npx (in case you have npm and node installed)
npx kubernetes-mcp-server@latest --help
# Run the Kubernetes MCP server using uvx (in case you have uv and python installed)
uvx kubernetes-mcp-server@latest --help
# Run the Kubernetes MCP server using the latest release binary
./kubernetes-mcp-server --help
設定オプション
| オプション | 説明 |
|---|---|
--version | バージョン情報を表示して終了します。 |
--config | メイン TOML 設定ファイルへのパスです。すべてのオプション(ポート、ツールセット、read_only、kubeconfig など)については、設定リファレンスを参照してください。 |
--config-dir | 字句順に読み込む .toml ファイルのディレクトリです。単独または --config と併用できます。省略すると、ドロップイン設定は読み込まれません。相対パスは作業ディレクトリを基準に解決されます。 |
注: 実行時設定は CLI フラグではなく、TOML(または既存の環境変数名)で指定します。フラグから TOML への対応については、設定の変更を参照してください。
TOML 設定ファイル
複雑な設定や永続的な設定には、CLI 引数の代わりに TOML 設定ファイルを使用してください。
kubernetes-mcp-server --config /etc/kubernetes-mcp-server/config.toml
設定例:
log_level = 2
read_only = true
toolsets = ["core", "config", "helm", "kubevirt"]
# Deny access to sensitive resources
[[denied_resources]]
group = ""
version = "v1"
kind = "Secret"
[telemetry]
endpoint = "http://localhost:4317"
以下を含む TOML 設定の詳しいドキュメントについては、次を参照してください。
- すべての設定オプションとそのデフォルト値
- モジュール式の設定に使用するドロップイン設定ファイル
- SIGHUP による動的な設定の再読み込み
- 機密性の高いリソースタイプへのアクセスを制限するための拒否対象リソース
- MCP ツール検索用のサーバー指示
- カスタム MCP プロンプト
- HTTP モードでの OAuth/OIDC 認証(Keycloak、Microsoft Entra ID)
**設定リファレンス**を参照してください。
📊 MCP ロギング
サーバーは MCP ロギング機能をサポートしており、クライアントは構造化されたログメッセージを通じてデバッグ情報を受け取ることができます。 Kubernetes API エラーは自動的に分類され、適切な重大度レベルでクライアントにログとして送信されます。 機密データ(トークン、キー、パスワード、クラウド認証情報)は、クライアントに送信される前に自動的にマスキングされます。
**MCP ロギングガイド**を参照してください。
🛠️ ツールと機能
Kubernetes MCP サーバーでは、toolsets 設定オプションを使って、ツールやリソース、プロンプトなどの特定のツールと機能のグループを有効または無効にできます。
これにより、AI ツールで利用できる Kubernetes の機能を制御できます。
必要なツールセットのみを有効にすると、コンテキストサイズの削減や、LLM のツール選択精度の向上につながります。
検証済みの Kubernetes エコシステムプロジェクト
以下の CNCF および Kubernetes エコシステムプロジェクトは、evals/tasks 内の
自動評価シナリオで対象となっています。ほとんどのシナリオは
core ツールセットだけで動作します。以下の専用ツールセットは任意であり、
記載されているプロジェクト固有のシナリオでのみ必要です。
| プロジェクト | 任意のツールセット | 評価シナリオ |
|---|---|---|
| Helm | helm | 3 |
| Istio | kiali | 5 |
| Kiali | kiali | 16 |
| Kubernetes | - | 32 |
| KubeVirt | kubevirt, tekton | 27 |
| NetObserv | netobserv | 4 |
| Tekton | tekton | 9 |
利用可能なツールセット
以下のツールセットを利用できます(「デフォルト」列に✓が付いているツールセットは、デフォルトで有効になっています)。
| ツールセット | 説明 | デフォルト |
|---|---|---|
| config | 現在のローカル Kubernetes 設定(kubeconfig)の表示と管理 | ✓ |
| core | Kubernetes 管理で最もよく使われるツール(Pod、汎用リソース、イベントなど) | ✓ |
| helm | Helm チャートとリリースを管理するツール | |
| kcp | kcp ワークスペースとマルチテナンシー機能の管理 | |
| kiali | Kiali の管理で最もよく使われるツールです。詳細については、Kiali のドキュメントを参照してください。 | |
| kubevirt | KubeVirt 仮想マシン管理ツールです。詳細については、KubeVirt のドキュメントを参照してください。 | |
| netobserv | NetObserv コンソールプラグイン API(フロー、メトリクス、エクスポート)を利用したネットワーク可観測性ツールです。詳細については、NetObserv のドキュメントを参照してください。 | |
| observability/logs | Loki ログをクエリするツールセット | |
| observability/metrics | Prometheus と Alertmanager のエンドポイントを効率的にクエリするツールセット | |
| observability/otelcol | スキーマ検証、コンポーネントのドキュメント、バージョン管理など、OpenTelemetry Collector の設定を支援するツールセット | |
| observability/traces | Tempo インスタンスの検出、トレースの検索と取得、トレース属性の調査を行う分散トレーシングツール | |
| tekton | Pipelines、PipelineRuns、Tasks、TaskRuns の管理とトラブルシューティングを行う Tekton パイプライン管理ツール |
ツール
マルチクラスターサポートが有効(デフォルト)で、複数のクラスターにアクセスできる場合、該当するすべてのツールに、操作で使用する Kubernetes コンテキスト(クラスター)を指定するための追加の context 引数が含まれます。
設定
-
configuration_contexts_list - kubeconfig ファイルから、使用可能なすべてのコンテキスト名と関連するサーバー URL の一覧を取得します
-
targets_list - 使用可能なすべてのターゲットの一覧を取得します
-
configuration_view - 現在の Kubernetes 設定の内容を kubeconfig YAML として取得します
minified(boolean) - 設定を簡略化したバージョンで返します。true に設定すると、設定内には current-context と、そのコンテキストに関連する設定項目のみが残ります。false に設定すると、すべてのコンテキスト、クラスター、認証情報、ユーザーが設定に含まれます。(省略可能、デフォルトは true)
コア
-
events_list - デバッグやトラブルシューティングのために、現在のクラスターのすべての名前空間から Kubernetes イベント(警告、エラー、状態の変更)の一覧を取得します
fieldSelector(string) - フィールド値でイベントを絞り込むための、省略可能な Kubernetes フィールドセレクターです(例:'type=Warning'、'involvedObject.name=my-pod')。サポートされるフィールド:involvedObject.kind、involvedObject.name、involvedObject.namespace、involvedObject.uid、involvedObject.apiVersion、involvedObject.resourceVersion、involvedObject.fieldPath、reason、reportingComponent、source、type。https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/ を参照してくださいnamespace(string) - イベントを取得する名前空間です。省略可能です。指定しない場合、すべての名前空間からイベントの一覧を取得します
-
namespaces_list - 現在のクラスターにあるすべての Kubernetes 名前空間の一覧を取得します
fieldSelector(string) - フィールド値で名前空間を絞り込むための、省略可能な Kubernetes フィールドセレクターです(例:'metadata.name=default'、'status.phase=Active')。サポートされるフィールド:metadata.name、status.phase。https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/ を参照してください
-
projects_list - 現在のクラスターにあるすべての OpenShift プロジェクトの一覧を取得します
-
nodes_log - Kubernetes ノードのログ(kubelet、kube-proxy、その他のシステムログ)を取得します。Kubernetes API プロキシを介して kubelet にアクセスし、ノードのログを取得します
name(string) (必須) - ログを取得するノードの名前query(string) (必須) - ログを取得するサービスまたはファイルを指定します(必須)。例:kubelet のログを取得するには "kubelet"、ノードから特定のログファイルを取得するには "/"(例:"/var/log/kubelet.log" または "/var/log/kube-proxy.log")tailLines(integer) - ログ末尾から取得する行数です(省略可能、0 はすべてのログを意味します)
-
nodes_stats_summary - kubelet の Summary API を介して、Kubernetes ノードの詳細なリソース使用統計を取得します。ノード、ポッド、コンテナーの各レベルにおける CPU、メモリ、ファイルシステム、ネットワークの使用量など、包括的なメトリクスを提供します。cgroup v2 とカーネル 4.20 以降を使用するシステムでは、CPU、メモリ、I/O のリソース圧迫を示す PSI(Pressure Stall Information)メトリクスも含まれます。PSI メトリクスの詳細については、https://kubernetes.io/docs/reference/instrumentation/understand-psi-metrics/ を参照してください
name(string) (必須) - 統計を取得するノードの名前
-
nodes_top - 指定した Kubernetes ノード、またはクラスター内のすべてのノードについて、Kubernetes Metrics Server が記録したリソース消費量(CPU とメモリ)の一覧を取得します
label_selector(string) - ラベルでノードを絞り込むための Kubernetes ラベルセレクターです(例:'node-role.kubernetes.io/worker=')。省略可能で、name が指定されていない場合にのみ適用されますname(string) - リソース消費量を取得するノードの名前です(省略可能。指定しない場合はすべてのノードが対象です)
-
pods_list_in_namespace - 現在のクラスターにある、指定した名前空間内のすべての Kubernetes Pod を一覧表示します
fieldSelector(string) - Pod をフィールド値で絞り込むための任意の Kubernetes フィールドセレクターです(例:'status.phase=Running'、'spec.nodeName=node1')。サポートされているフィールド:metadata.name、metadata.namespace、spec.nodeName、spec.restartPolicy、spec.schedulerName、spec.serviceAccountName、status.phase(Pending/Running/Succeeded/Failed/Unknown)、status.podIP、status.nominatedNodeName。注:CrashLoopBackOff はコンテナーの状態であり、Pod のフェーズではないため、直接絞り込むことはできません。https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/ を参照してください。labelSelector(string) - 任意の Kubernetes ラベルセレクターです(例:'app=myapp,env=prod'、'app in (myapp,yourapp)')。ラベルで Pod を絞り込みたい場合に使用しますnamespace(string) (required) - Pod を一覧表示する名前空間
-
pods_get - 現在の名前空間または指定した名前空間から、指定した名前の Kubernetes Pod を取得します
name(string) (required) - Pod の名前namespace(string) - Pod を取得する名前空間
-
pods_delete - 現在の名前空間または指定した名前空間から、指定した名前の Kubernetes Pod を削除します
name(string) (required) - 削除する Pod の名前namespace(string) - Pod を削除する名前空間
-
pods_top - すべての名前空間、指定した名前空間、または現在の名前空間にある、指定した Kubernetes Pod のリソース消費量(CPU とメモリ)を Kubernetes Metrics Server の記録に基づいて一覧表示します
all_namespaces(boolean) - true の場合、すべての名前空間にあるすべての Pod のリソース消費量を一覧表示します。false の場合、指定した名前空間または現在の名前空間にある Pod のリソース消費量を一覧表示しますlabel_selector(string) - Kubernetes ラベルセレクターです(例:'app=myapp,env=prod'、'app in (myapp,yourapp)')。ラベルで Pod を絞り込みたい場合に使用します(任意。name が指定されていない場合のみ適用されます)name(string) - リソース消費量を取得する Pod の名前(任意。指定しない場合は名前空間内のすべての Pod)namespace(string) - Pod のリソース消費量を取得する名前空間(任意。指定しない場合は現在の名前空間。all_namespaces が false の場合)
-
pods_exec - 現在の名前空間または指定した名前空間にある、指定した名前の Kubernetes Pod 内で、指定したコマンドを実行します(シェルアクセス、コンテナー内でのコマンド実行)
command(array) (required) - Pod コンテナー内で実行するコマンドです。最初の項目は実行するコマンドで、残りはそのコマンドへの引数です。例:["ls", "-l", "/tmp"]container(string) - コマンドを実行する Pod コンテナーの名前(任意)name(string) (required) - コマンドを実行する Pod の名前namespace(string) - コマンドを実行する Pod の名前空間
-
pods_log - 現在の、または指定した名前空間にある、指定した名前の Kubernetes Pod のログを取得します
container(string) - ログを取得する Pod コンテナーの名前(省略可能)name(string) (required) - ログを取得する Pod の名前namespace(string) - Pod のログを取得する名前空間previous(boolean) - 前回終了したコンテナーのログを返します(省略可能)tail(integer) - ログの末尾から取得する行数(省略可能。デフォルト:100)
-
pods_run - 現在の、または指定した名前空間で、指定したコンテナーイメージを使用して Kubernetes Pod を実行します。名前は省略可能です
image(string) (required) - Pod で実行するコンテナーイメージname(string) - Pod の名前(省略可能。指定しない場合はランダムな名前)namespace(string) - Pod を実行する名前空間port(number) - Pod コンテナーから公開する TCP/IP ポート(省略可能。指定しない場合はポートを公開しません)
-
resources_list - apiVersion と kind を指定して、現在のクラスター内の Kubernetes リソースおよびオブジェクトを一覧表示します。名前空間とラベルセレクターも指定できます (一般的な apiVersion と kind の例:v1 Pod、v1 Service、v1 Node、apps/v1 Deployment、networking.k8s.io/v1 Ingress、route.openshift.io/v1 Route)
apiVersion(string) (required) - リソースの apiVersion(有効な apiVersion の例:v1、apps/v1、networking.k8s.io/v1)fieldSelector(string) - フィールド値でリソースをフィルタリングするための Kubernetes フィールドセレクター(省略可能。例:'status.phase=Running'、'metadata.name=myresource')。サポートされるフィールドはリソースの種類によって異なります。Pod の場合:metadata.name、metadata.namespace、spec.nodeName、spec.restartPolicy、spec.schedulerName、spec.serviceAccountName、status.phase(Pending/Running/Succeeded/Failed/Unknown)、status.podIP、status.nominatedNodeName。https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/ を参照してくださいkind(string) (required) - リソースの kind(有効な kind の例:Pod、Service、Deployment、Ingress)labelSelector(string) - Kubernetes ラベルセレクター(省略可能。例:'app=myapp,env=prod' または 'app in (myapp,yourapp)')。ラベルでリソースをフィルタリングする場合に使用しますnamespace(string) - 名前空間に属するリソースを取得するための名前空間(省略可能。クラスター範囲のリソースの場合は無視されます)。指定しない場合は、すべての名前空間のリソースを一覧表示します
-
resources_get - apiVersion、kind、リソース名、および必要に応じて名前空間を指定して、現在のクラスター内の Kubernetes リソースを取得します (一般的な apiVersion と kind の例:v1 Pod、v1 Service、v1 Node、apps/v1 Deployment、networking.k8s.io/v1 Ingress、route.openshift.io/v1 Route)
apiVersion(string) (required) - リソースの apiVersion(有効な apiVersion の例:v1、apps/v1、networking.k8s.io/v1)kind(string) (required) - リソースの kind(有効な kind の例:Pod、Service、Deployment、Ingress)name(string) (required) - リソースの名前namespace(string) - 名前空間に属するリソースを取得するための名前空間(省略可能。クラスター範囲のリソースの場合は無視されます)。指定しない場合は、設定済みの名前空間からリソースを取得します
-
resources_create_or_update - Server-Side Apply を使用して Kubernetes リソースを作成または更新します。マニフェストには、必要な状態をすべて記述してください。このツールが以前に設定したフィールドが新しいマニフェストに含まれていない場合、そのフィールドは削除されます。既存のリソースを編集するには、resources_get で取得して変更した後、リソース全体を再適用してください (一般的な apiVersion と kind の例:v1 Pod、v1 Service、v1 Node、apps/v1 Deployment、networking.k8s.io/v1 Ingress、route.openshift.io/v1 Route)
resource(string) (required) - Kubernetes リソースを完全に表す YAML または JSON(部分的なパッチではなく、必要な状態全体)。apiVersion、kind、metadata、および完全な spec を含めてください
-
resources_delete - apiVersion、kind、任意の namespace、および名前を指定して、現在のクラスター内の Kubernetes リソースを削除します (一般的な apiVersion と kind の組み合わせには、v1 Pod、v1 Service、v1 Node、apps/v1 Deployment、networking.k8s.io/v1 Ingress、route.openshift.io/v1 Route があります)
apiVersion(string) (required) - リソースの apiVersion(有効な apiVersion の例:v1、apps/v1、networking.k8s.io/v1)gracePeriodSeconds(integer) - オブジェクトが削除されるまでの秒数(任意)。0 以上の整数を指定する必要があります。値が 0 の場合は、ただちに削除されます。この値が nil の場合は、指定された種類のデフォルトの猶予期間が使用されますkind(string) (required) - リソースの kind(有効な kind の例:Pod、Service、Deployment、Ingress)name(string) (required) - リソースの名前namespace(string) - namespaced リソースを削除する Namespace(任意。クラスター スコープのリソースでは無視されます)。指定しない場合は、設定済みの namespace からリソースを削除します
-
resources_scale - apiVersion、kind、名前、および任意の namespace を指定して、現在のクラスター内の Kubernetes リソースのスケールを取得または更新します。ツール呼び出しでスケールが設定されている場合、その値に更新されます。リソースの現在のスケールを常に返します
apiVersion(string) (required) - リソースの apiVersion(有効な apiVersion の例:apps/v1)kind(string) (required) - リソースの kind(有効な kind の例:StatefulSet、Deployment)name(string) (required) - リソースの名前namespace(string) - namespaced リソースのスケールを取得/更新する Namespace(任意。クラスター スコープのリソースでは無視されます)。指定しない場合は、設定済みの namespace からリソースのスケールを取得/更新しますscale(integer) - リソースのスケールを更新する値(任意)。指定しない場合は、リソースの現在のスケールを返し、更新は行いません
helm
-
helm_install - Helm チャートをインストール(デプロイ)して、現在または指定した namespace にリリースを作成します
chart(string) (required) - インストールするチャートの参照(例:stable/grafana、oci://ghcr.io/nginxinc/charts/nginx-ingress)name(string) - Helm リリースの名前(任意。指定しない場合はランダムな名前)namespace(string) - Helm チャートをインストールする Namespace(任意。指定しない場合は現在の namespace)values(object) - Helm チャートに渡す Values(任意)
-
helm_list - 現在または指定した namespace 内のすべての Helm リリースを一覧表示します(指定した場合は、すべての namespace が対象です)
all_namespaces(boolean) - true の場合、namespace 引数を無視して、すべての namespace 内の Helm リリースを一覧表示します(任意)namespace(string) - Helm リリースを一覧表示する Namespace(任意。指定しない場合は、すべての namespace が対象です)
-
helm_uninstall - 現在または指定した namespace 内の Helm リリースをアンインストールします
name(string) (required) - アンインストールする Helm リリースの名前namespace(string) - Helm リリースをアンインストールする Namespace(任意。指定しない場合は現在の namespace)
kcp
-
kcp_workspaces_list - 現在のクラスター内で利用可能なすべての kcp ワークスペースを一覧表示します
-
kcp_workspace_describe - 特定の kcp ワークスペースの詳細情報を取得します
workspace(string) (required) - 詳細を表示するワークスペースの名前またはパス
kiali
- **kiali_get_mesh_traffic_graph** - 指定した名前空間のサービス間トラフィックのトポロジー、依存関係、ネットワークメトリクス(スループット、応答時間、mTLS)を返します。ルーティングの問題やレイテンシーを診断したり、上流/下流の依存関係を調べたりする際に使用します。 - `graphType` (`string`) - グラフの粒度です。'app' はアプリ名ごとに集約し、'versionedApp' はバージョンごとに分け、'workload' は特定のポッド/デプロイメントを表示します。デフォルト:versionedApp。 - `meshCluster` (`string`) - kiali_list_mesh_clusters の任意の Istio メッシュクラスター名です(例:west)。省略すると、Kiali はホームクラスターをデフォルトで使用します。 - `namespaces` (`string`) **(required)** - マッピングする名前空間をカンマ区切りで指定します。-
kiali_get_mesh_status - Istio サービスメッシュの全体的な健全性、トポロジー、環境の詳細を取得します。マルチクラスターのコントロールプレーンの状態(istiod)、データプレーンの名前空間の健全性(アンビエントメッシュの状態を含む)、オブザーバビリティスタックの健全性(Prometheus、Grafana など)、コンポーネントの接続性を返します。メッシュ全体の問題を診断する際の最初のステップとして、Istio/Kiali のバージョンを確認する際、または特定のワークロードを詳しく調べる前に全体的な健全性を確認する際に使用します。
-
kiali_manage_istio_config_read - Istio、Gateway API、Inference API の設定を読み取ります。'list' は namespace→'group/version/kind'→{valid:[...],invalid:[...]} の形式でグループ化します。valid/invalid 配列にはリソース名が含まれます。group/kind を省略すると、1 回の呼び出しですべての設定タイプを取得できます。インストールされている場合は、Istio(networking.istio.io、security.istio.io)、Gateway API(gateway.networking.k8s.io)、Inference API(inference.networking.k8s.io)をサポートします。'get' は完全な YAML を返します。書き込みには manage_istio_config を使用してください。
action(string) (required) - 実行するアクション(読み取り専用)です。group(string) - Istio オブジェクトの API グループです。'get' アクションでのみ必須です。'list' では group と kind を省略すると、1 回の呼び出しですべての設定タイプを取得できます。Gateway API リソースには 'gateway.networking.k8s.io' を使用します。Inference API リソースには 'inference.networking.k8s.io' を使用します。kind(string) - Istio オブジェクトの kind です。'get' アクションでのみ必須です。'list' では省略すると、すべての kind を一度に返します。kind ごとに個別に呼び出さないでください。meshCluster(string) - kiali_list_mesh_clusters の任意の Istio メッシュクラスター名です(例:west)。省略すると、Kiali はホームクラスターをデフォルトで使用します。namespace(string) - Istio オブジェクトを含む名前空間です。'list' で指定しない場合、すべての名前空間のオブジェクトを返します。'get' では必須です。object(string) - Istio オブジェクトの名前です。'get' アクションで必須です。serviceName(string) - 特定のサービスに影響する Istio 設定(VirtualServices、DestinationRules、およびそれらが参照する Gateways)を絞り込みます。'list' アクションでのみ適用されます。version(string) - API バージョンです。すべてのリソースタイプで 'v1' を使用します。'get' アクションで必須です。
-
kiali_manage_istio_config - Istio、Gateway API、Inference API の設定を作成、パッチ、または削除します。Istio リソース(networking.istio.io、security.istio.io)、Gateway API リソース(gateway.networking.k8s.io)、およびクラスターにインストールされている場合は Inference API リソース(inference.networking.k8s.io)をサポートします。読み取り専用の list と get には manage_istio_config_read を使用してください。
action(string) (required) - 実行するアクション(書き込み)data(string) - リソースの JSON または YAML データです。create と patch のアクションでは必須です。create では、部分的な内容(例:spec のみ)を指定できます。有効なテンプレートにデフォルト値を適用してマージされます。配列(servers、http など)は全体が置き換えられるため、必要な要素をすべて含めてください。group(string) (required) - Istio オブジェクトの API グループです。Gateway API リソースには 'gateway.networking.k8s.io' を使用してください。Inference API リソースには 'inference.networking.k8s.io' を使用してください。kind(string) (required) - Istio オブジェクトの種類です(例:'VirtualService'、'DestinationRule')。meshCluster(string) - kiali_list_mesh_clusters で取得した Istio メッシュクラスター名を指定します(例:west)。省略した場合、Kiali はホームクラスターをデフォルトとして使用します。namespace(string) (required) - Istio オブジェクトが含まれる名前空間です。object(string) (required) - Istio オブジェクトの名前です。version(string) (required) - API バージョンです。すべてのリソースタイプで 'v1' を使用してください。
-
kiali_list_mesh_clusters - Kiali がアクセスできる Istio メッシュクラスターの一覧を返します。各エントリにはクラスター名と、そのクラスターがホームクラスター(Kiali がデプロイされているクラスター)かどうかが含まれます。対象クラスターが不明な場合は、他の Kiali ツールで meshCluster を使用する前にこのツールを呼び出してください。
-
kiali_get_resource_details - リソースの一覧を取得するか、特定のリソースの詳細データを取得します。'resourceName' を省略すると一覧を返します。'resourceName' を指定すると、そのリソースの詳細を返します。
meshCluster(string) - kiali_list_mesh_clusters で取得した Istio メッシュクラスター名を指定します(例:west)。省略した場合、Kiali はホームクラスターをデフォルトとして使用します。namespaces(string) - クエリ対象の名前空間をコンマ区切りで指定します(例:'bookinfo' または 'bookinfo,default')。省略した場合、アクセス可能なすべての名前空間が対象になります。resourceName(string) - 任意。リソースの名前です。空のままにすると、指定した種類のすべてのリソースの一覧を返します。指定すると、そのリソースの詳細を返します。resourceType(string) (required) - クエリ対象のリソースの種類です。Kiali アプリケーション(Kubernetes の 'app' ラベルでグループ化)には 'app' を使用してください。ArgoCD Application CRD には 'argoapp' を使用してください(ArgoCD がインストールされており、Kiali サービスアカウントに applications.argoproj.io の読み取り権限が必要です)。
-
kiali_list_traces - 名前空間内のサービスの分散トレース一覧を取得します。サマリー(namespace、service、total_found、avg_duration_ms)と、id、duration_ms、spans_count、root_op、slowest_service、has_errors を含むトレース一覧を返します。トレースの全階層を取得するには、トレース ID を指定して get_trace_details を使用してください。
errorOnly(boolean) - true の場合、エラーを含むトレースのみを対象にします。デフォルトは false です。limit(integer) - 返すトレースの最大数です。デフォルトは 10 です。lookbackSeconds(integer) - 検索する過去の期間(秒)です。デフォルトは 600(10m)です。meshCluster(string) - kiali_list_mesh_clusters で取得した Istio メッシュクラスター名を指定します(例:west)。省略した場合、Kiali はホームクラスターをデフォルトとして使用します。namespace(string) (required) - サービスの Kubernetes 名前空間です。serviceName(string) (required) - トレースを検索するサービス名です(必須)。limit で指定した数まで複数のトレースを返します。
-
kiali_get_trace_details - trace_id で単一の分散トレースを取得し、呼び出し階層(サービスツリーと、所要時間、ステータス、ネストされた呼び出し)を返します。特定のトレースを詳しく調べるには、list_traces の後に使用します。
traceId(string) (required) - 取得して要約するトレース ID です。指定した場合、namespace/service_name は無視されます。
-
kiali_get_pod_performance - 現在の Pod の CPU/メモリ使用量(Prometheus から取得)を Kubernetes のリクエスト/制限(Pod の仕様から取得)と比較し、読みやすいテキスト形式で要約して返します。「このワークロードはメモリを使いすぎていますか?」といった質問への回答に役立ちます。
meshCluster(string) - 省略可能です。kiali_list_mesh_clusters で取得した Istio メッシュクラスター名です(例:west)。省略すると、Kiali はホームクラスターをデフォルトで使用します。namespace(string) (required) - Pod の Kubernetes 名前空間です。podName(string) - Kubernetes Pod 名です。workloadName が指定されている場合、ツールはまずそのワークロードから Pod を解決しようとします。queryTime(string) - 省略可能なクエリの終了タイムスタンプ(RFC3339)です。デフォルトは現在時刻です。timeRange(string) - CPU レートの計算に使用する時間範囲です('5m'、'10m'、'1h'、'1d' などの Prometheus 形式)。デフォルトは '10m' です。workloadName(string) - Kubernetes のワークロード名です(例:Deployment/StatefulSet など)。ツールはワークロードを検索し、その Pod のいずれかを選択します。見つからない場合は、この値を podName として扱います。
-
kiali_get_logs - 名前空間内の Kubernetes Pod(または Pod に解決されるワークロード名)のログを取得します。出力はプレーンテキストで、kubernetes-mcp-server の pods_log と同じ形式です。line_count フィールドは、返されたログ行の総数を示します。すべての行を分析してください。ただし、ユーザーが生の出力を明示的に求めない限り、結果は要約してください。エラー行や警告行を省略しないでください。
container(string) - 省略可能です。ログを取得する Pod コンテナーの名前です。format(string) - チャットでの出力形式です。'codeblock' はログを ~~~ フェンスで囲みます(推奨)。'plain' は kubernetes-mcp-server の pods_log と同様に、生のテキストを返します。meshCluster(string) - 省略可能です。kiali_list_mesh_clusters で取得した Istio メッシュクラスター名です(例:west)。省略すると、Kiali はホームクラスターをデフォルトで使用します。name(string) (required) - ログを取得する Pod の名前です。存在しない場合はワークロード名として扱われ、実行中の Pod が選択されます。namespace(string) (required) - Pod のログを取得する名前空間です。previous(boolean) - 省略可能です。前回終了したコンテナーのログを返します。severity(string) - 省略可能な重要度フィルターで、クライアント側で適用されます。'ERROR'、'WARN'、または 'ERROR,WARN' のような組み合わせを指定できます。tail(integer) - ログ末尾から取得する行数です(省略可能、デフォルトは 50)。200 行を超える値は指定できません。workload(string) - 省略可能です。ワークロード名の上書きに使用します(name の検索に失敗した場合に使用されます)。
-
kiali_get_metrics - 指定したリソースの Istio メトリクス(レイテンシの分位点、トラフィックの傾向、スループット、ペイロードサイズ)の簡潔な JSON サマリーを返します。
byLabels(string) - メトリクスをグループ化するラベルのカンマ区切りリスト(例:'source_workload,destination_service')。任意direction(string) - トラフィックの方向。任意。デフォルトは 'outbound' ですmeshCluster(string) - kiali_list_mesh_clusters で指定する任意の Istio メッシュクラスター名(例:west)。省略した場合、Kiali はデフォルトでホームクラスターを使用しますnamespace(string) (required) - メトリクスの取得元の名前空間quantiles(string) - ヒストグラムメトリクスの分位点のカンマ区切りリスト(例:'0.5,0.95,0.99')。任意rateInterval(string) - メトリクスのレート間隔(例:'1m'、'5m')。任意。デフォルトは '10m' ですreporter(string) - メトリクスレポーター。'source'、'destination'、'waypoint' のカンマ区切りリスト、または特別な値 'both'(レポーターでフィルタリングしない)を指定します。任意。デフォルトは 'source' です。例:'source,waypoint'requestProtocol(string) - リクエストプロトコルでフィルタリングします(例:'http'、'grpc'、'tcp')。任意resourceName(string) (required) - メトリクスを取得するリソースの名前resourceType(string) (required) - メトリクスを取得するリソースの種類step(string) - データポイント間の間隔(秒)(例:'15')。任意。デフォルトは15秒です
kubevirt
-
vm_clone - VirtualMachineClone リソースを作成して、KubeVirt 上の VirtualMachine を複製します。KubeVirt Clone API を使用して、ソース VM のコピーを新しい名前で作成します
name(string) (required) - 複製するソース仮想マシンの名前namespace(string) (required) - ソース仮想マシンの名前空間targetName(string) (required) - 複製した新しい仮想マシンの名前
-
vm_console_screenshot - KubeVirt 上の VirtualMachine のグラフィカル(VNC)コンソールを PNG 画像としてキャプチャします。VM の画面に現在表示されている内容(ファームウェア、ブートローダー、ログインプロンプトなど)を確認するために使用します。読み取り専用であり、ゲストに入力を送信することはありません。
name(string) (required) - 仮想マシンの名前namespace(string) (required) - 仮想マシンの名前空間
-
vm_create - 指定された構成で KubeVirt 上に VirtualMachine を作成し、インスタンスタイプ、設定、コンテナーディスクイメージを自動的に解決します。VM はデフォルトで停止状態で作成されます。すぐに起動するには、autostart パラメーターを使用してください。
autostart(boolean) - 作成後に VM を自動的に起動するための任意のフラグです(runStrategy を Halted ではなく Always に設定します)。デフォルトは false です。instancetype(string) - VM の任意のインスタンスタイプ名です(例:'u1.small'、'u1.medium'、'u1.large')name(string) (required) - 仮想マシンの名前namespace(string) (required) - 仮想マシンのネームスペースnetworks(array) - VM に接続する任意のセカンダリネットワークインターフェースです。各項目で、接続する Multus NetworkAttachmentDefinition を指定します。単純な文字列(NetworkAttachmentDefinition 名)または、'name'(VM 内のインターフェース名)と 'networkName'(NetworkAttachmentDefinition 名)のプロパティを持つオブジェクトを指定できます。各ネットワークにより、VM 上にブリッジインターフェースが作成されます。performance(string) - VM のインスタンスタイプに対する任意のパフォーマンスファミリーのヒントです(例:汎用の場合は 'u1'、オーバーコミットの場合は 'o1'、コンピューティング最適化の場合は 'c1'、メモリ最適化の場合は 'm1')。指定しない場合は、デフォルトで 'u1'(汎用)になります。preference(string) - VM の任意の設定名ですsize(string) - VM の任意のワークロードサイズのヒントです(例:'small'、'medium'、'large'、'xlarge')。明示的に指定されていない場合、適切なインスタンスタイプの自動選択に使用されます。storage(string) - DataSources を使用する場合の、VM のルートディスクの任意のストレージサイズです(例:'30Gi'、'50Gi'、'100Gi')。デフォルトは 30Gi です。コンテナーディスクを使用する場合は無視されます。workload(string) - VM のワークロードです。OS 名(例:'fedora'(デフォルト)、'ubuntu'、'centos'、'centos-stream'、'debian'、'rhel'、'opensuse'、'opensuse-tumbleweed'、'opensuse-leap')または完全なコンテナーディスクイメージ URL を指定できます
-
vm_guest_info - VirtualMachine の QEMU ゲストエージェントからゲスト OS の情報を取得します。VM 内にゲストエージェントがインストールされ、実行中である必要があります。OS、ファイルシステム、ネットワークインターフェース、ログインユーザーに関する詳細情報を提供します。
info_type(string) - 取得する情報の種類です:'all'(デフォルト。利用可能なすべての情報)、'os'(オペレーティングシステムの詳細)、'filesystem'(ディスクとファイルシステムの情報)、'users'(ログインユーザー)、'network'(ネットワークインターフェースと IP)name(string) (required) - 仮想マシンの名前namespace(string) (required) - 仮想マシンのネームスペース
-
vm_lifecycle - KubeVirt VirtualMachine のライフサイクルを管理します:VM の起動、停止、再起動、一時停止、または一時停止解除
action(string) (required) - 実行するライフサイクルアクションです:'start'(runStrategy を Always に変更)、'stop'(runStrategy を Halted に変更)、'restart'(VM を停止してから起動)、'pause'(実行中の VMI をその場で一時停止)、または 'unpause'(一時停止中の VMI を再開)name(string) (required) - 仮想マシンの名前namespace(string) (required) - 仮想マシンのネームスペース
-
vm_create_from_template - KubeVirt 上で VirtualMachineTemplate (virt-template) から VirtualMachine を作成します。テンプレートをサーバー側で処理してパラメーター (必須値、デフォルト値、パスワードなどの自動生成値) を置換し、その結果得られた VirtualMachine を同じ namespace に作成します。namespace をまたいだテンプレートの使用はサポートされていません。
namespace(string) (required) - VirtualMachineTemplate および作成される VirtualMachine の namespace (同じである必要があります)parameters(object) - テンプレート内で置換するパラメーター値。キーはパラメーター名 (例: VM_NAME)、値は文字列です。必須パラメーターは指定する必要があります。省略可能なパラメーターは省略した場合デフォルト値が使用されます。generate/from を持つパラメーターは、指定しない場合は自動生成されます。template_name(string) (required) - VM の作成元となる VirtualMachineTemplate の名前
-
vm_troubleshoot - 自動根本原因検出により KubeVirt VirtualMachine の問題を診断します。VM ステータス、VMI ステータス、ボリューム、DataVolume/PVC の状態、cloud-init 設定、Pod の状態、ログ、イベントを収集し、ヒューリスティックなチェックを実行して具体的な問題を特定し、修正案を提示します。CRITICAL/WARNING の検出事項を含む「Detected Issues」セクションと実行可能な修復手順を返し、その後に生の診断データが続きます。ユーザーが、VM が起動しない、Provisioning でスタックしている、クラッシュループしている、マイグレーションに失敗する、または予期しない動作をしている理由を尋ねた場合は、必ずこのツールを最初に使用してください。以下を自動検出します: StorageClass の欠落、無効な PVC 仕様、危険な cloud-init コマンド (shutdown/halt)、nodeSelector によるマイグレーションのブロック、失敗したマイグレーション、Pod のクラッシュループ。ユーザーが問題の修正または修復を求めた場合は、レポートの Suggested Fixes を vm_lifecycle (restart) または resources_create_or_update とともに使用してください。
name(string) (required) - トラブルシューティング対象の VirtualMachine の名前namespace(string) (required) - トラブルシューティング対象の VirtualMachine の namespace
netobserv
- netobserv_list_flows - Loki から NetObserv のネットワークフローレコードを一覧表示します。namespace または時間枠内でワークロード、IP、ポート、プロトコル間のトラフィックを調査するときに使用します。
endTime(integer) - 時間範囲の終了を Unix エポック秒で指定します。デフォルトは現在時刻です。filters(string) - コンソールプラグインに渡す NetObserv フィルター式 (プレーンテキスト。クライアントが URL エンコードします)。
構文:
- key=value — 完全一致、key=a,b — 同じキーに対する複数値の OR
- key~pattern — 正規表現 / 含む一致、key!~pattern — 正規表現の否定
- key!=value — 等しくない、key>number — 数値の以上 (例: Bytes>1000)
- グループ内の AND: & (例: SrcK8S_Namespace=default&Proto=6)
- グループ間の OR: | (例: SrcK8S_Name=pod-a|SrcK8S_Name=pod-b)
namespace スコープには、可能な場合は専用の「namespace」パラメーターを優先してください。 フィルター値を見つけるには、Kubernetes のリスト取得ツール (namespaces、pods、deployments など) を使用してください。
一般的な Kubernetes フィールド (Src/Dst プレフィックスは互いに鏡映関係にあります):
- SrcK8S_Namespace、DstK8S_Namespace、SrcK8S_Name、DstK8S_Name
- SrcK8S_Type、DstK8S_Type (例: Pod、Service、Node)
- SrcK8S_OwnerName、DstK8S_OwnerName、SrcK8S_OwnerType、DstK8S_OwnerType (Deployment、StatefulSet など向け)
- SrcK8S_HostName、DstK8S_HostName、SrcK8S_Zone、DstK8S_Zone、K8S_ClusterName、UDN
ネットワークとフロー:
- SrcAddr、DstAddr (IP)、SrcPort、DstPort、Proto (IANA 番号、例: 6=TCP、17=UDP)
- FlowDirection (0=Ingress、1=Egress、2=Inner)、Bytes、Packets、Dscp、Flags
パケットドロップ (多くの場合 recordType flowLog および packetLoss dropped/hasDrops を伴います):
- PktDropPackets、PktDropBytes、PktDropLatestState、PktDropLatestDropCause
DNS:
-
DnsName、DnsId、DnsLatencyMs、DnsErrno、DnsFlagsResponseCode 例:
-
SrcK8S_Namespace=openshift-netobserv&SrcK8S_Name~my-app
-
Proto=6&DstPort=443
-
SrcK8S_Name=pod-a|SrcK8S_Name=pod-b
limit(integer) - 返すフローレコードの最大数です。デフォルトは100です。namespace(string) - 送信元または宛先の名前空間が一致するフローに結果を限定します(dev スコープの Loki テナント)。packetLoss(string) - パケット損失フィルターです。recordType(string) - フローレコードタイプのフィルターです。startTime(integer) - 時間範囲の開始時刻を Unix エポック秒で指定します。設定されている場合は timeRange を上書きします。timeRange(integer) - startTime を省略した場合の遡る時間を秒単位で指定します。デフォルトは300です。
-
netobserv_export_flows - list_flows と同じフィルターを使用して、NetObserv のフローレコードを CSV としてエクスポートします。監査やオフライン分析のために、ダウンロード可能なフローデータが必要な場合に使用します。
columns(string) - 含める列名をカンマ区切りで指定します(例:SrcK8S_Namespace,DstK8S_Namespace,Bytes)。省略すると、結果に含まれるすべての列をエクスポートします。endTime(integer) - 時間範囲の終了時刻を Unix エポック秒で指定します。デフォルトは現在時刻です。filters(string) - コンソールプラグインに渡す NetObserv フィルター式です(プレーンテキスト。クライアントが URL エンコードします)。
構文:
- key=value — 完全一致。key=a,b — 同じキーに対する複数の値の OR 条件
- key~pattern — 正規表現/部分一致。key!~pattern — 正規表現に一致しない
- key!=value — 等しくない。key>number — 数値が以上(例:Bytes>1000)
- グループ内の AND 条件:&(例:SrcK8S_Namespace=default&Proto=6)
- グループ間の OR 条件:|(例:SrcK8S_Name=pod-a|SrcK8S_Name=pod-b)
可能な場合は、名前空間の範囲指定には専用の「namespace」パラメーターを優先してください。 フィルター値を確認するには、Kubernetes のリストツール(namespaces、pods、deployments など)を使用してください。
一般的な Kubernetes フィールド(Src/Dst の接頭辞は相互に対応します):
- SrcK8S_Namespace, DstK8S_Namespace, SrcK8S_Name, DstK8S_Name
- SrcK8S_Type, DstK8S_Type(例:Pod、Service、Node)
- SrcK8S_OwnerName, DstK8S_OwnerName, SrcK8S_OwnerType, DstK8S_OwnerType(Deployment、StatefulSet など)
- SrcK8S_HostName, DstK8S_HostName, SrcK8S_Zone, DstK8S_Zone, K8S_ClusterName, UDN
ネットワークとフロー:
- SrcAddr, DstAddr(IP)、SrcPort, DstPort, Proto(IANA 番号。例:6=TCP、17=UDP)
- FlowDirection(0=Ingress、1=Egress、2=Inner)、Bytes、Packets、Dscp、Flags
パケットドロップ(多くの場合、recordType は flowLog、packetLoss は dropped/hasDrops):
- PktDropPackets, PktDropBytes, PktDropLatestState, PktDropLatestDropCause
DNS:
- DnsName, DnsId, DnsLatencyMs, DnsErrno, DnsFlagsResponseCode
例:
-
SrcK8S_Namespace=openshift-netobserv&SrcK8S_Name~my-app
-
Proto=6&DstPort=443
-
SrcK8S_Name=pod-a|SrcK8S_Name=pod-b
format(string) - エクスポート形式です。csv のみサポートされています。limit(integer) - 返すフローレコードの最大数です。デフォルトは100です。namespace(string) - 送信元または宛先の名前空間が一致するフローに結果を限定します(dev スコープの Loki テナント)。packetLoss(string) - パケット損失フィルターです。recordType(string) - フローレコードタイプのフィルターです。startTime(integer) - 時間範囲の開始時刻を Unix エポック秒で指定します。設定されている場合は timeRange を上書きします。timeRange(integer) - startTime を省略した場合の遡る時間を秒単位で指定します。デフォルトは300です。
-
netobserv_get_flow_metrics - NetObserv の集計済みフローメトリクスを、トポロジーまたは時系列データとして返します。スループット、TLS/DNS/ドロップの内訳、名前空間やワークロードのトラフィック分析に使用します。グループ化オプションについては aggregateBy と groups を参照してください。
aggregateBy(string) (required) - netobserv_get_flow_metrics(コンソールプラグイン /api/flow/metrics)の主ディメンションです。
2つの形式(正確な表記を使用してください):
- トポロジーのスコープ — グラフ/トポロジービュー用のエンドポイントを集約します:
- app — アプリケーションのワークロード(ポッド/サービス)。インフラストラクチャのトラフィックは除外されます
- namespace — Kubernetes の名前空間(デフォルト)
- owner — コントローラーのオーナー(Deployment、StatefulSet、…)
- resource — ポッド、サービス、またはノード(ワークロードの最小粒度)
- host — ノード名
- zone — アベイラビリティーゾーン
- cluster — クラスター名(マルチクラスター)
- network — ユーザー定義/セカンダリーネットワーク名
- フローレコードのフィールド — 単一のフロー属性(PascalCase のフィールド名)でグループ化します。 内訳チャート(TLS、DNS、ドロップ、プロトコル)に使用します。フィールド名はフィルター/フローログと一致します。
TLS(FlowCollector で TLS トラッキングを有効にする必要があります):
- TLSVersion, TLSCipherSuite, TLSGroup, TLSTypes
DNS:
- DnsName, DnsFlagsResponseCode, DnsErrno
パケットドロップ:
- PktDropLatestState, PktDropLatestDropCause
ネットワーク/K8s(単一側の内訳。src/dst のフィルターと組み合わせます):
- Proto, SrcPort, DstPort, FlowDirection, Dscp
- SrcK8S_Namespace, DstK8S_Namespace, SrcK8S_Name, DstK8S_Name
- SrcK8S_Type, DstK8S_Type, SrcK8S_OwnerName, DstK8S_OwnerName
- SrcK8S_HostName, DstK8S_HostName, SrcK8S_Zone, DstK8S_Zone
- K8S_ClusterName, SrcK8S_NetworkName, DstK8S_NetworkName
aggregateBy は type および function と組み合わせます:
- スループット:type=Bytes または Packets、function=rate
- フロー数:type=Flows、function=count または rate
- DNS ボリューム:type=DnsFlows、function=count
- DNS レイテンシー:type=DnsLatencyMs、function=avg、p90、または max
- RTT:type=TimeFlowRttNs、function=avg、min、または p90
- ドロップ:type=PktDropPackets または PktDropBytes、function=rate
例:
- aggregateBy=namespace, type=Bytes, function=rate
- aggregateBy=TLSVersion, type=Bytes, function=rate, filters=TLSTypes!~""
- aggregateBy=TLSGroup, type=Flows, function=count
- aggregateBy=DnsFlagsResponseCode, type=DnsFlows, function=count
- aggregateBy=PktDropLatestState, type=PktDropPackets, function=rate, packetLoss=dropped
- aggregateBy=resource, type=Bytes, function=rate, namespace=netobserv
dataSource(string) - メトリクスのバックエンド:auto(Prometheus を優先し、利用できない場合は Loki にフォールバック)、prom、または loki。endTime(integer) - Unix エポック秒で指定する時間範囲の終了時刻。デフォルトは現在時刻です。filters(string) - コンソールプラグインに渡す NetObserv フィルター式(プレーンテキスト。クライアントが URL エンコードします)。
構文:
- key=value — 完全一致。key=a,b — 同じキーに複数の値を指定する OR 条件
- key~pattern — 正規表現/部分一致。key!~pattern — 正規表現に一致しない
- key!=value — 等しくない。key>number — 数値が以上(例:Bytes>1000)
- グループ内の AND:&(例:SrcK8S_Namespace=default&Proto=6)
- グループ間の OR:|(例:SrcK8S_Name=pod-a|SrcK8S_Name=pod-b)
可能な場合は、名前空間のスコープには専用の「namespace」パラメーターを優先してください。 Kubernetes のリストツール(namespaces、pods、deployments など)を使って、フィルター値を確認してください。
一般的な Kubernetes フィールド(Src/Dst のプレフィックスは相互に対応します):
- SrcK8S_Namespace, DstK8S_Namespace, SrcK8S_Name, DstK8S_Name
- SrcK8S_Type, DstK8S_Type(例:Pod、Service、Node)
- SrcK8S_OwnerName, DstK8S_OwnerName, SrcK8S_OwnerType, DstK8S_OwnerType(Deployment、StatefulSet など用)
- SrcK8S_HostName, DstK8S_HostName, SrcK8S_Zone, DstK8S_Zone, K8S_ClusterName, UDN
ネットワークとフロー:
- SrcAddr, DstAddr(IP)、SrcPort, DstPort, Proto(IANA 番号。例:6=TCP、17=UDP)
- FlowDirection(0=Ingress、1=Egress、2=Inner)、Bytes, Packets, Dscp, Flags
パケットドロップ(多くの場合、recordType flowLog および packetLoss dropped/hasDrops と併用):
- PktDropPackets, PktDropBytes, PktDropLatestState, PktDropLatestDropCause
DNS:
- DnsName, DnsId, DnsLatencyMs, DnsErrno, DnsFlagsResponseCode 例:
- SrcK8S_Namespace=openshift-netobserv&SrcK8S_Name~my-app
- Proto=6&DstPort=443
- SrcK8S_Name=pod-a|SrcK8S_Name=pod-b
function(string) - 集約関数です。groups(string) - aggregateBy がトポロジースコープの場合に指定する、任意のカンマ区切りの親スコープです。 追加のラベル次元を加えます(例:名前空間の結果をクラスターやゾーンごとに分類します)。 aggregateBy がすでにフローフィールド(例:TLSVersion)の場合は、無視されるか、あまり役に立ちません。代わりにフィルターを使用してください。
単一スコープ:
- clusters、networks、zones、hosts、namespaces、owners
複合スコープ(+を使用し、スペースは入れません):
- clusters+zones、clusters+hosts、clusters+namespaces、clusters+owners
- zones+hosts、zones+namespaces、zones+owners
- hosts+namespaces、hosts+owners
- namespaces+owners
- networks+zones、networks+hosts、networks+namespaces、networks+owners
例:
- aggregateBy=namespace、groups=clusters
- aggregateBy=resource、groups=namespaces
- aggregateBy=owner、groups=zones,hosts
limit(integer) - 返すフローレコードの最大数です。デフォルトは100です。namespace(string) - ソースまたは宛先の名前空間が一致するフローに結果を制限します(開発スコープのLokiテナント)。packetLoss(string) - パケット損失フィルターです。rateInterval(string) - Prometheus のレート間隔です(例:1m、5m)。recordType(string) - フローレコードタイプのフィルターです。startTime(integer) - Unixエポック秒で指定する時間範囲の開始時刻です。設定すると timeRange を上書きします。step(string) - クエリーの解像度ステップです(例:30s、1m)。timeRange(integer) - startTime を省略した場合の、秒単位の遡及期間です。デフォルトは300です。type(string) - 集約するメトリクスタイプです。
可観測性/ログ
-
loki_list_instances - Kubernetes クラスターで利用できる LokiStack インスタンスを一覧表示します。 Loki Operator が管理するスタックを使用する場合は、最初にこれを呼び出し、他の Loki ツールに lokiNamespace と lokiName を渡せるようにします。
-
loki_label_names - 時間範囲内で利用できる Loki ラベル名を一覧表示します。LogQL クエリーを作成する前に使用してください。
end(string) - RFC3339、Unixタイムスタンプ、NOW、またはNOWからの相対式で指定する終了時刻です(任意)。lokiName(string) - LokiStack の名前です。有効な値を確認するには loki_list_instances を使用してください。lokiNamespace(string) - LokiStack の Kubernetes 名前空間です。有効な値を確認するには loki_list_instances を使用してください。start(string) - RFC3339、Unixタイムスタンプ、NOW、またはNOWからの相対式で指定する開始時刻です(任意)。tenant(string) - Loki テナント ID(X-Scope-OrgID)です。LokiStack ゲートウェイモード(例:openshift-network)では、/api/logs/v1/<tenant>のパスを選択します。openshift-network にはnetworkを使用してください。
-
loki_label_values - Loki ラベルキーの値候補を一覧表示します。LogQL で正確なラベルマッチャーを作成するために使用してください。
end(string) - RFC3339、Unixタイムスタンプ、NOW、またはNOWからの相対式で指定する終了時刻です(任意)。label(string) (required) - 調査するラベルキーです(例:namespace、pod、container)。lokiName(string) - LokiStack の名前です。有効な値を確認するには loki_list_instances を使用してください。lokiNamespace(string) - LokiStack の Kubernetes 名前空間です。有効な値を確認するには loki_list_instances を使用してください。start(string) - RFC3339、Unixタイムスタンプ、NOW、またはNOWからの相対式で指定する開始時刻です(任意)。tenant(string) - Loki テナント ID(X-Scope-OrgID)です。LokiStack ゲートウェイモード(例:openshift-network)では、/api/logs/v1/<tenant>のパスを選択します。openshift-network にはnetworkを使用してください。
-
loki_query_range - Loki LogQL の範囲クエリーを実行し、一致するログストリームと行を返します。
observability/metrics
- list_metrics - 必ず最初に実行してください:Prometheus で利用可能なすべてのメトリクス名を一覧表示します。
ほかのクエリツールを使う前に、必ずこのツールを呼び出してください
すべてのオブザーバビリティに関する質問で、このツールを必ず最初に呼び出してください。目的は次のとおりです:
- この環境に実際に存在するメトリクスを確認する
- クエリで使用する正確なメトリクス名を見つける
- 存在しないメトリクスへのクエリを避ける
name_regexパラメーターは常に指定し、メトリクス名として考えられるものを最善の推測で指定してください。name_regexパラメーターに .* や .+ のような包括的な正規表現を使用しないでください。kube.、node. など、具体的なものを使用してください。
正規表現パターンのガイダンス:
- Prometheus のメトリクスには、通常、接頭辞が付いています(例:'prometheus_tsdb_head_series'、'kube_pod_status_phase')
- 部分文字列を含むメトリクスに一致させるには、ワイルドカードを使用します:'.tsdb.' は 'prometheus_tsdb_head_series' に一致します
- ワイルドカードがない場合、パターンは完全一致します:'tsdb' は、文字どおり 'tsdb' という名前のメトリクスにのみ一致します(そのようなメトリクスはほとんどありません)
- よく使われるパターン:'kube_pod.'(ポッド)、'.memory.'(メモリ関連)、'node_.'(ノードメトリクス)
- 結果が空の場合は、検索語の前後に '.*' を追加してみてください
この手順を絶対に省略しないでください。メトリクス名を推測しないでください。メトリクス名は環境によって異なります。
このツールを呼び出した後:
- 返された一覧から関連するメトリクスを検索します
- 後続のクエリでは、見つかった正確なメトリクス名を使用します
- 関連するメトリクスが存在しない場合は、ユーザーに伝えてください
-
name_regex(string) (必須) - メトリクス名を絞り込む正規表現パターンです。重要:メトリクス名には通常、接頭辞が付いています(例:'prometheus_tsdb_head_series')。部分文字列に一致させるにはワイルドカードを使用します:'.tsdb.' は 'tsdb' を含む任意のメトリクスに一致しますが、'tsdb' は文字どおり 'tsdb' にのみ一致します。例:'http_.'(http_で始まる)、'.memory.'(memoryを含む)、'node_.'(node_で始まる)。このパラメーターは必須です。'.*' や '.+' のような包括的な正規表現を渡さないでください。 -
execute_instant_query - PromQL のインスタントクエリを実行し、現在値または特定時点の値を取得します。
前提条件:メトリクスが存在することを確認するため、必ず最初に list_metrics を呼び出してください
使用する場面:
- 現在の状態に関する質問:「現在のエラー率はどのくらいですか?」
- 特定時点のスナップショット:「実行中のポッドはいくつですか?」
- 最新の値:「Pending 状態のポッドはどれですか?」
query パラメーターでは、list_metrics が返したメトリクス名を必ず使用してください。
-
query(string) (必須) - list_metrics で確認済みのメトリクス名を使用する PromQL クエリ文字列です -
time(string) - RFC3339 または Unixタイムスタンプによる評価時刻です。現在の時刻を指定する場合は省略するか、'NOW' を使用してください。 -
execute_range_query - PromQL の範囲クエリを実行し、一定期間の時系列データを取得します。
前提条件:メトリクスが存在することを確認するため、必ず最初に list_metrics を呼び出してください 使用する場面:
- 時系列の傾向:「過去1時間の CPU 使用率はどのように推移しましたか?」
- レート計算:「1 秒あたりのリクエスト数はいくつですか?」
- 履歴分析:「過去5分間に再起動はありましたか?」
時間パラメーター:
- 'duration':現在から遡る期間(例:「5m」、「1h」、「24h」)
- 'step':データポイントの解像度(例:期間が1時間の場合は「1m」、24時間の場合は「5m」)
'duration' パラメーターには、list_metrics によって返されたメトリクス名を使用する必要があります。
-
duration(string) - 現在から遡る期間(例:'1h'、'30m'、'1d'、'2w')(任意) -
end(string) - RFC3339 または Unix タイムスタンプ形式の終了時刻(任意)。現在時刻にはNOWを使用します。 -
query(string) (必須) - list_metrics で確認したメトリクス名を使用する PromQL クエリ文字列 -
start(string) - RFC3339 または Unix タイムスタンプ形式の開始時刻(任意) -
step(string) (必須) - クエリの解像度ステップ幅(例:'15s'、'1m'、'1h')。時間範囲に応じて選択します。短い範囲には小さいステップを使用します。 -
show_timeseries - 結果をインタラクティブな時系列グラフとして表示します。
このツールは execute_range_query と同様に動作しますが、結果を UI クライアントに視覚的なグラフとして表示します。 ユーザーがグラフや時系列データの可視化を見たい場合や、視覚情報を使って回答する場合に使用します。 他のすべての Prometheus ツール呼び出しが完了した後、最後のツール呼び出しとして show_timeseries を使用します。
時間パラメーター:
- 'duration':現在から遡る期間(例:「5m」、「1h」、「24h」)
- 'step':データポイントの解像度(例:期間が1時間の場合は「1m」、24時間の場合は「5m」)
- 'title':わかりやすいグラフのタイトル(例:「過去1時間の API エラー率」)
- 'description':グラフの意味や文脈の説明(例:「Pod 別の HTTP 5xx エラー数(1秒あたり)を示します」)
'query' パラメーターには、範囲クエリを指定し、list_metrics によって返されたメトリクス名を使用する必要があります。
-
description(string) - グラフの意味や文脈の説明(例:'Pod 別の HTTP 5xx エラー数(1秒あたり)を示します')。指定するとタイトルの下に表示されます。 -
duration(string) - 現在から遡る期間(例:'1h'、'30m'、'1d'、'2w')(任意) -
end(string) - RFC3339 または Unix タイムスタンプ形式の終了時刻(任意)。現在時刻にはNOWを使用します。 -
query(string) (必須) - list_metrics で確認したメトリクス名を使用する PromQL クエリ文字列 -
start(string) - RFC3339 または Unix タイムスタンプ形式の開始時刻(任意) -
step(string) (必須) - クエリの解像度ステップ幅(例:'15s'、'1m'、'1h')。時間範囲に応じて選択します。短い範囲には小さいステップを使用します。 -
title(string) - クエリの内容を説明する、人が読みやすいグラフのタイトル(例:'過去1時間の API エラー率')。指定するとグラフの上に表示されます。 -
get_label_names - メトリクスのフィルタリングに使用できるすべてのラベル名(ディメンション)を取得します。
使用する場面(list_metrics の呼び出し後):
- メトリクスのフィルタリング方法(namespace、Pod、サービスなど)を確認する場合
- PromQL クエリのラベルマッチャーを作成する前
'metric' パラメーターには、list_metrics の出力に含まれるメトリクス名を指定します。
-
end(string) - ラベルの検出を終了する時刻(RFC3339 または Unix タイムスタンプ形式)(任意。既定値は現在時刻) -
metric(string) - ラベル名を取得するメトリクス名(list_metrics から指定)。すべてのメトリクスを対象にする場合は空のままにします。 -
start(string) - ラベルの検出を開始する時刻(RFC3339 または Unix タイムスタンプ形式)(任意。既定値は1時間前) -
get_label_values - 特定のラベルに設定されている一意な値をすべて取得します。
使用する場面(list_metrics と get_label_names の呼び出し後):
-
フィルタリングに使用する正確なラベル値(namespace 名、Pod 名など)を確認する場合
-
クエリを作成する前に、どのような値があるか確認する場合 「metric」パラメーターには、list_metrics の出力に含まれるメトリック名を指定してください。
end(string) - ラベル値の検出を終了する時刻。RFC3339 または Unix タイムスタンプで指定します(省略可。デフォルトは現在)label(string) (required) - 値を取得するラベル名(get_label_names から指定)metric(string) - ラベル値の対象とするメトリック名(list_metrics から指定)。すべてのメトリックを対象とする場合は空欄にします。start(string) - ラベル値の検出を開始する時刻。RFC3339 または Unix タイムスタンプで指定します(省略可。デフォルトは1時間前)
-
get_series - セレクターに一致する時系列を取得し、カーディナリティをプレビューします。
使用するタイミング(省略可、list_metrics の呼び出し後):
- クエリを実行する前に、ラベルフィルターが想定どおりの時系列に一致することを確認する場合
- カーディナリティを確認し、遅いクエリを避ける場合
カーディナリティの目安:
- 100未満:安全です
- 100~1000:通常は問題ありません
- 1000超:ラベルフィルターを追加してください
セレクターには、list_metrics の出力に含まれるメトリック名を指定してください。
-
end(string) - 時系列の検出を終了する時刻。RFC3339 または Unix タイムスタンプで指定します(省略可。デフォルトは現在) -
matches(string) (required) - list_metrics に含まれるメトリック名を使用した PromQL 時系列セレクター -
start(string) - 時系列の検出を開始する時刻。RFC3339 または Unix タイムスタンプで指定します(省略可。デフォルトは1時間前) -
get_alerts - Alertmanager からアラートを取得します。
使用するタイミング:
- 問題を調査する際は、まずこのツールを使用します。ユーザーが障害、エラー、失敗、停止、サービスのダウン、またはクラスター内の問題について尋ねた場合に使用してください
- ユーザーが特定のアラート名を挙げた場合。このツールでアラートの完全なラベル(namespace、pod、service など)を取得します。これらは他のツールでさらに調査する際に不可欠です
- クラスターで現在発報中のアラートを確認する場合
- アクティブ、サイレンス中、または抑制中のアラートを確認する場合
- メトリクスやログを詳しく調べる前に、何が起きているかを把握する場合
調査のヒント:アラートラベルには、prometheus ツールで対象を絞ったクエリを実行する際に必要となる、正確な識別子(pod 名、namespace、job 名など)が含まれていることがよくあります。
フィルタリング:
- アクティブなアラート(解決済みではないもの)のみを絞り込むには、'active' を使用します
- サイレンス中のアラートを絞り込むには、'silenced' を使用します
- 抑制中のアラートを絞り込むには、'inhibited' を使用します
- ラベルマッチャーを適用するには、'filter' を使用します(例:"alertname=HighCPU")
- レシーバー名でアラートを絞り込むには、'receiver' を使用します
すべてのフィルターパラメーターは省略可能です。フィルターを指定しない場合は、すべてのアラートが返されます。
-
active(boolean) - アクティブなアラートのみを絞り込みます(true/false、省略可) -
filter(string) - アラートを絞り込むラベルマッチャー(例:'alertname=HighCPU'、省略可) -
inhibited(boolean) - 抑制中のアラートのみを絞り込みます(true/false、省略可) -
receiver(string) - 絞り込みに使用するレシーバー名(省略可) -
silenced(boolean) - サイレンス中のアラートのみを絞り込みます(true/false、省略可) -
unprocessed(boolean) - 未処理のアラートのみを絞り込みます(true/false、省略可) -
get_silences - Alertmanager からサイレンスを取得します。
使用するタイミング:
- 現在サイレンス中のアラートを確認する場合
- アクティブ、保留中、または期限切れのサイレンスを確認する場合
- 特定のアラートで通知が発報されない理由を調査する場合
フィルタリング:
- 特定のサイレンスを見つけるためにラベルマッチャーを適用するには、'filter' を使用します
サイレンスは、ラベルマッチャーに基づいてアラートを一時的にミュートするために使用します。このツールを使うと、環境内で現在どのアラートがサイレンスされているかを把握できます。
filter(string) - サイレンスを絞り込むラベルマッチャー(例:'alertname=HighCPU'、省略可)
observability/otelcol
-
otelcol_list_components - 指定したバージョンで利用可能な OpenTelemetry Collector コンポーネント(レシーバー、プロセッサー、エクスポーター、拡張機能、コネクター)を一覧表示します。
version(string) - Collector のバージョン(例:'v0.100.0')。デフォルトは利用可能な最新バージョンです。
-
otelcol_get_component_schema - OpenTelemetry Collector コンポーネントの設定オプションの JSON スキーマを取得します。
component_name(string) (必須) - otelcol_list_components にあるコンポーネント名(例:'otlp'、'batch'、'debug')component_type(string) (必須) - コンポーネントの種類:receiver、processor、exporter、extension、connectorversion(string) - Collector のバージョン(例:'v0.100.0')。デフォルトは利用可能な最新バージョンです。
-
otelcol_validate_config - OpenTelemetry Collector コンポーネントの設定を JSON スキーマに照らして検証します。
component_name(string) (必須) - otelcol_list_components にあるコンポーネント名(例:'otlp'、'batch'、'debug')component_type(string) (必須) - コンポーネントの種類:receiver、processor、exporter、extension、connectorconfig(string) (必須) - 検証する設定(YAML または JSON 形式の文字列)format(string) - 設定の形式:'yaml'(デフォルト)または 'json'version(string) - Collector のバージョン(例:'v0.100.0')。デフォルトは利用可能な最新バージョンです。
-
otelcol_get_versions - 利用可能な OpenTelemetry Collector のバージョンを一覧表示し、最新バージョンを特定します。
可観測性/トレース
-
tempo_list_instances - Kubernetes クラスターで利用可能な Tempo インスタンスをすべて一覧表示します。 ほかの Tempo ツールを使う前に、まずこのツールを呼び出して利用可能な Tempo インスタンスを確認してください。 返される namespace、name、tenant の値は、ほかのすべての Tempo ツールで必須のパラメーターです。 このツールの出力は必ず表形式で表示してください。
-
tempo_get_trace_by_id - Tempo から trace ID を指定して、単一の分散トレースを取得します。 サービス名、操作名、所要時間、属性など、すべてのスパンを含むトレース全体を返します。 検索結果やログなどから特定の trace ID がすでに分かっている場合に、このツールを使用してください。
end(string) - RFC 3339 形式の任意の終了時刻。例:「2025-01-02T00:00:00Z」。 時間範囲を絞り込んで、クエリのパフォーマンスを向上させます。start(string) - RFC 3339 形式の任意の開始時刻。例:「2025-01-01T00:00:00Z」。 時間範囲を絞り込んで、クエリのパフォーマンスを向上させます。tempoName(string) (必須) - クエリ対象の Tempo インスタンス名。利用可能なインスタンス名を確認するには tempo_list_instances を使用してください。tempoNamespace(string) (必須) - Tempo インスタンスがデプロイされている Kubernetes namespace。利用可能な namespace を確認するには tempo_list_instances を使用してください。tenant(string) - クエリ対象の tenant。このパラメーターはマルチテナントインスタンスで必須です。各インスタンスで利用可能な tenant を確認するには tempo_list_instances を使用してください。traceid(string) (必須) - 取得する trace ID。例:「26dad4a0e2b0dd9a440dd5ff203a24a4」。
-
tempo_search_traces - TraceQL を使用して Tempo 内の分散トレースを検索します。 サービス名、HTTP ステータスコード、所要時間、その他のスパンまたはリソースの属性など、特定の条件に一致するトレースを見つけるには、このツールを使用してください。
重要 — 「遅い」または「長い」トレースのリクエスト:所要時間のしきい値を推測しないでください。 まず所要時間フィルターを指定せずにこのツールを呼び出して、レイテンシの基準値を確認してから、その基準値を使って妥当なしきい値を設定してください。 どちらの手順も必須です。所要時間フィルターを指定した2回目の検索を省略しないでください。 ユーザーが所要時間を明示している場合(例:「2sを超えるトレースを検索」)に限り、この2段階の手順を省略できます。
end(string) - RFC 3339 形式の終了時刻。例:「2025-01-01T00:00:00Z」。 現在時刻には「NOW」を使用します。 時間範囲全体を検索するには start と end の両方を指定してください。省略すると、最近の小さな範囲のデータのみが検索されます。limit(integer) - 返すトレースの最大数。指定しない場合はサーバー側の上限がデフォルトで使用されます。query(string) (必須) - TraceQL クエリ式。形式: query: "{ <filters joined by &&> }" フィルター:- サービス名: resource.service.name=""(文字列、引用符を使用)
- HTTP ステータスコード: span.http.response.status_code=
(数値、引用符なし) - 所要時間: duration><value like 100ms, 2s, 5m>(引用符なし)
- エラーステータス: status=error(キーワード、引用符は不要 — status="error" と記述しないでください)
重要:status の値(error、ok、unset)は文字列ではなくキーワードです。status=error と記述してください。status="error" と記述してはいけません。
演算子:=、!=、>、<、>=、<=
一般的な属性:
- resource.service.name(サービス名)
- resource.k8s.namespace.name(Kubernetes の名前空間)
- resource.k8s.deployment.name(Kubernetes のデプロイメント)
- resource.k8s.statefulset.name(Kubernetes のステートフルセット)
- resource.k8s.daemonset.name(Kubernetes のデーモンセット)
- resource.k8s.replicaset.name(Kubernetes のレプリカセット)
- resource.k8s.pod.name(Kubernetes のポッド)
- resource.k8s.container.name(Kubernetes のコンテナー)
- resource.k8s.job.name(Kubernetes のジョブ)
- resource.k8s.cronjob.name(Kubernetes の CronJob)
- resource.k8s.node.name(Kubernetes のノード)
- resource.k8s.cluster.name(Kubernetes のクラスター)
- span.http.response.status_code(HTTP レスポンスコード)
- span.http.request.method(GET、POST などの HTTP メソッド)
- span.url.full(リクエスト URL)
- name(スパン名/操作名、例:"GET /api/users")
- duration(トレースの所要時間、例:100ms、2s)
- status(トレースのステータス:ok、error、unset)
注:古い計装では、従来の HTTP 属性名(例:span.http.response.status_code ではなく span.http.status_code)が使用されている場合があります。
クエリで結果が返されない場合は、tempo_search_tags を試して、どの属性が存在するか確認してください。
重要:
- フィルターは必ず波括弧 { } で囲んでください。
- SQL、PromQL、Lucene の構文は使用しないでください。
- 属性名の "resource." または "span." のプレフィックスを省略しないでください。
- ユーザーが Kubernetes のリソースタイプ(deployment、pod、namespace など)を指定した場合は、resource.service.name ではなく、対応する resource.k8s.* 属性を使用してください。
例:
- { resource.service.name="frontend" }
- { resource.k8s.deployment.name="checkout" && span.http.response.status_code>=500 }
- { status=error && duration>2s }
フィルター対象の属性が不明な場合は、クエリを作成する前に tempo_search_tags を使用して、利用可能な属性を確認してください。
-
spss (integer) - トレースごとに返す一致スパンの最大数です。
-
start (string) - RFC 3339 形式の時間範囲の開始時刻です。例:"2025-01-01T00:00:00Z"。
現在時刻には "NOW" を使用してください。
時間範囲全体を検索するには、start と end の両方を指定してください。省略した場合は、直近の短い時間範囲のみが検索されます。
-
tempoName (string) (必須) - クエリ対象の Tempo インスタンス名です。利用可能なインスタンス名を確認するには、tempo_list_instances を使用してください。
-
tempoNamespace (string) (必須) - Tempo インスタンスがデプロイされている Kubernetes の名前空間です。利用可能な名前空間を確認するには、tempo_list_instances を使用してください。
-
tenant (string) - クエリ対象のテナントです。マルチテナントインスタンスでは、このパラメーターが必須です。各インスタンスで利用可能なテナントを確認するには、tempo_list_instances を使用してください。
-
tempo_search_tags - Tempo で利用可能なタグ名(属性キー)をスコープ別に一覧表示します。
このツールを使用して、tempo_search_traces で TraceQL クエリを作成する際に利用できる属性を確認します。
たとえば、「resource」スコープの「service.name」や、「span」スコープの「http.response.status_code」といったタグ名が表示される場合があります。
TraceQL クエリでこれらを使用するには、「resource.service.name」や「span.http.response.status_code」のように、スコープを先頭に付けます。
end (string) - タグの一覧表示時に対象となるトレースを絞り込む、時間範囲の終了時刻(RFC 3339 形式、例:「2025-01-01T00:00:00Z」)。指定は任意です。
limit (integer) - スコープごとに返すタグ名の最大数です。
maxStaleValues (integer) - 新しいタグ名がないブロックが連続した場合に、検索を早期終了するまでの最大数です。値を大きくすると、より網羅的になりますが、検索に時間がかかります。
query (string) - タグの一覧表示時に対象となるトレースを絞り込む TraceQL クエリです。指定は任意です。
例:{ resource.service.name="payment-service" } と指定すると、「payment-service」サービスのトレースに存在するタグのみを表示します。
scope (string) - 特定のスコープにタグを絞り込みます。次のいずれかを指定します。
「resource」(service.name などのサービスレベルの属性)、
「span」(http.response.status_code などの個々のスパンの属性)、
「intrinsic」(duration、status、name などの組み込みフィールド)。
省略すると、すべてのスコープのタグが返されます。
start (string) - タグの一覧表示時に対象となるトレースを絞り込む、時間範囲の開始時刻(RFC 3339 形式、例:「2025-01-01T00:00:00Z」)。指定は任意です。
tempoName (string) (required) - クエリ対象の Tempo インスタンス名です。利用可能なインスタンス名を確認するには、tempo_list_instances を使用してください。
tempoNamespace (string) (required) - Tempo インスタンスがデプロイされている Kubernetes の名前空間です。利用可能な名前空間を確認するには、tempo_list_instances を使用してください。
tenant (string) - クエリ対象のテナントです。マルチテナントのインスタンスでは、このパラメーターが必須です。インスタンスごとの利用可能なテナントを確認するには、tempo_list_instances を使用してください。
-
tempo_search_tag_values - Tempo の特定のタグ(属性キー)について、既知の値を一覧表示します。
このツールを使用して、指定したタグにどのような値が存在するかを確認します。たとえば、すべてのサービス名(「resource.service.name」の値)や HTTP メソッド(「span.http.request.method」の値)を調べられます。
tempo_search_traces で正確な TraceQL クエリを作成する際に役立ちます。
end (string) - 値の一覧表示時に対象となるトレースを絞り込む、時間範囲の終了時刻(RFC 3339 形式、例:「2025-01-01T00:00:00Z」)。指定は任意です。
limit (integer) - 返すタグ値の最大数です。
maxStaleValues (integer) - 新しい値がないブロックが連続した場合に、検索を早期終了するまでの最大数です。値を大きくすると、より網羅的になりますが、検索に時間がかかります。
query (string) - 値の一覧表示時に対象となるトレースを絞り込む TraceQL クエリです。指定は任意です。
例:{ resource.service.name="payment-service" } と指定すると、「payment-service」サービスのトレースに存在するタグ値のみを表示します。
start (string) - 値の一覧表示時に対象となるトレースを絞り込む、時間範囲の開始時刻(RFC 3339 形式、例:「2025-01-01T00:00:00Z」)。指定は任意です。
tag (string) (required) - 値を取得する完全修飾タグ名です。例:「resource.service.name」や「span.http.response.status_code」のように、スコープのプレフィックスを含めます。
利用可能なタグ名を確認するには、tempo_search_tags を使用してください。
tempoName (string) (required) - クエリ対象の Tempo インスタンス名です。利用可能なインスタンス名を確認するには、tempo_list_instances を使用してください。
tempoNamespace (string) (required) - Tempo インスタンスがデプロイされている Kubernetes の名前空間です。利用可能な名前空間を確認するには、tempo_list_instances を使用してください。
tenant (string) - クエリ対象のテナントです。マルチテナントのインスタンスでは、このパラメーターが必須です。インスタンスごとの利用可能なテナントを確認するには、tempo_list_instances を使用してください。
tekton
- **tekton_pipeline_start** - 参照する PipelineRun を作成して Tekton Pipeline を開始します
- `name` (`string`) **(required)** - 開始する Pipeline の名前
- `namespace` (`string`) - Pipeline の Namespace
- `params` (`object`) - Pipeline に渡すパラメーター値です。キーはパラメーター名です。値は、Pipeline の仕様で定義されているパラメーターの型に応じて、文字列、文字列の配列、またはオブジェクト(文字列から文字列へのマップ)になります
-
tekton_pipelinerun_lifecycle - 同じ仕様で再起動するか、spec.status を Cancelled に設定してキャンセルすることで、Tekton PipelineRun のライフサイクルを管理します。
action (string) (required) - 実行するライフサイクル操作です。'restart' は同じ仕様で新しい PipelineRun を作成し、'cancel' は spec.status を Cancelled に設定します。
name (string) (required) - 管理する PipelineRun の名前
namespace (string) - PipelineRun の Namespace
-
tekton_pipelinerun_logs - Tekton PipelineRun が所有するすべての TaskRun のログを取得します。Pod を手動で探さずに PipelineRun の実行出力を確認する際に使用します。
name (string) (required) - ログを取得する PipelineRun の名前
namespace (string) - PipelineRun の Namespace
step (string) - 一致する TaskRun に含める Step の名前
tail (integer) - 各コンテナーログの末尾から取得する行数(デフォルト:100)
task (string) - フィルターに使用する Pipeline のタスク名(tekton.dev/pipelineTask ラベル)
-
tekton_task_start - 参照する TaskRun を作成して Tekton Task を開始します
name (string) (required) - 開始する Task の名前
namespace (string) - Task の Namespace
params (object) - Task に渡すパラメーター値です。キーはパラメーター名です。値は、Task の仕様で定義されているパラメーターの型に応じて、文字列、文字列の配列、またはオブジェクト(文字列から文字列へのマップ)になります
-
tekton_taskrun_restart - 同じ仕様で新しい TaskRun を作成して Tekton TaskRun を再起動します
name (string) (required) - 再起動する TaskRun の名前
namespace (string) - TaskRun の Namespace
-
tekton_taskrun_logs - 基盤となる Pod を特定して Tekton TaskRun のログを取得します
name (string) (required) - ログを取得する TaskRun の名前
namespace (string) - TaskRun の Namespace
step (string) - 含める Step の名前。省略した場合、すべての Step とサイドカーのログが返されます
tail (integer) - ログの末尾から取得する行数(任意、デフォルト:100)
プロンプト
core
- cluster-health-check - Kubernetes/OpenShift クラスターの包括的なヘルス評価を実施します
namespace (string) - ヘルスチェックの範囲を限定する任意の Namespace(デフォルト:すべての Namespace)
check_events (string) - 最近の警告/エラーイベントを含めるかどうか(true/false、デフォルト:true)
kiali
-
mesh-list-applications - メッシュの Namespace 内のアプリケーションを一覧表示します
namespace (string) - アプリケーションを絞り込む任意の Namespace(デフォルト:すべての Namespace)
-
list-istio-config - メッシュの Namespace 内の Istio 設定リソースを一覧表示します
namespace (string) - Istio 設定を絞り込む任意の Namespace(デフォルト:すべての Namespace)
-
mesh-list-namespaces - サイドカーのインジェクション状態と Istio ラベルを含め、すべての Namespace を一覧表示します
-
mesh-list-services - メッシュの Namespace 内のサービスを一覧表示します
namespace (string) - サービスを絞り込む任意の Namespace(デフォルト:すべての Namespace)
-
mesh-list-workloads - メッシュの Namespace 内のワークロードを一覧表示します
namespace (string) - ワークロードを絞り込む任意の Namespace(デフォルト:すべての Namespace)
-
mesh-health-check - コントロールプレーンとデータプレーンの状態を含む、Istio サービスメッシュの包括的な健全性評価を実行します
namespace (string) - 健全性チェックの対象とする任意の名前空間(デフォルト:すべての名前空間)
-
mesh-topology - コントロールプレーンのコンポーネントとクラスターの接続状況を含む、メッシュのトポロジーを表示します
-
traffic-topology - サービスの依存関係、トラフィックの流れ、通信パターンを示すサービスメッシュのトラフィックトポロジーを分析します
namespaces (string) (required) - グラフに含める名前空間のカンマ区切りリスト。アクセス可能なメッシュの名前空間をすべて含める場合は「all」を指定します
-
service-troubleshoot - ログ、トレース、Istio の設定を使用してサービスのエラーを調査し、根本原因を特定します
namespace (string) (required) - サービスがデプロイされている名前空間
service (string) (required) - トラブルシューティングするサービスの名前
workload (string) - ログを取得する任意のワークロードまたはポッド名(省略した場合はサービス名を使用します)
-
trace-analysis - サービスの分散トレースを調査し、レイテンシーのボトルネック、エラーの発生源、処理の遅いスパンを特定します
namespace (string) (required) - サービスがデプロイされている名前空間
service (string) (required) - トレースを調査するサービスの名前
-
istio-config-review - 名前空間内の Istio 設定を確認・検証し、設定ミスやベストプラクティスへの違反をチェックします
namespace (string) (required) - Istio 設定を確認する名前空間
kubevirt
-
vm-troubleshoot - KubeVirt VirtualMachine の問題を診断するための、手順に沿ったトラブルシューティングガイドを生成します
namespace (string) (required) - トラブルシューティングする VirtualMachine の名前空間
name (string) (required) - トラブルシューティングする VirtualMachine の名前
-
windows-golden-image - KubeVirt windows-efi-installer Tekton パイプラインを使用して Windows ゴールデンイメージを作成する手順を案内します
winImageDownloadURL (string) (required) - Microsoft Windows ISO のダウンロード URL(https:// である必要があります)
namespace (string) - PipelineRun の対象名前空間
windowsVersion (string) - Windows のバージョン:10、11、2k22(デフォルト)、または 2k25
pipelineVersion (string) - パイプラインのバージョン(デフォルト:latest)。必要に応じて 0.25.0 などの特定のバージョンを指定します
-
hco-status - KubeVirt と関連コンポーネントを管理する HyperConverged Cluster Operator(HCO)のステータスレポートを生成します
tekton
- pipeline-troubleshoot - Tekton のトラブルシューティングに向けて、PipelineRun のステータス、Pipeline 定義、TaskRun、失敗またはエラーが発生したステップのログ、警告イベント、Pipeline-as-Code Repository、TektonConfig のコンテキストを収集します
namespace (string) (required) - トラブルシューティングする PipelineRun の名前空間
name (string) (required) - トラブルシューティングする PipelineRun の名前
リソース
リソーステンプレート
Helm Chart
Kubernetes MCP サーバーのデプロイを簡素化するために、Helm Chart を利用できます。
helm install kubernetes-mcp-server oci://ghcr.io/containers/charts/kubernetes-mcp-server
OAuth、テレメトリー、リソース制限などの設定オプションについては、chart README と values.yaml を参照してください。
💬 コミュニティ
交流に参加して、ほかのユーザーやコントリビューターとつながりましょう。
- Slack - CNCF Slack ワークスペースの
#kubernetes-mcp-server チャンネルで、質問したり、フィードバックを共有したり、Kubernetes MCP サーバーについて話し合ったりできます。まだメンバーでない場合は、招待をリクエストできます。
🧑💻 開発
mcp-inspector で実行する
プロジェクトをコンパイルし、mcp-inspector で Kubernetes MCP サーバーを実行して、MCP サーバーを調査します。
# Compile the project
make build
# Run the Kubernetes MCP server with mcp-inspector
npx @modelcontextprotocol/inspector@latest $(pwd)/kubernetes-mcp-server
mcp-name: io.github.containers/kubernetes-mcp-server
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。