Kubeshark MCP Server

公式

クラスター全体のL4およびL7ネットワークトラフィック、パケット、API、完全なペイロードへのMCPアクセス。

ドキュメント

Kubeshark MCP Server

Kubeshark MCP (Model Context Protocol) サーバーは、Claude Desktop、Cursor、その他の MCP 対応クライアントがリアルタイムの Kubernetes ネットワークトラフィックをクエリできるようにします。

AI スキル

MCP はツールを提供し、AI スキル はエージェントにそれらの使い方を教えます。 スキルは、生の MCP 機能を、根本原因分析、トラフィックフィルタリング、フォレンジック調査といった ドメイン固有のワークフローに変換します。インストールと使用方法については、 skills README を参照してください。

スキル説明
network-rcaネットワーク根本原因分析 — PCAP および解析ルートを用いたスナップショットベースの遡及調査
kflKFL2 フィルターエキスパート — サポートされる全プロトコルにわたるトラフィッククエリの作成、デバッグ、最適化

機能

  • 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 Releases からダウンロードします。

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"]
    }
  }
}

破壊的操作を含める場合

{
  "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_callsKFL フィルタリングを使用して L7 API トランザクションをクエリ
get_api_call特定の API 呼び出しに関する詳細情報を取得
get_api_stats集約された API 統計を取得
list_l4_flowsL4 (TCP/UDP) ネットワークフローを一覧表示
get_l4_flow_summaryL4 接続サマリーを取得
list_snapshotsすべての PCAP スナップショットを一覧表示
create_snapshot新しい PCAP スナップショットを作成
get_dissection_statusL7 プロトコル解析ステータスを確認
enable_dissectionL7 プロトコル解析を有効化
disable_dissectionL7 プロトコル解析を無効化

クラスター管理 (プロキシモードのみ)

ツール説明必要条件
check_kubeshark_statusKubeshark が実行中かどうかを確認-
start_kubesharkKubeshark をクラスターにデプロイ--allow-destructive
stop_kubesharkKubeshark をクラスターから削除--allow-destructive

利用可能なプロンプト

プロンプト説明
analyze_trafficAPI トラフィックパターンを分析し、問題を特定
find_errorsAPI エラーと障害を検索して要約
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 オプション

オプション説明
--urlKubeshark Hub への直接 URL
--kubeconfigkubeconfig ファイルへのパス
--allow-destructive開始/停止操作を有効化
--list-tools利用可能なツールを一覧表示して終了
--mcp-configClaude 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 Registry に公開されます。

このディレクトリの server.json は参照ファイルです。実際のレジストリメタデータ (バージョン、SHA256 ハッシュ) は、リリースワークフロー中に自動生成されます。詳細は .github/workflows/release.yml を参照してください。

リンク

ライセンス

Apache-2.0