Bounded remote-machine tools for MCP clients over one OpenSSH master
Server provides 16 tools with explicit schemas and basic descriptions. However, most descriptions are minimal (10-30 chars), parameter descriptions are absent, and output schemas are undocumented. Tool naming follows verb_noun convention (good), but parameter documentation is severely lacking. No error recovery guidance, no input validation hints, and no security considerations documented. Schemas are present but sparse, many parameters lack descriptions entirely. This is typical of a community server that prioritizes functionality over LLM-friendly design.
Establish an SSH connection to a remote host
Get the current SSH connection status
Delete a file on the remote host
Disconnect the current SSH connection
Start a file download from the remote host using rsync
Execute a command on the remote host
List contents of a directory on the remote host
Read the contents of a file on the remote host
Parameter descriptions entirely absent. All 16 tools have input schemas with typed properties but zero descriptions for parameters (e.g., 'ssh_alias', 'host', 'user', 'port' in connect tool). LLMs cannot infer parameter semantics from names alone, 'port' could be SSH port, proxy port, or listening port. This violates pattern:tool-description and forces LLMs to guess.
Tool descriptions are minimal (10-35 chars). Examples: 'Get the current SSH connection status' (35 chars), 'Establish an SSH connection to a remote host' (43 chars). These lack context for LLM selection, no mention of prerequisites, when to use vs alternatives, or what happens on failure. Baseline for A+ tools is 50-200 chars with explicit WHAT/WHEN/PREREQUISITES.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
Read a byte range from a file on the remote host
Get file or directory metadata on the remote host
Execute a command with sudo on the remote host (NOPASSWD only)
Cancel an ongoing file transfer
List all active file transfers
Get the status of an ongoing file transfer
Start a file upload to the remote host using rsync
Write contents to a file on the remote host
Output schemas undocumented. No tool documents what fields it returns or their types. LLMs cannot plan downstream calls or extract required data (e.g., does 'connect' return connection_id? Does 'list_directory' return file sizes?). This violates pattern:tool and pattern:response-shaper.
No error recovery guidance. Tools like 'sudo_exec' (DESTRUCTIVE) and 'delete_file' (DESTRUCTIVE) provide no error messages or recovery hints. If a command fails, the LLM has no guidance on whether to retry, ask the user, or abort. Violates pattern:recovery-guide and pattern:error-classification.
No input validation hints. Parameters like 'timeout_seconds' (in exec, sudo_exec) lack range constraints. 'path' parameters lack format guidance (absolute vs relative, allowed characters). 'overwrite' boolean defaults are not documented. LLMs will pass invalid values without guidance on constraints. Violates pattern:constrained-input.