mcpField
N
NVSentinel Lab

NVSentinel Lab

ローカル
github.com/omerfsenその他01 日前に更新

NVSentinel Lab について

NVSentinel Labは、kindのラボクラスターでNVIDIA NVSentinelのGPU障害検知とノード処理を試すMCPサーバーです。状態確認や模擬障害の注入、隔離・ドレインの検証ができ、NVSentinel自体はインストールしません。

主な機能

  1. 01ノード、Pod、ワークロードの状態確認
  2. 02シナリオ、ログ、ノードイベントの確認
  3. 03模擬GPU障害の注入と解除
  4. 04障害テストシナリオの一括実行
  5. 05ラボ変更ツールは既定で無効

活用シーン

  1. 01XID 95の検知とノード隔離を検証
  2. 02DCGM障害の報告と復旧をテスト
  3. 03kindクラスターでワークロードの退避を確認
  4. 04MCP経由でNVSentinelの報告を確認

MCP 対応

stdio経由で、ラボの状態・ログ・イベントの確認や模擬障害テストを行うMCPツールをクライアントに提供します。クラスターを変更するツールは既定で無効で、有効化してもkindのラボに限定されます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"omerfsen-nvidia-nvsentinel": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"NVSENTINEL_MCP_KUBECONFIG",
"-e",
"NVSENTINEL_MCP_ALLOW_CHANGES",
"-e",
"NVSENTINEL_MCP_LAB_CONTEXT",
"docker.io/omerfsen/nvidia-nvsentinel-mcp:0.5.1"
],
"env": {
"NVSENTINEL_MCP_KUBECONFIG": "<NVSENTINEL_MCP_KUBECONFIG>",
"NVSENTINEL_MCP_ALLOW_CHANGES": "<NVSENTINEL_MCP_ALLOW_CHANGES>",
"NVSENTINEL_MCP_LAB_CONTEXT": "<NVSENTINEL_MCP_LAB_CONTEXT>"
}
}
}
}
起動コマンドdocker run -i --rm -e NVSENTINEL_MCP_KUBECONFIG -e NVSENTINEL_MCP_ALLOW_CHANGES -e NVSENTINEL_MCP_LAB_CONTEXT docker.io/omerfsen/nvidia-nvsentinel-mcp:0.5.1
設定が必要な環境変数
NVSENTINEL_MCP_KUBECONFIGThe one kubeconfig it uses, private to you. Default in the image: /kube/config.
NVSENTINEL_MCP_ALLOW_CHANGESExactly true allows the change tools, on a kind cluster only. Off when unset.
NVSENTINEL_MCP_LAB_CONTEXTThe kubeconfig context changes need. Must start with kind-. Default kind-nvsentinel-lab.

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

パッケージ
ocidocker.io/omerfsen/nvidia-nvsentinel-mcp:0.5.1

ツール

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

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

詳細

nvidia-nvsentinel-mcp

Go で書かれた、ラボクラスター上で NVIDIA NVSentinel (Kubernetes 上の GPU 障害検出と修復)をテストする MCP サーバーです。NVSentinel 自体も Go で書かれています。Claude Code などの MCP クライアントは、NVSentinel の報告内容を読み取り、シミュレートされた GPU に障害を注入し、NVSentinel がノードを cordon してドレインすることを確認できます。

このリポジトリには、サーバーとテスト結果のサンプルが含まれています。NVSentinel はインストールしません。インストールするのは omerfsen.aicr で、クラスターは omerfsen.nvke または kind を使用します。将来的には上流へ貢献することを目指しています。docs/upstream.md を参照してください。

テスト結果

このサーバーを介して MCP 経由で取得した、kind 上の NVSentinel v1.30.0 の実際の出力です: docs/test-results。これらは、実際の GPU の状態ではなく、シミュレートされた DCGM に対する NVSentinel のパイプラインを検証するものです。

標準規格

このサーバーは次の標準規格に準拠しています。各要件、そのステータス、要件を証明するテスト、既知のギャップについては、最新版を確認するためのリンクとともに docs/mcp-standards.md に記載しています。

標準規格バージョン
Model Context Protocol2026-07-28、および 2024-11-05 までの各バージョン
MCP Registry server.json2025-12-11、有効かつ公開済み(0.5.1)
AGENTS.mdAGENTS.md、CLAUDE.md から読み込み
Agent Skillsskills/nvsentinel-lab

公式の 適合性テストスイート では実行していません。このスイートは HTTP サーバーのみをテストします。MCP にはドキュメントの記述に関する標準がないため、一般的な慣例に従い、docs/tools.md はサーバーから生成しています。

ツール

ツールラボを変更するか内容
lab_statusいいえノード(cordon の状態、NVSentinel の状態、失敗している GPU チェック)、Pod、ワークロード
list_scenariosいいえシナリオ、ステージ、許可されている XID、ログソース
wait_for_stageいいえcordoned など、指定したステージになるまでポーリング
component_logsいいえNVSentinel コンポーネントのログの末尾の行
node_eventsいいえGPU ノード上の最近のイベント
inject_faultはいシミュレートされた GPU に XID 95 を注入
clear_faultはい障害を解除するため、シミュレートされた hostengine を再起動
reset_labはいDCGM の停止と注入した障害を元に戻す
run_test_scenarioはいシナリオを最初から最後まで実行し、各ステップを報告
シナリオ確認内容
xid95XID 95 を注入:検出、cordon、ワークロードの退避、ドレイン成功。障害を解除:正常化、cordon 解除、ワークロード復帰
dcgm_outagehostengine を停止:モニターが DCGM との接続喪失を報告。復旧:状態がクリア

変更を伴うツールは、NVSENTINEL_MCP_ALLOW_CHANGES=true が設定されていない限り無効です。設定されている場合も、kind クラスターでのみ動作します。詳細は docs/security.md を参照してください。

各ツールの入力、出力、アノテーションについては docs/tools.md を参照してください。これは tools/list に対してサーバーが返す内容から生成されます。同様に、生データは docs/tools.json にあります。サーバーとの不一致があるとテストは失敗します。make docs で再生成できます。

インストール

サーバーには kubeconfig が必要です。kind のラボでは、make lab-token を実行すると kubeconfig が作成されます(kind でテストを実行するを参照)。MCP は stdio 経由で通信するため、どの MCP クライアントからでも起動できます。以下のコマンドでは変更は行われません。ラボに変更を加えるクライアントでのみ、-e NVSENTINEL_MCP_ALLOW_CHANGES=true を追加してください。

1. サーバーをインストールします。 使用するプラットフォーム向けのバイナリを最新リリースからダウンロードします。

プラットフォームファイル
Linux、x86-64nvidia-nvsentinel-mcp-linux-amd64
Linux、Armnvidia-nvsentinel-mcp-linux-arm64
macOS、Intelnvidia-nvsentinel-mcp-darwin-amd64
macOS、Apple シリコンnvidia-nvsentinel-mcp-darwin-arm64
Windows、x86-64nvidia-nvsentinel-mcp-windows-amd64.exe
Windows、Armnvidia-nvsentinel-mcp-windows-arm64.exe

Linux と macOS では、FILE にダウンロードしたファイルを設定します。

FILE=nvidia-nvsentinel-mcp-linux-amd64
BASE=https://github.com/omerfsen/nvidia-nvsentinel-mcp/releases/latest/download
curl -fsSLO "$BASE/$FILE"
curl -fsSL "$BASE/checksums.txt" | grep " $FILE\$" | sha256sum -c -   # macOS: shasum -a 256 -c -
gh attestation verify "$FILE" --repo omerfsen/nvidia-nvsentinel-mcp    # optional: who built it
install -m 755 "$FILE" ~/.local/bin/nvidia-nvsentinel-mcp

Windows では、PowerShell で kubeconfig を自分だけが読み取れる場所に保管してください。サーバーはその場所を確認できません。

$File = "nvidia-nvsentinel-mcp-windows-amd64.exe"
$Base = "https://github.com/omerfsen/nvidia-nvsentinel-mcp/releases/latest/download"
Invoke-WebRequest "$Base/$File" -OutFile "$HOME\bin\nvidia-nvsentinel-mcp.exe"

各リリースには checksums.txt と SBOM(nvidia-nvsentinel-mcp.sbom.cdx.json)も含まれます。動作確認済みなのは Linux の x86-64 のみで、その他のプラットフォーム向けはビルド済みですが、テストされていません。または、Go 1.27 でインストールできます。 go install github.com/omerfsen/nvidia-nvsentinel-mcp@latest または、root として実行されず、サイズが約 32 MB のイメージ docker.io/omerfsen/nvidia-nvsentinel-mcp を使用してください。

nvidia-nvsentinel-mcp --version で確認してください。フラグを指定せずに実行すると、stderr に 1 行ログを出力したあと、stdin で MCP クライアントからの入力を待つため、何もしていないように見えますが、これは正常です。Ctrl-C で停止します。--help でフラグを確認できます。また、--debug を指定すると、各ツール呼び出しとクラスターの詳細が stderr に記録されます。

2. クライアントに追加します。 バイナリが PATH 上にある場合、Claude Code では次のようにします。

claude mcp add nvsentinel-lab -- nvidia-nvsentinel-mcp

または、~/.local/bin/nvidia-nvsentinel-mcp のように、バイナリのフルパスを指定します。

イメージを使用する場合:

claude mcp add nvsentinel-lab -- docker run --rm -i --read-only --cap-drop=ALL \
  --security-opt=no-new-privileges --user "$(id -u):$(id -g)" --memory=128m --cpus=1 \
  --pids-limit=64 --network=kind \
  --volume "$HOME/.kube/nvsentinel-lab-mcp-docker.yaml:/kube/config:ro" \
  docker.io/omerfsen/nvidia-nvsentinel-mcp@sha256:cb6fba848870580f77d347d476a2a7003cd336cd6f4807a72928013538d7aed9

その他のクライアントでも、MCP 設定で同じコマンドを指定します。クライアントから参照できる PATH 上にバイナリがない場合は、フルパスを使用してください。

{ "mcpServers": { "nvsentinel-lab": { "command": "nvidia-nvsentinel-mcp" } } }

3. 任意:スキルを追加します。 スキルを追加すると、エージェントがツールの使い方を学習できます。スキルに含まれるのは手順のみなので、手順 1 と 2 も必要です。どちらのコマンドでも実行できます。

gh skill install omerfsen/nvidia-nvsentinel-mcp nvsentinel-lab
npx skills add omerfsen/nvidia-nvsentinel-mcp --skill nvsentinel-lab

GitHub CLI の v2.103.2 には gh mcp add がありません。スキルのインストールには gh skill を使用し、MCP サーバーはクライアントから追加します。このサーバーは、公式 MCP Registry に io.github.omerfsen/nvidia-nvsentinel-mcp として掲載されています。

kind でテストを実行する

Go、Docker、kubectl、helm、yq、約 10 GiB の空きメモリ、および make dev を実行済みの omerfsen/aicr のチェックアウトが必要です(https://github.com/omerfsen/aicr/pull/8 がマージされるまでは、dev/osen/nvsentinel-latest ブランチを使用してください)。

make lab-up           # the kind cluster, with its own kubeconfig
make lab-install      # NVSentinel v1.30.0 through omerfsen.aicr (AICR_DIR=<checkout>)
make lab-fixture      # simulated DCGM, a labelled node, a workload, the server's RBAC
make lab-token        # a kubeconfig for the server: its own identity, valid 8 hours
make e2e              # the tests, through the real binary over MCP; writes docs/test-results
make image e2e-image  # the same, with the server in its container
make lab-down

クラスターを使わないテストは、make lint test で実行できます。

Claude Code から使用する

サーバー自体の開発作業をする場合は、チェックアウトしたディレクトリで make build lab-token を実行し、その後このディレクトリで Claude Code を再起動して、.mcp.json からサーバーを承認します。この設定では変更が許可されます。

設定

変数デフォルト説明
NVSENTINEL_MCP_KUBECONFIG~/.kube/nvsentinel-lab-mcp.yaml(イメージの場合:/kube/config)使用する kubeconfig。非公開である必要があります(chmod 600)
NVSENTINEL_MCP_ALLOW_CHANGESオフtrue を指定すると、ラボ内でのみ変更ツールが有効になります
NVSENTINEL_MCP_LAB_CONTEXTkind-nvsentinel-lab変更ツールで使用するコンテキスト。kind- で始まる必要があります

テストしていないこと

  • Linux の x86-64 以外のバイナリです。クロスコンパイルされており、実行していません。
  • 実機の GPU です。RTX 4080 SUPER は NVSentinel の検証済みリストに含まれておらず、実際の DCGM ヘルスもまだ確認する必要があります。
  • kind ではなく、NVKE 上での AICR のインストールです。
  • 修復です。kind へのインストールでは cordon と drain までで停止します。AICR の修復ミックスインには metadata-collector が必要で、metadata-collector には NVML が必要です。
  • syslog モニターです。カーネルトランスポートのジャーナルエントリーを読み取りますが、kind ノードでは安全に生成できないため、kind では無効にしています。
  • イメージの cosign 署名と SBOM アテステーションを手動で検証することです。これらは添付済みで、ビルドの来歴のみを検証しました(gh attestation verify)。

すべての手順、失敗、行き詰まりについては、docs/build-log.md をご覧ください。

ライセンス

Apache-2.0。lab/gpu-spec.yaml と lab/fake-dcgm.yaml は NVSentinel に由来し、同じライセンスの下で提供されています。

M8ven スコア

コメント

MCP は初めてですか?

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

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