mcpField
N
NVSentinel Lab

NVSentinel Lab

本地服务
github.com/omerfsen其他01 天前更新

关于 NVSentinel Lab

NVSentinel Lab 是面向 kind 实验集群的 MCP 服务,用于测试 NVIDIA NVSentinel 的 GPU 故障检测与节点处置流程。它可读取状态、注入模拟故障并检查隔离和驱逐结果;不会安装 NVSentinel。

主要功能

  1. 01读取节点、Pod 和工作负载状态
  2. 02查看场景、日志及节点事件
  3. 03向模拟 GPU 注入和清除故障
  4. 04端到端运行故障测试场景
  5. 05默认关闭修改实验室的工具

适用场景

  1. 01验证 XID 95 检测及节点隔离流程
  2. 02测试 DCGM 中断的告警与恢复
  3. 03在 kind 集群中检查工作负载驱逐
  4. 04通过 MCP 查看 NVSentinel 报告

MCP 相关

该服务通过 stdio 提供 MCP 工具,供 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

用于在实验室集群上测试 NVIDIA NVSentinel(在 Kubernetes 上检测并修复 GPU 故障)的 MCP 服务。它与 NVSentinel 本身一样,使用 Go 编写。Claude Code 等 MCP 客户端可以读取 NVSentinel 的报告、在模拟 GPU 中注入故障,并检查 NVSentinel 是否隔离节点并驱逐其上的工作负载。

此仓库包含服务和示例测试结果,不负责安装 NVSentinel:安装由 omerfsen.aicr 完成,运行环境可以是来自 omerfsen.nvke 的集群或 kind。此项目未来计划贡献给上游:详见 docs/upstream.md。

测试结果

通过此服务和 MCP,在 kind 上运行 NVSentinel v1.30.0 得到的实际输出:docs/test-results。这些结果证明的是 NVSentinel 的流水线能够处理模拟的 DCGM,而非真实 GPU 的健康状况。

标准

此服务遵循以下标准。每项要求、对应状态、证明该要求的测试以及一个已知差距,均列于 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否节点(隔离状态、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是端到端运行一个场景并报告每个步骤
场景检查内容
xid95注入 XID 95:检测到故障、隔离节点、驱逐工作负载、成功完成驱逐。清除故障:节点恢复健康、解除隔离、工作负载恢复
dcgm_outage停止 hostengine:监控器报告 DCGM 连接丢失。恢复 hostengine:故障状态清除

除非设置 NVSENTINEL_MCP_ALLOW_CHANGES=true,否则会禁用会更改任何内容的工具;启用后,这些工具也只能在 kind 集群上运行。详情见:docs/security.md。

每个工具的输入、输出和注释见:docs/tools.md,该文档根据服务对 tools/list 的响应生成;原始数据见 docs/tools.json。如果两者不再与服务匹配,测试就会失败;运行 make docs 可重新生成文档。

安装

该服务需要一个 kubeconfig。对于 kind 实验环境,make lab-token 会生成一个(参见 在 kind 上运行测试)。它通过 stdio 使用 MCP,因此任何 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。或者使用镜像 docker.io/omerfsen/nvidia-nvsentinel-mcp,它始终不会以 root 身份运行,大小约为 32 MB。

使用 nvidia-nvsentinel-mcp --version 检查。无标志运行时,它会向 stderr 写入一行日志,然后 等待 stdin 上的 MCP 客户端,因此看起来会处于空闲状态:这是正常的,按 Ctrl-C 可停止它。--help 会列出 标志,--debug 会将每次工具调用和集群详细信息记录到 stderr。

2. 添加到客户端。 对于 Claude Code,假设二进制文件已在你的 PATH 中:

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. 可选:添加技能,让 Agent 学会如何使用这些工具。技能只包含 说明,因此仍需完成步骤 1 和 2。以下任一命令均可:

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

截至 v2.103.2,GitHub CLI 没有 gh mcp add:gh skill 用于安装技能,MCP 服务 则通过客户端添加。该服务已在官方 MCP Registry 中列出,名称为 io.github.omerfsen/nvidia-nvsentinel-mcp。

在 kind 上运行测试

需要 Go、Docker、kubectl、helm、yq、约 10 GiB 可用内存,以及 omerfsen/aicr 的检出副本,并已运行 make dev(在 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 健康状况仍待检查。
  • AICR 在 NVKE 上的安装(而非 kind)。
  • 修复操作。kind 安装流程止于 cordon 和 drain:AICR 的修复 mixin 需要 metadata-collector,而后者需要 NVML。
  • syslog 监控器:它读取 kernel-transport 日志条目,而 kind 节点无法安全地产生这些条目,因此在 kind 上未启用。
  • 手动验证镜像的 cosign 签名和 SBOM 证明:它们已附加,且仅验证了构建来源(gh attestation verify)。

所有步骤、失败和碰壁记录都在 docs/build-log.md 中。

许可证

Apache-2.0。lab/gpu-spec.yaml 和 lab/fake-dcgm.yaml 来自 NVSentinel,遵循相同的许可证。

M8ven Score

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。