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. |
| probeD | Report what the target host is and what this tool is, without any address. |
| list_sessionsA | List all active SSH sessions. |
| close_sessionB | Close a specific SSH session. |
| close_all_sessionsB | Close all active SSH sessions. |
| read_fileB | Read a remote file over SSH. Falls back to sudo cat if permission denied. Returns at most |
| 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 22 tools
Several tools overlap: execute_command / execute_command_async / execute_command_enhanced all run commands, get_command_status / get_command_status_enhanced both report status, and diagnostics/health/performance metrics are easily confused. Descriptions add some distinction, but boundaries remain fuzzy for an agent choosing a tool.
Nearly all tools use snake_case verb_noun phrasing (execute_command, read_file, list_sessions), with minor deviations like probe and multi-word qualifiers (by_session, enhanced). The convention is readable and predictable overall.
22 tools is heavy for an SSH session server, with several diagnostic/status and enhanced-variant tools that could be consolidated. The count is not absurd given the async/interactive feature set, but it borders on over-scoped.
Core SSH operations are covered: command execution (sync/async), file read/write, session listing/closing, input, screen/key interaction, and diagnostics. Some gaps remain (e.g., file deletion/directory listing, explicit session creation/disconnection), but the main workflows are supported.