What is the SSH Fleet MCP server?
Curated ssh_probe diagnostics and single-host ssh_exec over an allowlisted SSH fleet.
How to install SSH Fleet
Copy-paste configuration for popular MCP clients.
transport: stdio
Config generated by PluginBench — verify against the source before use.Environment / auth
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_TOKENsecretOptional X-MCP-AUTH bearer token (only used by the http/sse transports).
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"mcp-ssh-fleet": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/inhuman/mcp-ssh-fleet:0.1.5",
"-v",
"{inventory_path}:/etc/ssh-fleet/inventory.yaml:ro",
"-v",
"{key_path}:/etc/ssh-fleet/id_ed25519:ro"
],
"env": {
"SSH_FLEET_TRANSPORT": "<YOUR_SSH_FLEET_TRANSPORT>",
"SSH_FLEET_CMD_TIMEOUT_SECONDS": "<YOUR_SSH_FLEET_CMD_TIMEOUT_SECONDS>",
"SSH_FLEET_OUTPUT_CAP_BYTES": "<YOUR_SSH_FLEET_OUTPUT_CAP_BYTES>",
"SSH_FLEET_PROBE_CONCURRENCY": "<YOUR_SSH_FLEET_PROBE_CONCURRENCY>",
"SSH_FLEET_PROBE_MAX_HOSTS": "<YOUR_SSH_FLEET_PROBE_MAX_HOSTS>",
"SSH_FLEET_AUTH_TOKEN": "<YOUR_SSH_FLEET_AUTH_TOKEN>"
}
}
}
}Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"mcp-ssh-fleet": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/inhuman/mcp-ssh-fleet:0.1.5",
"-v",
"{inventory_path}:/etc/ssh-fleet/inventory.yaml:ro",
"-v",
"{key_path}:/etc/ssh-fleet/id_ed25519:ro"
],
"env": {
"SSH_FLEET_TRANSPORT": "<YOUR_SSH_FLEET_TRANSPORT>",
"SSH_FLEET_CMD_TIMEOUT_SECONDS": "<YOUR_SSH_FLEET_CMD_TIMEOUT_SECONDS>",
"SSH_FLEET_OUTPUT_CAP_BYTES": "<YOUR_SSH_FLEET_OUTPUT_CAP_BYTES>",
"SSH_FLEET_PROBE_CONCURRENCY": "<YOUR_SSH_FLEET_PROBE_CONCURRENCY>",
"SSH_FLEET_PROBE_MAX_HOSTS": "<YOUR_SSH_FLEET_PROBE_MAX_HOSTS>",
"SSH_FLEET_AUTH_TOKEN": "<YOUR_SSH_FLEET_AUTH_TOKEN>"
}
}
}
}Windsurf
~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"mcp-ssh-fleet": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/inhuman/mcp-ssh-fleet:0.1.5",
"-v",
"{inventory_path}:/etc/ssh-fleet/inventory.yaml:ro",
"-v",
"{key_path}:/etc/ssh-fleet/id_ed25519:ro"
],
"env": {
"SSH_FLEET_TRANSPORT": "<YOUR_SSH_FLEET_TRANSPORT>",
"SSH_FLEET_CMD_TIMEOUT_SECONDS": "<YOUR_SSH_FLEET_CMD_TIMEOUT_SECONDS>",
"SSH_FLEET_OUTPUT_CAP_BYTES": "<YOUR_SSH_FLEET_OUTPUT_CAP_BYTES>",
"SSH_FLEET_PROBE_CONCURRENCY": "<YOUR_SSH_FLEET_PROBE_CONCURRENCY>",
"SSH_FLEET_PROBE_MAX_HOSTS": "<YOUR_SSH_FLEET_PROBE_MAX_HOSTS>",
"SSH_FLEET_AUTH_TOKEN": "<YOUR_SSH_FLEET_AUTH_TOKEN>"
}
}
}
}VS Code
.vscode/mcp.json
{
"servers": {
"mcp-ssh-fleet": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/inhuman/mcp-ssh-fleet:0.1.5",
"-v",
"{inventory_path}:/etc/ssh-fleet/inventory.yaml:ro",
"-v",
"{key_path}:/etc/ssh-fleet/id_ed25519:ro"
],
"env": {
"SSH_FLEET_TRANSPORT": "<YOUR_SSH_FLEET_TRANSPORT>",
"SSH_FLEET_CMD_TIMEOUT_SECONDS": "<YOUR_SSH_FLEET_CMD_TIMEOUT_SECONDS>",
"SSH_FLEET_OUTPUT_CAP_BYTES": "<YOUR_SSH_FLEET_OUTPUT_CAP_BYTES>",
"SSH_FLEET_PROBE_CONCURRENCY": "<YOUR_SSH_FLEET_PROBE_CONCURRENCY>",
"SSH_FLEET_PROBE_MAX_HOSTS": "<YOUR_SSH_FLEET_PROBE_MAX_HOSTS>",
"SSH_FLEET_AUTH_TOKEN": "<YOUR_SSH_FLEET_AUTH_TOKEN>"
}
}
}
}Claude Code
claude mcp add mcp-ssh-fleet --env SSH_FLEET_TRANSPORT=<YOUR_SSH_FLEET_TRANSPORT> --env SSH_FLEET_CMD_TIMEOUT_SECONDS=<YOUR_SSH_FLEET_CMD_TIMEOUT_SECONDS> --env SSH_FLEET_OUTPUT_CAP_BYTES=<YOUR_SSH_FLEET_OUTPUT_CAP_BYTES> --env SSH_FLEET_PROBE_CONCURRENCY=<YOUR_SSH_FLEET_PROBE_CONCURRENCY> --env SSH_FLEET_PROBE_MAX_HOSTS=<YOUR_SSH_FLEET_PROBE_MAX_HOSTS> --env SSH_FLEET_AUTH_TOKEN=<YOUR_SSH_FLEET_AUTH_TOKEN> -- docker run -i --rm ghcr.io/inhuman/mcp-ssh-fleet:0.1.5 -v {inventory_path}:/etc/ssh-fleet/inventory.yaml:ro -v {key_path}:/etc/ssh-fleet/id_ed25519:roRelated MCP servers
Exec Sandbox
Maintained
Single exec tool running caller Python in a network-isolated locked-down sandbox.
1
View repository →Go
MIT
Kubernetes Ephemeral Job
Maintained
Runs a command in a throwaway Kubernetes pod and returns exit code, output and artifacts.
0
View repository →Go
MIT