Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MCP_SSH_CONFIG_DIRNoOverride the configuration directory. Defaults to ~/.mcp-ssh-server.
MCP_SSH_MASTER_KEYNo32-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_MSNoHow 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_HOSTSNoHow 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

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
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_list.

host_updateA

Update fields on an existing host. Call host_list first — it returns the uid of every host, and that value is what host_id expects. Omit a credential field to keep the current value. Supply an empty string to clear it (only valid if you also flip the auth method).

host_deleteA

Permanently delete a host entry. Call host_list first — it returns the uid of every host, and that value is what host_id expects.

ssh_run_commandA

Run a single non-interactive shell command on a remote host. Returns stdout, stderr, exit code, and duration. Call host_list first — it returns the uid of every host, and that value is what host_id expects. The model must use host_id only; connection credentials are resolved server-side and never returned. The model MUST supply timeout_seconds (1-600) appropriate for the command; the command is terminated when the timeout expires.

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 host_list first — it returns the uid of every host, and that value is what host_id expects. The model must use host_id only; credentials are resolved server-side. The model MUST supply timeout_seconds (1-600) appropriate for the command.

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 host_list first — it returns the uid of every host, and that value is what host_id expects. The model must use host_id only; credentials are resolved server-side. The model MUST supply timeout_seconds (1-600) — it is the budget for the WHOLE playbook, each step only gets the time that is left.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.2/5.0

Scored across 8 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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.

Maintenance

ActivityMaintained
ResponsivenessNo issues