remote-ssh-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_SSH_CONFIG_DIR | No | Override the configuration directory. Defaults to ~/.mcp-ssh-server. | |
| MCP_SSH_MASTER_KEY | No | 32-byte key as a hex string (64 hex characters). Back this up: changing it — or moving to another machine — makes every credential in hosts.json undecryptable. Defaults to a key generated on first start and stored in <config_dir>/master.key. | |
| MCP_SSH_POOL_IDLE_MS | No | How long an idle pooled connection is kept (ms). 0 disables pooling entirely, so every command opens a fresh connection. Defaults to 60000. | |
| MCP_SSH_POOL_MAX_HOSTS | No | How many hosts the pool keeps alive (the least recently used idle connection is evicted beyond this). Defaults to 32. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| cli_helpA | Get help on using the remote-ssh-cli command-line tool to manage SSH hosts outside the MCP protocol. Returns installation, usage, and troubleshooting instructions for the standalone CLI. |
| host_listA | List the SSH hosts known to the server. Each entry contains exactly two fields: 'sys_name' (the host name) and 'uid' (its unique identifier). Start here: pass a 'uid' value to the other tools as their host_id argument. No address, port, user name or credential is returned. |
| host_createA | Create a new SSH host entry. The supplied password or private key is encrypted at rest and never returned by any tool. The response contains the new host's public metadata, including the uid that identifies it in |
| host_updateA | Update fields on an existing host. Call |
| host_deleteA | Permanently delete a host entry. Call |
| ssh_run_commandA | Run a single non-interactive shell command on a remote host. Returns stdout, stderr, exit code, and duration. Call |
| ssh_run_interactiveA | Run a command on a remote host that needs to consume expect/answer prompts (e.g. sudo). Each entry in 'expects' is an object with 'expect' (the prompt text to wait for) and 'answer' (the response to send back). Call |
| ssh_run_playbookA | Execute a multi-step playbook on a remote host. The 'content' field is a multi-line string. Supports structured format with directives: '# @section "Title"' to group steps into sections, '# @desc "description"' for section description, '# @note "text"' for step notes, '# @danger "text"' for danger warnings, and '# @on "command"' for interactive commands (replaces legacy 'expect:'/'answer:' syntax). Legacy format (one command per line with optional 'expect:'/'answer:' pairs) is also supported. Stops on the first non-zero exit code and returns the transcript of every step that ran. Call |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 8 tools
Each tool has a clearly distinct purpose: host CRUD tools operate on host records, while ssh_run_command, ssh_run_interactive, and ssh_run_playbook are separated by execution style (single command, expect-prompt interaction, multi-step playbook). cli_help is distinct as standalone CLI documentation. There is little risk of an agent confusing one tool for another.
All tool names use consistent snake_case with a resource/action structure: host_* for host management, ssh_run_* for remote execution, and cli_help for CLI help. The prefixes cleanly group related operations. No mixed camelCase or inconsistent verb conventions are present.
Eight tools are well-scoped for an SSH host management and command execution server. The host CRUD set is compact, and the three execution modes cover common remote operation needs without excessive surface area. Every tool appears to earn its place.
Host lifecycle coverage is strong with list, create, update, and delete, and execution covers non-interactive commands, interactive prompts, and playbooks. Minor gaps exist, such as no dedicated get-host details tool and no file transfer operations, but core workflows are covered.