
SSH Fleet
io.github.inhumanPublished by GitHub account inhumanv0.1.5Updated Oct 24, 2026
Curated ssh_probe diagnostics and single-host ssh_exec over an allowlisted SSH fleet.
Overview
Lets an assistant run curated read-only diagnostics across an allowlisted SSH fleet and one arbitrary command on a single inventory host.
- What you can do
- Exposes two SSH tools. ssh_probe(tags, check) runs built-in read-only checks (uptime, disk, mem, failed, logs) on every host matching the given tags, with AND semantics; arbitrary commands cannot be passed. ssh_exec(host, command) runs one arbitrary non-interactive command on a single inventory host, refusing hosts outside the inventory. Output is capped per host section, with per-host timeouts and a TOFU host-key check whose fingerprint is logged.
- When to use it
- Useful when an assistant needs routine fleet health checks across many tagged hosts, or a single targeted command on a known host, without giving it a general SSH shell. The read-only probe can be granted broadly; ssh_exec is meant for narrower, gated use.
- Requirements
- Runs locally as a stdio process, typically via the Docker image ghcr.io/inhuman/mcp-ssh-fleet. Needs a mounted inventory file (SSH_FLEET_INVENTORY_PATH) and a mounted SSH private key (SSH_FLEET_KEY_PATH). Optional settings include SSH_FLEET_TRANSPORT, SSH_FLEET_CMD_TIMEOUT_SECONDS, SSH_FLEET_OUTPUT_CAP_BYTES, SSH_FLEET_PROBE_CONCURRENCY and SSH_FLEET_PROBE_MAX_HOSTS. Network access to the target hosts is required.
Installation
In SourceWeft
- Open SSH Fleet in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
mcp-ssh-fleet
English | Русский
[Version] [MCP Registry] [Container] [Build] [Go Version] [Go Report Card] [License: MIT] [Issues] [Last Commit]
MCP server that gives an agent two tools over SSH to a fleet of hosts outside Kubernetes. The SSH key is a mounted secret (never enters model context); the inventory is a fail-closed allowlist.
Tools
ssh_probe(tags, check)— curated read-only diagnostics on every host carrying the given tags (AND semantics, like GitLab runner tags).checkis one of a built-in set:uptime,disk,mem,failed,logs. Arbitrary commands cannot be passed. Class:read-only.ssh_exec(host, command)— one arbitrary non-interactive command on ONE inventory host (by name or address; hosts outside the inventory are refused). Class:write-external: the server executes the command, while access gating (approval/RBAC) belongs to the MCP client.
Both: output size cap, per-host timeout, TOFU host-key check (fingerprint in logs), output as one section per host.
Configuration (env)
Inventory format — see deploy/inventory.example.yaml.
Quickstart (docker, stdio)
This is the shape MCP clients use when installing from the
MCP Registry
(io.github.inhuman/mcp-ssh-fleet).
Connecting an MCP client (http/sse)
By default the server speaks StreamableHTTP; register it as a regular HTTP MCP
server with endpoint /mcp (URL like http://<host>:8080/mcp). Both tools
become available to the client.
Client-side security recommendations:
ssh_probeisread-only(curated checks only) and can be granted broadly.ssh_execis arbitrary execution (write-external). Gate its access on the client side (approval / RBAC / user allowlist) — the server merely executes a command on an inventory host; it does not decide access policy.
Development
Release: tag vX.Y.Z → GitHub Actions builds and publishes a multi-arch image
to ghcr.io/inhuman/mcp-ssh-fleet.
Source: README.md at commit 4536421
Tools
0Version history
1- v0.1.5LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts