Model Context Protocol server for SSH remote system management
34 tools with consistent naming (verb_noun pattern) and descriptions present. However, descriptions are often generic (10-50 chars) and lack LLM-optimized guidance on WHEN to use each tool vs. similar ones. Input schemas are visible and typed, but many lack constraints (enums, ranges). Output schemas are undocumented, LLMs cannot predict response structure. Error handling is absent; no recovery guidance. Security concern: execute_command and execute_script accept arbitrary payloads with no sanitization warnings. Composition is reasonable (tools are single-purpose), but many tools duplicate functionality (e.g., tail_log vs. read_file, check_security vs. grep_file).
Analyze a log file for error patterns and summarize findings. Searches for ERROR, WARN, CRITICAL, Exception, and similar keywords.
Append content to a remote file.
Check disk health using SMART data and filesystem errors.
Diagnose high CPU/memory load and identify resource hogs.
Test outbound network connectivity from the remote server.
Run a basic security audit of the remote server. Checks for: failed login attempts, listening ports, SUID files, world-writable directories, and recent auth log entries.
Check the status of a systemd service.
Output schemas undocumented. LLMs cannot predict response structure for any of the 34 tools. No documentation of returned fields, types, or pagination.
execute_command and execute_script accept arbitrary shell payloads with no sanitization guidance or injection warnings. No mention of command injection risks or input validation.
No error handling or recovery guidance. Tools lack descriptions of failure modes, retryability, or what the LLM should do if a call fails.
Descriptions are generic and lack LLM-optimized guidance. Many descriptions are 10-50 chars (below 50-200 char baseline). No WHEN/WHY context for tool selection.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | <=2025-11-25 | v2 |
Close all active SSH connections.
Close the SSH connection to a host. The connection will be re-established automatically on the next tool call.
Delete a file or directory on the remote server.
Download a file from the remote server to local via SFTP.
Execute a shell command on the remote SSH server. Runs any shell command and returns stdout + stderr. Suitable for one-off commands, diagnostics, log tailing, service control, etc.
Execute a multi-line shell script on the remote SSH server. Uploads the script via stdin and runs it with the specified shell. Useful for multi-step automation, configuration changes, or complex checks.
Search for processes by name or keyword.
Get detailed CPU usage and statistics. Returns current CPU load, per-core usage, and top CPU-consuming processes.
Get disk usage and I/O statistics.
Get detailed metadata of a remote file or directory.
Get memory and swap usage details.
Get network interface status, connections, and statistics.
List all open listening ports and their associated processes.
Retrieve system logs from journald or /var/log/syslog.
Get a comprehensive system overview of the remote server. Collects hostname, OS release, kernel, uptime, CPU, memory, disk, and load average in one call. Best starting point for system analysis.
Search for a text pattern in remote files.
Send a signal to a process by PID.
List all SSH hosts configured in SSH_HOSTS_JSON. Returns: Table of configured host names and their connection details.
List files and directories at a remote path.
List running processes sorted by resource usage.
Start, stop, restart, or reload a systemd service.
Read the content of a remote file.
Search for files by name pattern in a remote directory tree.
Tail the end of a remote log file.
Test SSH connectivity to the target host. Verifies the connection is alive and returns basic server identity.
Upload a local file to the remote server via SFTP.
Write content to a remote file (overwrites existing content). Creates parent directories if they do not exist.
Destructive operations (delete_file, kill_process, manage_service) lack confirmation/dry-run patterns. No guidance on irreversibility or agent safeguards.