mcpField
S
SSH Fleet

SSH Fleet

本地服务
github.com/inhuman云与基础设施014 周前更新

关于 SSH Fleet

SSH Fleet 是供 Agent 使用的 MCP 服务,可诊断或执行 Kubernetes 外部 SSH 主机群中的命令,并通过允许列表限制主机范围。它将精选只读检查与单主机任意命令分开处理。

主要功能

  1. 01按标签检查多台主机
  2. 02在单台主机执行命令
  3. 03默认拒绝的主机允许列表
  4. 04SSH 密钥不进入模型上下文
  5. 05输出上限与单主机超时

适用场景

  1. 01检查运行时间、磁盘、内存、故障或日志
  2. 02在允许列表中的主机运行命令

MCP 相关

通过 Streamable HTTP、SSE 或 stdio 向 MCP 客户端提供 `ssh_probe` 和 `ssh_exec` 工具。任意命令的访问审批由 MCP 客户端负责。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"inhuman-mcp-ssh-fleet": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"SSH_FLEET_TRANSPORT",
"-e",
"SSH_FLEET_CMD_TIMEOUT_SECONDS",
"-e",
"SSH_FLEET_OUTPUT_CAP_BYTES",
"-e",
"SSH_FLEET_PROBE_CONCURRENCY",
"-e",
"SSH_FLEET_PROBE_MAX_HOSTS",
"-e",
"SSH_FLEET_AUTH_TOKEN",
"ghcr.io/inhuman/mcp-ssh-fleet:0.1.5"
],
"env": {
"SSH_FLEET_TRANSPORT": "<SSH_FLEET_TRANSPORT>",
"SSH_FLEET_CMD_TIMEOUT_SECONDS": "<SSH_FLEET_CMD_TIMEOUT_SECONDS>",
"SSH_FLEET_OUTPUT_CAP_BYTES": "<SSH_FLEET_OUTPUT_CAP_BYTES>",
"SSH_FLEET_PROBE_CONCURRENCY": "<SSH_FLEET_PROBE_CONCURRENCY>",
"SSH_FLEET_PROBE_MAX_HOSTS": "<SSH_FLEET_PROBE_MAX_HOSTS>",
"SSH_FLEET_AUTH_TOKEN": "<SSH_FLEET_AUTH_TOKEN>"
}
}
}
}
启动命令docker run -i --rm -e SSH_FLEET_TRANSPORT -e SSH_FLEET_CMD_TIMEOUT_SECONDS -e SSH_FLEET_OUTPUT_CAP_BYTES -e SSH_FLEET_PROBE_CONCURRENCY -e SSH_FLEET_PROBE_MAX_HOSTS -e SSH_FLEET_AUTH_TOKEN ghcr.io/inhuman/mcp-ssh-fleet:0.1.5
需要配置的环境变量
SSH_FLEET_TRANSPORTMCP transport. Must be 'stdio' for direct docker/stdio use.
SSH_FLEET_CMD_TIMEOUT_SECONDSPer-host command timeout in seconds (1..600).
SSH_FLEET_OUTPUT_CAP_BYTESCap on output bytes per host section (>=256).
SSH_FLEET_PROBE_CONCURRENCYParallelism for ssh_probe.
SSH_FLEET_PROBE_MAX_HOSTSSafety cap on the number of hosts in one probe.
SSH_FLEET_AUTH_TOKEN密钥Optional X-MCP-AUTH bearer token (only used by the http/sse transports).

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/inhuman/mcp-ssh-fleet:0.1.5

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

mcp-ssh-fleet

English | Русский

Version MCP Registry Container Build Go Version Go Report Card License: MIT Issues Last Commit

MCP 服务通过 SSH 为 Agent 提供两种工具,用于访问 Kubernetes 之外的一组主机。SSH 密钥作为挂载的机密数据(不会进入模型上下文);清单是默认拒绝的允许列表。

工具

  • ssh_probe(tags, check) — 对携带指定标签的每台主机执行精选的只读诊断(AND 语义,与 GitLab runner 标签类似)。check 是内置检查项之一:uptime、disk、mem、failed、logs。不能传入任意命令。类别:read-only。
  • ssh_exec(host, command) — 在一台清单中的主机上执行一条任意的非交互式命令(按名称或地址指定;拒绝清单之外的主机)。类别:write-external:服务执行命令,而访问控制(审批/RBAC)由 MCP 客户端负责。

两者均支持:输出大小上限、每台主机的超时设置、TOFU 主机密钥检查(指纹记录在日志中),输出按主机分为独立区段。

配置(环境变量)

变量默认值含义
SSH_FLEET_TRANSPORThttphttp(StreamableHTTP,端点 /mcp)| sse | stdio
SSH_FLEET_ADDR:8080http/sse 的监听地址
SSH_FLEET_AUTH_TOKEN—可选的 X-MCP-AUTH 令牌
SSH_FLEET_INVENTORY_PATH/etc/ssh-fleet/inventory.yaml清单的路径(configmap)
SSH_FLEET_KEY_PATH/etc/ssh-fleet/id_ed25519私钥的路径(secret)
SSH_FLEET_OUTPUT_CAP_BYTES8192每个区段的输出上限
SSH_FLEET_CMD_TIMEOUT_SECONDS20每台主机的超时时间
SSH_FLEET_PROBE_CONCURRENCY8探测并行度
SSH_FLEET_PROBE_MAX_HOSTS50每次探测的主机数量安全上限

清单格式请参见 deploy/inventory.example.yaml。

快速开始(docker,stdio)

docker run -i --rm \
  -v /path/to/inventory.yaml:/etc/ssh-fleet/inventory.yaml:ro \
  -v /path/to/id_ed25519:/etc/ssh-fleet/id_ed25519:ro \
  -e SSH_FLEET_TRANSPORT=stdio \
  ghcr.io/inhuman/mcp-ssh-fleet:latest

这是 MCP 客户端从 MCP Registry(io.github.inhuman/mcp-ssh-fleet)安装时使用的配置格式。

连接 MCP 客户端(http/sse)

默认情况下,服务使用 StreamableHTTP;将其注册为常规 HTTP MCP 服务,端点为 /mcp(URL 类似 http://<host>:8080/mcp)。客户端即可使用这两种工具。

客户端安全建议:

  • ssh_probe 为 read-only(仅执行精选检查),可广泛授权。
  • ssh_exec 可执行任意命令(write-external)。请在客户端侧控制其访问(审批 / RBAC / 用户允许列表)——服务只会在清单中的主机上执行命令,不负责制定访问策略。

开发

make test        # unit tests + e2e against a real in-process SSH server
make vet
make vulncheck
make build
make docker

发布:标记 vX.Y.Z → GitHub Actions 构建多架构镜像并将其发布到 ghcr.io/inhuman/mcp-ssh-fleet。

评论

支持 Markdown

第一次接触 MCP?

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

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