An SSH-based MCP server that exposes SSH command execution and file transfer as MCP tools over stdio or streamable HTTP
Four tools with clear verb-noun naming (list-servers, execute-command, file-transfer, session). All have descriptions (194 - 250 chars, within baseline 34 - 392). Input schemas present with typed parameters and descriptions. Tool annotations (readOnlyAnnotation) visible for list-servers. Error handling includes structured ToolError with code/message/retriable fields and partial result recovery. Main gaps: no output schema documentation in visible code; parameter descriptions are functional but terse (avg ~40 chars vs baseline 72); no enum constraints on 'action' parameter in session tool despite having fixed values; missing idempotent/destructive hints on most tools.
Execute a shell command on a configured SSH server, with optional approval gate for destructive commands
Transfer files to/from a configured SSH server via SFTP
List configured SSH servers (metadata, connection status, system info, last few recorded commands) and active named sessions. Call this first to pick connectionName or sessionName — the recent commands help resume context from a previous session.
Manage named SSH sessions for maintaining state across multiple commands
Output schemas not documented in visible code. LLMs cannot plan downstream tool calls or extract required fields without knowing what list-servers, execute-command, file-transfer, and session return.
session tool 'action' parameter accepts enum values [create, list, close] but is defined as free-form string, not constrained enum. LLMs may hallucinate invalid actions.
execute-command lacks destructive hint annotation despite being marked DESTRUCTIVE risk. Tool annotations (readOnlyHint/destructiveHint) should be applied to guide agent behavior.
Parameter descriptions are terse (avg ~40 chars vs baseline 72). 'connectionName' and 'sessionName' lack format guidance; 'command' lacks examples of safe vs destructive patterns; 'operation' lacks explanation of when to use upload vs download.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
No pagination or result limits documented for list-servers. If many servers/sessions exist, response could exhaust context window. Baseline pattern requires limit/offset and total count.