关于 rootpilot-ssh-diagnose
rootpilot-ssh-diagnose 是通过 SSH 收集 Linux 只读诊断信息的 MCP 服务,由连接的大模型分析故障原因。它使用可审计的命令白名单,并在返回结果前隐藏机密。
主要功能
- 0138 条只读命令白名单
- 02列出主机并探测 SSH 连通性
- 03返回结构化且已脱敏的诊断结果
- 04基础概览与容器深度检查
- 05内置诊断和健康检查提示词
适用场景
- 01收集 Linux 主机异常时的证据
- 02检查 Docker 容器且不更改主机状态
- 03检查已配置主机的 SSH 连通性
MCP 相关
向 MCP 客户端提供诊断工具和两个提示词。模型选择所需证据并解读结果;服务本身不分析故障。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @rootpilot/mcp-ssh-diagnoseRP_HOSTSPath to your hosts.json (see hosts.example.json in the repo)RP_PROBE_URLTarget URL for the outbound-connectivity / DNS probes (default: https://cloudflare.com)本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
5收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| probe | boolean | 否 | 同时测试 SSH 可达性 |
详细介绍
rootpilot-ssh-diagnose
这是 RootPilot 开源且支持自选大模型的版本。完整产品还提供经过校准的诊断(针对 29 种标准故障场景的准确率为 89.7%,对健康主机零误报)、告警触发的自动诊断、历史记录和多主机管理 → rootpilotx.com · 部署仓库:rootpilot-release
一个 MCP 服务,让任何 MCP 客户端——Claude Desktop、Claude Code 或你自己的客户端——都能通过 SSH 安全地从你的服务器收集只读诊断信息。它会从固定的只读命令白名单中收集证据;由你的模型进行推理。此服务绝不会运行白名单之外的任何命令,也绝不会更改你的主机。
为什么要使用
服务器出现异常时,你通常得 SSH 登录并运行同样的二十条命令——df -h、docker ps、dmesg | grep -i oom、free -m——然后盯着输出逐一查看。此服务将这一过程变成对话:你的大模型会请求它所需的确切证据,获得经过结构化处理且已脱敏的输出,再据此推断根本原因。你始终掌握控制权;除 SSH 连接到你自己的主机外,没有任何信息会离开你的机器。
安全模型(请先阅读)
- 只读白名单。 内置命令恰好有 38 条(
get_whitelist会列出全部命令)。没有任何工具可以运行任意命令——即使需要确认也不行。每条命令都只检查状态。 - 唯一可注入的值是容器名称,在放入命令之前会先根据
^[a-zA-Z0-9_.-]+$进行验证。web; rm -rf /会被拒绝,而不是转义。 - 输出中的机密信息会在到达模型之前脱敏:
KEY=value格式的机密信息、Bearer/Basic令牌、sk-/ghp_/AKIA…形式的密钥、PEM 私钥块,以及嵌入 URL 中的凭据。docker inspect的环境变量值也会经过清理。 - 每条命令都有超时限制(15s),并设有输出截断保护,避免命令挂起或输出过多。
- 凭据保留在本地。 主机定义保存在由你控制的文件中;密码绝不会被记录。
30 秒完成设置
将此服务添加到你的 MCP 客户端。对于 Claude Desktop(claude_desktop_config.json):
{
"mcpServers": {
"rootpilot-ssh-diagnose": {
"command": "npx",
"args": ["-y", "@rootpilot/mcp-ssh-diagnose"],
"env": {
"RP_HOSTS": "/Users/me/.rootpilot-mcp/hosts.json"
}
}
}
}
然后创建 hosts.json(参见 hosts.example.json):
[
{ "name": "prod-1", "host": "1.2.3.4", "port": 22, "user": "rootpilot",
"auth": { "type": "key", "keyPath": "~/.ssh/rootpilot_key" } },
{ "name": "prod-2", "host": "10.0.0.5", "user": "ops",
"auth": { "type": "password", "password": "..." } }
]
重启客户端。向它询问:“诊断 prod-1”(或运行 diagnose-host 提示词)。
请使用权限最小化的账户。 请为诊断创建专用的只读 SSH 用户,而不要重复使用 root。虽然这些命令只会读取状态,但账户权限也应体现这一点。
工具
| 工具 | 参数 | 功能 |
|---|---|---|
list_hosts | probe? | 列出已配置的主机;使用 probe 时还会测试 SSH 连通性 |
get_whitelist | — | 返回全部 38 条命令(键、用途、模板),让你和模型能准确审查哪些命令可以运行 |
collect | host、keys[](≤8)、container? | 运行指定的白名单命令,并返回经过脱敏和截断的输出 |
collect_base | host | 快捷方式:获取基础概览(docker_ps、df、df_inode、free、uptime、dmesg_oom、docker_daemon) |
container_deep_dive | host、container | 快捷方式:针对一个容器运行 docker_logs、docker_inspect(已脱敏)、container_state、docker_stats |
内置提供两个提示词:diagnose-host(以证据为先的根本原因排查流程)和 health-check(快速巡检)。
配置
| 环境变量 | 默认值 | 用途 |
|---|---|---|
RP_HOSTS | — | hosts.json 的路径(必填) |
RP_PROBE_URL | https://cloudflare.com | 用于出站连接/DNS 探测的目标 |
RP_NO_PROMO | — | 设为 1 可关闭指向完整产品的一行提示 |
工作原理
your MCP client (the LLM)
│ "collect df, docker_ps, dmesg_oom from prod-1"
▼
rootpilot-ssh-diagnose ──ssh──▶ your server
│ renders a whitelisted template, runs it read-only,
│ redacts secrets, truncates, returns structured output
▼
the LLM reasons about root cause from the evidence
该服务刻意不执行任何自行分析——没有内置的大模型调用,也没有多轮编排。这样的边界正是关键所在:它是一个简洁、可审计的证据收集工具。经校准的诊断(针对不同症状,在后续轮次中决定要收集哪些证据,并依据故障场景库进行评分)是完整的 RootPilot 产品所提供的功能。
常见问题
它会更改我的服务器吗? 不会。所有命令都只读,也没有可执行任意命令的工具。完整的白名单可通过 get_whitelist 查看。
我的数据会传到哪里? 除了在此服务(运行于你的机器上)与主机之间通过 SSH 传输外,不会传到任何地方。命令输出会发送给你的 MCP 客户端所使用的大模型。不会收集遥测数据。
它使用哪个大模型? 它自身不使用任何大模型——你需要自备大模型。你的 MCP 客户端运行的模型会负责推理。
它能管理 Windows 服务器或跳板机吗? v1 暂不支持。它面向通过直接 SSH 连接的 Linux 主机。
它与 RootPilot 有何不同? 它负责收集证据;由你(或你的模型)临时解读。RootPilot 还提供经校准的诊断、由告警触发的自动诊断、每台主机的历史记录(“病历”)以及多主机管理。参见 rootpilotx.com。
开发
npm install
npm run build # compile to dist/
npm test # whitelist / injection / redaction / timeout tests
npm run typecheck
许可证
MIT——参见 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。