Inspektor Gadget MCP Server について
Inspektor Gadget MCP Server は、Inspektor Gadget の eBPF によるカーネル観測データを LLM に接続し、コンテナや Kubernetes ワークロードの調査に使えます。gadget のライフサイクル管理やメタデータに基づくツール登録に対応し、フォアグラウンド、バックグラウンド、読み取り専用の各モードを備えています。
主な機能
- 01gadget のデプロイ、実行、結果の管理
- 02メタデータに基づくツールの動的登録
- 03フォアグラウンドとバックグラウンドの観測
- 04DNS、TCP、プロセス、ファイルイベントの収集
- 05Kubernetes メタデータ付き構造化テレメトリー
- 06読み取り専用モードと複数のデプロイ方式
活用シーン
- 01Kubernetes Pod の DNS 障害の調査
- 02TCP 接続失敗やネットワークイベントの分析
- 03プロセス実行、ファイルアクセス、OOM イベントの調査
- 04観測 gadget のデプロイとバックグラウンド結果の取得
MCP 対応
Inspektor Gadget の観測機能とライフサイクル操作を MCP ツールとして公開します。クライアントは gadget を実行し、構造化テレメトリーを取得できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm -e KUBECONFIG ghcr.io/mqasimsarfraz/inspektor-gadget-mcp-server:latestKUBECONFIGローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/mqasimsarfraz/inspektor-gadget-mcp-server:lateststdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
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 エージェントは次のことができるようになります。
- 適切なガジェットを自律的に選択する — 問題の説明が与えられると、LLM はどのテレメトリを収集すべきか(DNS トレース? TCP 接続? プロセス実行?)を判断します。どのガジェットを実行すべきかをあなたが知っている必要はありません。
- データソースを横断して関連付ける — AI は複数のガジェットを実行し、それらの出力を照合して、何が起きたのかの完全な全体像を構築できます。
- 確信を持ったデータ駆動型の RCA を実行する — 推測する代わりに、LLM は実際のカーネルレベルの証拠に基づいて分析を行い、失敗した正確な DNS ルックアップ、拒否された正確な TCP 接続、あるいは OOM kill を引き起こした特定のプロセスを特定します。
- 調査結果を平易な言葉で説明する — 生の 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 およびコンテナのメタデータと関連付けることで、正確な根本原因分析を提供します。
クイックスタート
- Docker と有効な
kubeconfigファイルがあることを確認します - IDE または CLI で MCP サーバーを設定します — VS Code、GitHub Copilot CLI、Claude Code、その他の MCP 互換クライアントを対象としたセットアップガイドについては INSTALL.md を参照してください
- チャットを開始します: 「DNS トラフィックを見せて」、「失敗した TCP 接続はありますか?」、または 「Inspektor Gadget をデプロイして」
- 詳細なウォークスルーについては 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 | 実行中のプロセスまたは開いているソケットの特定時点のスナップショット |
| Top | gadget_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 解決の問題をトラブルシューティングします | ![]() |
| Kubernetes の理解 | バックグラウンドモードで複数の Gadget を使用して、デプロイ中のリアルタイムのクラスターアクティビティを観察します | ![]() |
| セキュリティオブザーバビリティ | プロセスの実行とファイルアクセスパターンを監視することで疑わしいアクティビティを検出します | ![]() |
| システムコールの記録 | ポッドの動作を深くデバッグするためにシステムコールのシーケンスを記録および再生します | ![]() |
セキュリティに関する注意
- kubeconfig ファイルへの読み取り専用アクセスが必要です
- Artifact Hub の検出のためにネットワークアクセスが必要です
- 非破壊的な操作に制限する
-read-onlyモードをサポートします - 最小限の権限でサーバーをセットアップする方法については セキュリティガイド を参照してください
リソース
- 📖 ドキュメント
- 🔍 サンプル
- 📋 インストールガイド
- 🐛 イシュー
- 💬 Slack
- 🌐 ウェブサイト
- 📋 トラブルシューティング
- 🔒 セキュリティガイド
- 🤝 コントリビューション
関連プロジェクト
- Inspektor Gadget — Linux および Kubernetes 向けの eBPF ベースの可観測性ツール
- MCP 仕様 — Model Context Protocol
ライセンス
Apache License 2.0 — 詳細は LICENSE をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。



