PluginBench
MCP Server
Maintained
MIT

SSH Fleet MCP Server

io.github.inhuman/mcp-ssh-fleet

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_TRANSPORT

    MCP transport. Must be 'stdio' for direct docker/stdio use.

  • SSH_FLEET_CMD_TIMEOUT_SECONDS

    Per-host command timeout in seconds (1..600).

  • SSH_FLEET_OUTPUT_CAP_BYTES

    Cap on output bytes per host section (>=256).

  • SSH_FLEET_PROBE_CONCURRENCY

    Parallelism for ssh_probe.

  • SSH_FLEET_PROBE_MAX_HOSTS

    Safety cap on the number of hosts in one probe.

  • SSH_FLEET_AUTH_TOKEN
    secret

    Optional 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:ro

Related MCP servers

Exec Sandbox

Maintained

Single exec tool running caller Python in a network-isolated locked-down sandbox.

1
Go
MIT
View repository →

Runs a command in a throwaway Kubernetes pod and returns exit code, output and artifacts.

0
Go
MIT
View repository →