Kubeshark
公式クラスター全体のL4およびL7ネットワークトラフィック、パケット、API、完全なペイロードへのMCPアクセス。
Kubeshark MCPで何ができますか?
- KFLフィルタを使用したL7 APIトランザクションのクエリ —
list_api_callsを使用して、ステータスコードやパスなどの条件に一致するHTTP、gRPC、Redis、Kafka、またはDNSリクエストを検索します。 - 特定のAPIコールの詳細を検査 —
get_api_callを使用して、単一トランザクションの完全なリクエスト/レスポンスデータを取得します。 - 集約されたAPI統計の取得 —
get_api_statsを使用して、トラフィックパターン、エラー率、またはレイテンシ分布を要約します。 - L4ネットワークフローとサマリーの表示 —
list_l4_flowsとget_l4_flow_summaryを使用して、TCP/UDP接続を一覧表示し、接続の概要を取得します。 - PCAPスナップショットの作成と管理 —
create_snapshotとlist_snapshotsを使用して、オフライン分析のためにネットワークトラフィックをキャプチャします。 - L7プロトコル解析の制御 —
enable_dissectionとdisable_dissectionを使用して、必要に応じて深いプロトコル解析を有効または無効にします。
ドキュメント
Kubeshark MCP Server
Kubeshark MCP (Model Context Protocol) サーバーは、Claude Desktop、Cursor、その他のMCP互換クライアントがリアルタイムのKubernetesネットワークトラフィックをクエリできるようにします。
AIスキル
MCPはツールを提供し、AIスキルはエージェントにそれらの使用方法を教えます。 スキルは、生のMCP機能を根本原因分析、トラフィックフィルタリング、フォレンジック調査などのドメイン固有のワークフローに変換します。 インストールと使用方法については、スキルREADMEを参照してください。
| スキル | 説明 |
|---|---|
network-rca | ネットワーク根本原因分析 — PCAPおよび解析ルートを使用したスナップショットベースの遡及調査 |
kfl | KFL2フィルターエキスパート — サポートされているすべてのプロトコルにわたるトラフィッククエリの作成、デバッグ、最適化 |
機能
- L7 APIトラフィック分析: HTTP、gRPC、Redis、Kafka、DNSトランザクションのクエリ
- L4ネットワークフロー: トラフィック統計を含むTCP/UDPフローの表示
- クラスター管理: Kubesharkデプロイメントの開始/停止(安全制御付き)
- PCAPスナップショット: ネットワークキャプチャの作成とエクスポート
- 組み込みプロンプト: 一般的な分析タスク用の事前設定済みプロンプト
インストール
1. Kubeshark CLIのインストール
# macOS
brew install kubeshark
# Linux
sh <(curl -Ls https://kubeshark.com/install)
# Windows (PowerShell)
choco install kubeshark
またはGitHubリリースからダウンロードします。
2. Claude Desktopの設定
Claude Desktop設定に追加します:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
デフォルト (kubectlアクセス/kubeコンテキストが必要)
{
"mcpServers": {
"kubeshark": {
"command": "kubeshark",
"args": ["mcp"]
}
}
}
明示的なkubeconfigパスを使用する場合:
{
"mcpServers": {
"kubeshark": {
"command": "kubeshark",
"args": ["mcp", "--kubeconfig", "/path/to/.kube/config"]
}
}
}
URLモード (kubectl不要)
マシンにkubectlアクセスやkubeコンテキストがない場合に使用します。 既存のKubesharkデプロイメントに直接接続します:
{
"mcpServers": {
"kubeshark": {
"command": "kubeshark",
"args": ["mcp", "--url", "https://kubeshark.example.com"]
}
}
}
ゲートHub (AUTH_ENABLED=true) の場合、URLモードではトークンを発行できないため(kubeアクセスがない)、--token (または KUBESHARK_HUB_TOKEN 環境変数) を介して明示的にトークンを提供します。クラスターアクセスを持つマシンからトークンを発行します:
kubectl create token kubeshark-cli -n <release-namespace> --audience kubeshark-hub
{
"mcpServers": {
"kubeshark": {
"command": "kubeshark",
"args": ["mcp", "--url", "https://kubeshark.example.com", "--token", "<token>"]
}
}
}
トークンは有効期限が短く(約1時間)、URLモードでは自動更新できません。有効期限が切れると、サーバーは明確な 401 ... token expired/invalid メッセージを報告します — 再発行して再起動します。プロキシモード(デフォルト、kubeアクセスあり)は kubeshark-cli トークンを自動的に発行し、自動更新するため、長時間実行セッションは期限切れになりません。
破壊的操作を有効にする場合
{
"mcpServers": {
"kubeshark": {
"command": "kubeshark",
"args": ["mcp", "--allow-destructive", "--kubeconfig", "/path/to/.kube/config"]
}
}
}
3. 設定の生成
CLIを使用して設定を生成します:
kubeshark mcp --mcp-config --url https://kubeshark.example.com
利用可能なツール
トラフィック分析 (全モード)
| ツール | 説明 |
|---|---|
list_workloads | トラフィックが観測されたPod、サービス、名前空間を一覧表示 |
list_api_calls | KFLフィルタリングを使用してL7 APIトランザクションをクエリ |
get_api_call | 特定のAPI呼び出しに関する詳細情報を取得 |
get_api_stats | 集約されたAPI統計を取得 |
list_l4_flows | L4 (TCP/UDP) ネットワークフローを一覧表示 |
get_l4_flow_summary | L4接続サマリーを取得 |
list_snapshots | すべてのPCAPスナップショットを一覧表示 |
create_snapshot | 新しいPCAPスナップショットを作成 |
get_dissection_status | L7プロトコル解析ステータスを確認 |
enable_dissection | L7プロトコル解析を有効化 |
disable_dissection | L7プロトコル解析を無効化 |
クラスター管理 (プロキシモードのみ)
| ツール | 説明 | 要件 |
|---|---|---|
check_kubeshark_status | Kubesharkが実行中かどうかを確認 | - |
start_kubeshark | Kubesharkをクラスターにデプロイ | --allow-destructive |
stop_kubeshark | Kubesharkをクラスターから削除 | --allow-destructive |
利用可能なプロンプト
| プロンプト | 説明 |
|---|---|
analyze_traffic | APIトラフィックパターンを分析し、問題を特定 |
find_errors | APIエラーと障害を検索して要約 |
trace_request | マイクロサービスを通るリクエストパスをトレース |
show_topology | サービス通信トポロジーを表示 |
latency_analysis | レイテンシパターンを分析し、遅いエンドポイントを特定 |
security_audit | セキュリティ上の懸念についてトラフィックを監査 |
compare_traffic | 期間間のトラフィックパターンを比較 |
debug_connection | サービス間の接続問題をデバッグ |
会話例
User: Show me all HTTP 500 errors in the last hour
Claude: I'll query the API traffic for 500 errors.
[Calling list_api_calls with kfl="http and response.status == 500"]
Found 12 HTTP 500 errors:
1. POST /api/checkout -> payment-service (500)
Time: 10:23:45 | Latency: 2340ms
...
User: What services are communicating with the database?
Claude: Let me check the L4 flows to the database.
[Calling list_l4_flows with dst_filter="postgres"]
Found 5 services connecting to postgres:5432:
- orders-service: 456KB transferred
- users-service: 123KB transferred
...
CLIオプション
| オプション | 説明 |
|---|---|
--url | Kubeshark Hubへの直接URL |
--token | ゲートHubに対する --url モード用のHub SA/ベアラートークン (KUBESHARK_HUB_TOKEN も同様)。プロキシモードでは無視され、トークンを発行して自動更新します |
--kubeconfig | kubeconfigファイルへのパス |
--allow-destructive | 開始/停止操作を有効化 |
--list-tools | 利用可能なツールを一覧表示して終了 |
--mcp-config | Claude Desktop設定JSONを出力 |
KFL (Kubeshark Filter Language)
KFL構文を使用してトラフィックをクエリします:
# HTTP requests to a specific path
http and request.path == "/api/users"
# Errors only
response.status >= 400
# Specific source pod
src.pod.name == "frontend-.*"
# Multiple conditions
http and src.namespace == "default" and response.status == 500
MCPレジストリ
Kubesharkはリリースごとに自動的にMCPレジストリに公開されます。
このディレクトリの server.json は参照ファイルです。実際のレジストリメタデータ(バージョン、SHA256ハッシュ)は、リリースワークフロー中に自動生成されます。詳細は.github/workflows/release.ymlを参照してください。
リンク
ライセンス
Apache-2.0