mcp-ssh-agentic
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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 | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ssh_pingB | Test passwordless SSH connectivity and return the remote identity. |
| ssh_read_fileA | Read a UTF-8 text file from a remote host. offset and limit select a 1-based line range; limit=0 means unlimited. Defaults to first 200 lines. |
| ssh_write_fileA | Write UTF-8 text content directly to a file on the remote host (creates or overwrites; use append=true to append instead). Avoids the round-trip of writing a local temp file and scp-ing it. |
| ssh_mkdirA | Create a directory (and parents) on the remote host, equivalent to mkdir -p. |
| ssh_read_imageC | Read a remote image and return it as an MCP image. Supports common raster formats. |
| ssh_list_dirA | List a remote directory with file metadata in ls -lAh style. |
| ssh_grepB | Search remote text files recursively with ripgrep, falling back to grep. Output format is file:line:match. |
| ssh_apply_patchA | Apply a unified diff on the remote host. Tries apply_patch (strip=0 only), then git apply, then patch. Supports dry-run and strip level. |
| ssh_deleteB | Delete a remote file or directory. Directories require recursive=true. |
| ssh_execA | Execute an intentional shell command on the remote host. Supports stdin, cwd, env, custom output limit, and acceptable exit codes. Set background=true to run a command detached and get a job_id; stdin is not allowed for background jobs. Use ssh_exec_result to poll/wait and ssh_exec_kill to stop or clean up. |
| ssh_exec_resultA | Check the status and output of a background job started with ssh_exec background=true. Optionally wait until it exits. |
| ssh_exec_killA | Send a signal to a background job started with ssh_exec background=true. Optionally remove the job log directory. |
| ssh_interactive_execA | Start a command on the remote host with a PTY allocated, for programs that prompt for input (sudo asking for a password, y/N confirmations, setup wizards, REPLs). Waits until output goes quiet (likely waiting for input) or the process exits, then returns the output so far plus a session_id. If the command finishes without prompting, the session is closed automatically and there is nothing further to do. Otherwise, use ssh_interactive_input to reply or poll, and ssh_interactive_close when finished. Idle sessions auto-expire after 10 minutes. |
| ssh_interactive_inputA | Send a line of input to a running ssh_interactive_exec session (e.g. answer a sudo password or y/N prompt), or just poll for more output if input is omitted. Returns newly produced output and status. |
| ssh_interactive_closeA | Kill and remove an interactive SSH session started with ssh_interactive_exec. |
| ssh_interactive_listB | List currently open interactive SSH sessions. |
| ssh_scp_toA | Upload a local file or directory to the remote host via scp (reuses the multiplexed SSH connection when mux is enabled). |
| ssh_scp_fromB | Download a remote file or directory to the local machine via scp (reuses the multiplexed SSH connection when mux is enabled). |
| ssh_closeA | Close the multiplexed SSH master connection for a target (no-op when multiplexing is disabled, e.g. native Windows OpenSSH). |
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 19 tools
The tools are largely distinct with clear separation between file operations (read/write/delete), directory ops (list/mkdir), execution (exec vs interactive_exec), and transfer (scp_to/scp_from). The only potential overlap is between ssh_ping (connectivity test) and ssh_exec (running commands), but descriptions clarify each purpose. Overall the boundaries are well-drawn.
All tools follow an `ssh_` prefix with clear verb patterns (read_file, write_file, list_dir, mkdir, delete, exec, scp_to, scp_from). The naming is mostly consistent (verb_noun), though a few like exec_result and exec_kill are verb_verb which deviates slightly from the noun pattern.
19 tools is on the higher end but appropriate for a full-featured SSH toolkit covering file operations, execution, interactive sessions, background jobs, and transfer. Each tool serves a distinct purpose; the count is justified by the breadth of the domain, though it's slightly above the comfortable 3-15 sweet spot.
The surface is remarkably complete for SSH operations: file read/write/list/delete/mkdir, grep, patch application, image reading, synchronous and background exec, interactive PTY sessions, scp in both directions, and connection management (ping/close/interactive_list). The lifecycle is well-covered with paired create/close, start/result/kill, and session management operations.