ssh-chat-mcp
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 |
|---|---|
| connectA | Open a temporary in-memory SSH connection. Requires host, username, and either password OR privateKey (PEM). All credentials are kept in RAM only and wiped on disconnect. WARNING: this connects to a real remote host and host-key checking is disabled — the calling user is responsible for trust. |
| disconnectA | Close the named SSH connection and wipe its credentials from memory. |
| list_connectionsA | List currently registered SSH connections. Returns only non-sensitive metadata (connectionName, host, port, username, connectedAt, status). |
| diagnoseA | Return explicit local diagnostics: MCP server alive, registered connections, known jobs, or a short SSH probe for a named connection. This helps distinguish server unavailable, SSH unavailable, dead connection, and MCP transport issues. |
| execA | Execute a shell command over SSH on the named connection. WARNING: this runs real commands on a real remote machine — destructive operations are NOT blocked by this server. The MCP client / approval layer is responsible for confirming dangerous commands with the user. |
| exec_startA | Start a command over SSH and return immediately with a jobId. Use |
| exec_asA | Run a command non-interactively as another Linux user via |
| exec_as_startA | Start a sudo -iu command and return immediately with a jobId. Read it with |
| exec_statusA | Return job status plus stdout/stderr slices. Pass stdoutOffset/stderrOffset from the previous response's nextOffset fields to read incrementally. |
| exec_jobsB | List known exec jobs and their statuses. Output is metadata only, without logs. |
| exec_cancelA | Best-effort cancellation for a job. If the remote job PID is known, the MCP server sends the signal to the remote process group, then closes the SSH channel. |
| exec_removeB | Forget a completed/cancelled/failed job and drop its buffered stdout/stderr. |
| upload_fileC | Upload a single local file to the remote host via SFTP. localPath and remotePath are taken from arguments only — no paths are hardcoded. |
| upload_directoryA | Recursively upload a local directory tree to the remote host via SFTP. Excludes are caller-supplied (no project dirs hardcoded). Symlinks are not followed unless explicitly requested. |
| download_fileA | Download a remote file to the local filesystem via SFTP. File content is not included in the tool response; only the byte count. |
| read_remote_fileA | Read up to maxBytes of a remote file as UTF-8 text. Content is redacted for known secret patterns before being returned. |
| write_remote_fileB | Write a UTF-8 text payload to a remote file via SFTP. Useful for staging config files (e.g. into /tmp) which a subsequent |
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 17 tools
Each tool has a clearly distinct purpose: connection management, file transfers, command execution (sync, async, sudo), and diagnostics. Even the exec family differentiates immediate vs async and different user contexts without ambiguity.
Tool names follow a consistent verb_noun pattern (e.g., download_file, exec_status) or single verb (connect, exec). The exec_ family uses a uniform prefix. All names are lowercase with underscores, making them predictable.
With 17 tools, the server is well-scoped for SSH operations. It covers all essential actions without unnecessary duplication or bloat. Each tool earns its place in the set.
The tool surface is comprehensive: connection lifecycle, command execution (synchronous, asynchronous, sudo, with status/cancel), file transfer (single, directory, read, write), and diagnostics. Gaps are minimal and easily addressed via exec.