MCP SSH Session
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
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| execute_commandB | Execute a command on an SSH host using a persistent session. |
| list_sessionsA | List all active SSH sessions. |
| close_sessionB | Close a specific SSH session. |
| close_all_sessionsB | Close all active SSH sessions. |
| read_fileA | Read a remote file over SSH. Falls back to sudo cat if permission denied. |
| write_fileC | Write content to a remote file over SSH. |
| execute_command_asyncC | Execute a command asynchronously. Returns a command ID. |
| get_command_statusC | Get the status and output of an async command. |
| interrupt_command_by_idB | Interrupt a running async command by sending Ctrl+C. |
| list_running_commandsA | List all currently running async commands. |
| list_command_historyC | List recent command history. |
| send_inputC | Send input to a running async command. |
| send_input_by_sessionC | Send input to the active shell for a session. |
| read_screenC | Read the terminal screen state (requires MCP_SSH_INTERACTIVE_MODE=1). |
| send_keysC | Send special keys to a session. |
| execute_command_enhancedC | Execute a command with auto timeout extension and streaming. |
| get_session_diagnosticsC | Get comprehensive diagnostics for an SSH session. |
| reset_session_promptC | Reset and recapture prompt detection. |
| get_connection_health_reportB | Get health report for all active SSH connections. |
| get_command_status_enhancedC | Get enhanced status with detailed metrics. |
| get_performance_metricsC | Get performance metrics. |
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 21 tools
Several tool clusters overlap heavily: execute_command vs execute_command_async vs execute_command_enhanced, and get_command_status vs get_command_status_enhanced provide near-identical purpose with unclear boundaries. send_input vs send_input_by_session and the trio get_session_diagnostics/get_connection_health_report/get_performance_metrics are also hard to distinguish without reading full descriptions.
Names are almost entirely consistent snake_case verb_noun (execute_command, list_sessions, send_input). Minor deviations like the noun-phrase get_performance_metrics and _enhanced suffixes are readable and predictable.
21 tools is on the heavy side for an SSH session server, and the count is inflated by redundant variants (async/enhanced execution and status) that likely could be consolidated.
The surface covers session lifecycle, sync/async command execution, file read/write, interactive input, and diagnostics/health, which is broad for the domain. Only minor gaps remain (e.g., no explicit directory listing or file transfer tools).