mcpField
I
Inspektor Gadget MCP Server

Inspektor Gadget MCP Server

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

Inspektor Gadget MCP Server について

Inspektor Gadget MCP Server は、Inspektor Gadget の eBPF によるカーネル観測データを LLM に接続し、コンテナや Kubernetes ワークロードの調査に使えます。gadget のライフサイクル管理やメタデータに基づくツール登録に対応し、フォアグラウンド、バックグラウンド、読み取り専用の各モードを備えています。

主な機能

  1. 01gadget のデプロイ、実行、結果の管理
  2. 02メタデータに基づくツールの動的登録
  3. 03フォアグラウンドとバックグラウンドの観測
  4. 04DNS、TCP、プロセス、ファイルイベントの収集
  5. 05Kubernetes メタデータ付き構造化テレメトリー
  6. 06読み取り専用モードと複数のデプロイ方式

活用シーン

  1. 01Kubernetes Pod の DNS 障害の調査
  2. 02TCP 接続失敗やネットワークイベントの分析
  3. 03プロセス実行、ファイルアクセス、OOM イベントの調査
  4. 04観測 gadget のデプロイとバックグラウンド結果の取得

MCP 対応

Inspektor Gadget の観測機能とライフサイクル操作を MCP ツールとして公開します。クライアントは gadget を実行し、構造化テレメトリーを取得できます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"inspektor-gadget": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"KUBECONFIG",
"ghcr.io/mqasimsarfraz/inspektor-gadget-mcp-server:latest"
],
"env": {
"KUBECONFIG": "<KUBECONFIG>"
}
}
}
}
起動コマンドdocker run -i --rm -e KUBECONFIG ghcr.io/mqasimsarfraz/inspektor-gadget-mcp-server:latest
設定が必要な環境変数
KUBECONFIG

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

パッケージ
ocighcr.io/mqasimsarfraz/inspektor-gadget-mcp-server:latest

ツール

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

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

詳細

GitHub Release License Slack Go Report Card Examples Ask DeepWiki

Inspektor Gadget MCP Server

Inspektor Gadget MCP Server は、Inspektor Gadget の低レベルなカーネル可観測性と LLM を、Model Context Protocol (MCP) を介して橋渡しします。eBPF を活用した生のテレメトリーデータ——DNS トレース、TCP 接続、プロセス実行、ファイルアクティビティ、システムコールなど——を、AI エージェントが推論できる実用的なインテリジェンスに変換し、IDE や AI チャットインターフェースから直接、データに基づく根本原因分析を可能にします。

flowchart LR
    User["👤 User<br/>(IDE / Chat)"]
    LLM["🤖 LLM"]
    MCP["⚙️ IG MCP Server"]
    IG["🔍 Inspektor Gadget"]
    Kernel["🐧 Linux Kernel<br/>(eBPF)"]
    K8s["☸️ Kubernetes<br/>Cluster"]

    User -- prompt --> LLM
    LLM -- MCP tool calls --> MCP
    MCP -- run gadgets --> IG
    IG -- eBPF hooks --> Kernel
    Kernel -. telemetry .-> IG
    IG -. enriched data .-> MCP
    MCP -. structured JSON .-> LLM
    LLM -- analysis & RCA --> User
    IG -- metadata --> K8s

機能

  • AI による根本原因分析 — LLM が複数のガジェットにまたがる低レベルなカーネルデータを相関させ、推測ではなく証拠に基づいて問題を高い信頼性で特定します。
  • ガジェットのライフサイクル全体の管理 — AI チャットから離れることなく、Inspektor Gadget のツールをデプロイ、実行、停止し、結果を取得できます。
  • フォアグラウンドモードとバックグラウンドモード — 迅速なデバッグにはフォアグラウンドで、継続的な可観測性にはバックグラウンドでガジェットを実行し、準備ができたら結果を取得できます。
  • 動的なツール登録 — 各ガジェットが独自の MCP ツール(例: gadget_trace_dns、gadget_trace_tcp)となり、パラメーター、フィールドの説明、フィルタリングはガジェットのメタデータから自動的に生成されます。
  • 読み取り専用モード — 本番環境で安全に使用するために、サーバーを非破壊的な操作に制限します。
  • 柔軟なデプロイ — ローカルバイナリ(stdio)、Docker コンテナとして実行するか、Kubernetes クラスターに直接デプロイ(HTTP トランスポート)できます。

背景

可観測性のギャップ

Kubernetes のトラブルシューティングは困難です。従来のツールはログ、メトリクス、高レベルのリソース状態を提供しますが、ネットワーク、システムコール、カーネルレベルで問題が発生した場合、見えるもの と 実際に起きていること の間にギャップが存在します。

Inspektor Gadget は、このギャップを埋めます。ガジェットと呼ばれるモジュール式の可観測性ユニット——Linux カーネルにフックして低レベルなテレメトリーデータをリアルタイムで収集する eBPF プログラム——を提供します。ガジェットは DNS クエリ、TCP 接続、プロセス実行、ファイルオープン、シグナル、OOM キル、システムコールなどをトレースでき、そのすべてが Kubernetes のメタデータ(Pod、Namespace、コンテナ、ノード)で強化されています。

LLM が状況を一変させる理由

このカーネルレベルのデータは強力な武器ですが、同時に 高密度 でもあります。わずか 10 秒の DNS トレースでさえ、数十の Pod にまたがる数百のイベントを生成することがあります。生のテレメトリを手作業で精査し、イベントを関連付け、異常を特定し、根本原因を突き止めるには、深い専門知識とかなりの時間が必要です。

LLM はその欠けていたピースです。Inspektor Gadget を MCP 経由で公開することで、AI エージェントは次のことができるようになります。

  1. 適切なガジェットを自律的に選択する — 問題の説明が与えられると、LLM はどのテレメトリを収集すべきか(DNS トレース? TCP 接続? プロセス実行?)を判断します。どのガジェットを実行すべきかをあなたが知っている必要はありません。
  2. データソースを横断して関連付ける — AI は複数のガジェットを実行し、それらの出力を照合して、何が起きたのかの完全な全体像を構築できます。
  3. 確信を持ったデータ駆動型の RCA を実行する — 推測する代わりに、LLM は実際のカーネルレベルの証拠に基づいて分析を行い、失敗した正確な DNS ルックアップ、拒否された正確な TCP 接続、あるいは OOM kill を引き起こした特定のプロセスを特定します。
  4. 調査結果を平易な言葉で説明する — 生の eBPF 出力が、具体的な次のステップを伴う明確で実行可能なサマリーになります。
sequenceDiagram
    actor User
    participant LLM
    participant MCP as IG MCP Server
    participant IG as Inspektor Gadget
    participant K8s as Kubernetes

    User->>LLM: "DNS is failing for my pod in default namespace"
    activate LLM
    LLM->>MCP: ig_deploy(action: is_deployed)
    MCP-->>LLM: ✅ Deployed
    LLM->>MCP: gadget_trace_dns(namespace: default, duration: 10s)
    MCP->>IG: Run trace_dns gadget
    IG->>K8s: Attach eBPF probes
    K8s-->>IG: DNS events (queries, responses, latencies)
    IG-->>MCP: Enriched telemetry (pod, namespace, container)
    MCP-->>LLM: Structured JSON results
    LLM->>MCP: gadget_trace_dns(namespace: kube-system, duration: 10s)
    MCP->>IG: Run trace_dns on kube-system
    IG-->>MCP: CoreDNS telemetry
    MCP-->>LLM: Structured JSON results
    deactivate LLM
    LLM->>User: 📋 RCA: "NXDOMAIN errors for service.wrong-ns.svc.cluster.local — the service is in a different namespace. Latency is normal (2-5ms), CoreDNS is healthy."
実際の動作を見る

AI は関連するガジェットを選択し、データを収集し、結果を分析します — これらすべてを 1 つの会話の流れの中で行います。

https://github.com/user-attachments/assets/0f146943-3bf9-4c4d-90c8-76a101d7a4b4

LLM は gadget_tcpdump と gadget_snapshot_socket を自律的に実行して TCP 接続の RESET イベントを捕捉し、その後、強化されたテレメトリを分析して、拒否された正確な接続を特定し、それを Pod およびコンテナのメタデータと関連付けることで、正確な根本原因分析を提供します。

クイックスタート

  1. Docker と有効な kubeconfig ファイルがあることを確認します
  2. IDE または CLI で MCP サーバーを設定します — VS Code、GitHub Copilot CLI、Claude Code、その他の MCP 互換クライアントを対象としたセットアップガイドについては INSTALL.md を参照してください
  3. チャットを開始します: 「DNS トラフィックを見せて」、「失敗した TCP 接続はありますか?」、または 「Inspektor Gadget をデプロイして」
  4. 詳細なウォークスルーについては examples を参照してください

インストール

IG MCP Server は Docker、バイナリ、または Kubernetes クラスタへ直接 デプロイしてインストールできます。完全な手順、クライアントのセットアップ(VS Code、Copilot CLI、Claude Code)、およびすべての設定オプションについては、インストールガイド を参照してください。

利用可能なツール

Inspektor Gadget のライフサイクル
ツール説明
ig_deployクラスタ上の Inspektor Gadget をデプロイ、アップグレード、アンデプロイ、またはステータスの確認を行います
ガジェット管理
ツール説明
ig_gadgets実行中のガジェットの一覧表示、バックグラウンド実行からの結果の取得、またはガジェットの停止を行います
Gadget ツール(動的に登録)

各 Gadget は、gadget_ というプレフィックスが付いた独自の MCP ツールとして登録され、完全なパラメーターをサポートします。利用可能な Gadget は設定によって異なります:

カテゴリツールの例機能
トレーシングgadget_trace_dns、gadget_trace_tcp、gadget_trace_exec、gadget_trace_open、gadget_trace_signal、gadget_trace_bindリアルタイムイベント(DNS クエリ、TCP 接続、プロセス実行、ファイルオープン、シグナル、ソケットバインド)をキャプチャします
スナップショットgadget_snapshot_process、gadget_snapshot_socket実行中のプロセスまたは開いているソケットの特定時点のスナップショット
Topgadget_top_file、gadget_top_tcp、gadget_top_blockioリソース消費量の上位(ファイル I/O、TCP トラフィック、ブロック I/O)を定期的にレポートします
プロファイリングgadget_profile_blockio、gadget_profile_tcprttブロック I/O レイテンシーまたは TCP ラウンドトリップ時間をプロファイリングします
セキュリティgadget_trace_capabilities、gadget_advise_seccomp、gadget_audit_seccomp、gadget_trace_lsmケイパビリティチェックのトレース、seccomp プロファイルの提案/監査、LSM フックのトレース
高度な機能gadget_traceloop、gadget_trace_oomkill、gadget_trace_ssl、gadget_deadlockシステムコールフライトレコーダー、OOM kill トレーシング、SSL/TLS キャプチャ、デッドロック検出

各ツールはフォアグラウンド(デフォルト)とバックグラウンドの実行モード、フィールドレベルの出力フィルタリングをサポートし、LLM が自動的に要約する構造化 JSON 出力を生成します。

⚠️ コンテキストウィンドウに関する注意: 登録されたすべての MCP ツールは LLM のコンテキストウィンドウの一部を消費します — ツール定義、パラメータースキーマ、フィールドの説明はすべて制限にカウントされます。コンテキストウィンドウが小さいモデルを使用している場合、または Gadget の出力と分析に利用できるスペースを最大化したい場合は、Artifact Hub を通じて利用可能なすべての Gadget を検出する代わりに、-gadget-images を使用して必要な Gadget だけをロードしてください。たとえば、-gadget-images=trace_dns:latest,trace_tcp:latest は 30 以上のツールではなく 2 つのツールだけを登録します。

Gadget の検出

利用可能な Gadget を制御します:

  • 自動: Artifact Hub から検出(-gadget-discoverer=artifacthub)
  • 手動: 正確な Gadget を指定(-gadget-images=trace_dns:latest,trace_tcp:latest)

すべての設定オプションについては INSTALL.md を参照してください。

例

例説明スクリーンショット
DNS デバッグクエリをトレースし、障害を検出し、レイテンシーパターンを分析することで DNS 解決の問題をトラブルシューティングしますDNS デバッグ
Kubernetes の理解バックグラウンドモードで複数の Gadget を使用して、デプロイ中のリアルタイムのクラスターアクティビティを観察しますK8s の理解
セキュリティオブザーバビリティプロセスの実行とファイルアクセスパターンを監視することで疑わしいアクティビティを検出しますセキュリティ
システムコールの記録ポッドの動作を深くデバッグするためにシステムコールのシーケンスを記録および再生しますシステムコール

セキュリティに関する注意

  • kubeconfig ファイルへの読み取り専用アクセスが必要です
  • Artifact Hub の検出のためにネットワークアクセスが必要です
  • 非破壊的な操作に制限する -read-only モードをサポートします
  • 最小限の権限でサーバーをセットアップする方法については セキュリティガイド を参照してください

リソース

関連プロジェクト

  • Inspektor Gadget — Linux および Kubernetes 向けの eBPF ベースの可観測性ツール
  • MCP 仕様 — Model Context Protocol

ライセンス

Apache License 2.0 — 詳細は LICENSE をご覧ください。

コメント

MCP は初めてですか?

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

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