# Hex SSH (npm · @levnikolaevich/hex-ssh-mcp)

Token-efficient SSH MCP with hash-verified files and persistent tmux sessions. 14 tools.

- Trust score: 76/100 (medium)
- Change this week: +34
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-04

## Components

- npm · `@levnikolaevich/hex-ssh-mcp`: 76/100 (this document), [markdown](https://verifymcp.io/servers/levnikolaevich-hex-ssh-mcp/levnikolaevich-hex-ssh-mcp.md), [page](https://verifymcp.io/servers/levnikolaevich-hex-ssh-mcp/levnikolaevich-hex-ssh-mcp)

## Channel facts

- Registry: `npm`
- Package: `@levnikolaevich/hex-ssh-mcp`
- Version: `1.9.2`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-04.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (104 of 108), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (104 of 108), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to levnikolaevich/claude-code-skills).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 76 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 59/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 3937 tokens (~281/item across 14 items; 14 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add levnikolaevich-hex-ssh-mcp -- npx -y @levnikolaevich/hex-ssh-mcp
```

### Codex

```bash
codex mcp add levnikolaevich-hex-ssh-mcp -- npx -y @levnikolaevich/hex-ssh-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "levnikolaevich-hex-ssh-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@levnikolaevich/hex-ssh-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add levnikolaevich-hex-ssh-mcp --command npx --arg -y --arg @levnikolaevich/hex-ssh-mcp
```

### Hermes

```yaml
mcp_servers:
  levnikolaevich-hex-ssh-mcp:
    command: "npx"
    args: ["-y", "@levnikolaevich/hex-ssh-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "levnikolaevich-hex-ssh-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@levnikolaevich/hex-ssh-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 76, +4)

- [functional improvement] Stability: unverified → 0.23

### 2026-08-02 (score 72, +50)

- [security improvement] Provenance: unverified → pass
- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.
- [security] The attested source repository moved: levnikolaevich/claude-code-skills
- [functional regression] Capabilities: pass → unverified
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] License: unverified → pass
- [functional improvement] Schema quality: unverified → excellent
- [functional] Licence: MIT

### 2026-08-01 (score 22, −24)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-31 (score 46, +20)

- [security regression] Malware scan: pass → unverified
- [security improvement] Provenance: unverified → pass
- [security improvement] Install scripts: unverified → pass
- [security] The attested source repository moved: levnikolaevich/claude-code-skills
- [functional regression] Dependency health: partial → unverified
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] License: unverified → pass
- [functional improvement] Tool coverage: unverified → 100
- [functional] Licence: MIT

### 2026-07-29 (score 26, −16)

- [functional regression] Tool coverage: 100 → unverified
- [functional improvement] Dependency health: unverified → partial
- [functional] First check of Schema quality: unverified

### 2026-07-27 (score 42)

First indexed and scored.

## MCP tools (14)

### `ssh-capabilities` (~219 tokens)

SSH Capabilities

Inspect POSIX remote session support, tmux availability, package managers, and basic shell tools.

Input parameters:

- `connectTimeoutMs` (number): SSH handshake timeout in ms (default: 20000). Per-call override. Different values spawn separate pooled connections.
- `execTimeoutMs` (number): Per-command execution timeout in ms (default: 120000). Used by remote-ssh and hash-verified file tools.
- `host` (string, required): SSH host - alias from ~/.ssh/config or hostname/IP
- `keepaliveIntervalMs` (number): SSH keepalive interval in ms (default: 30000). Per-call override. Different values spawn separate pooled connections.
- `port` (number): SSH port (default: 22)
- `privateKeyPath` (string): Path to SSH private key (optional)
- `remotePlatform` (string): Remote path platform. Use "windows" for paths like C:\\repo\\file.txt. Default: auto
- `user` (string): SSH username (optional if set in ~/.ssh/config)

Output parameters:

- `bytes_transferred` (number)
- `bytes_written` (number)
- `capabilities` (object)
- `checksum` (string)
- `code` (string)
- `command` (string)
- `content` (string)
- `deleted` (array)
- `duration_ms` (number)
- `error` (object)
- `exit_code` (number)
- `failure_class` (string)
- `has_more` (boolean)
- `host` (string)
- `limit` (number)
- `local_path` (string)
- `next_action` (string)
- `next_commands` (object)
- `offset` (number)
- `path` (string)
- `rc` (number)
- `recovery` (string)
- `remote_path` (string)
- `revision` (string)
- `seq` (number)
- `session` (string)
- `sid` (string)
- `status` (string)
- `stderr` (string)
- `stderr_lines` (number)
- `stdout` (string)
- `stdout_lines` (number)
- `stream` (string)
- `summary` (string)
- `tmux_name` (string)
- `total_lines` (number)
- `verify`

### `ssh-session-open` (~256 tokens)

SSH Session Open

Open a trusted persistent remote tmux session. Preserves cwd and environment across ssh-session-exec calls.

Input parameters:

- `connectTimeoutMs` (number): SSH handshake timeout in ms (default: 20000). Per-call override. Different values spawn separate pooled connections.
- `execTimeoutMs` (number): Per-command execution timeout in ms (default: 120000). Used by remote-ssh and hash-verified file tools.
- `host` (string, required): SSH host - alias from ~/.ssh/config or hostname/IP
- `keepaliveIntervalMs` (number): SSH keepalive interval in ms (default: 30000). Per-call override. Different values spawn separate pooled connections.
- `name` (string): Optional session label. Default: empty
- `port` (number): SSH port (default: 22)
- `privateKeyPath` (string): Path to SSH private key (optional)
- `remotePlatform` (string): Remote path platform. Use "windows" for paths like C:\\repo\\file.txt. Default: auto
- `ttlSeconds` (number): Session TTL in seconds. Default: 43200 (12h)
- `user` (string): SSH username (optional if set in ~/.ssh/config)

Output parameters:

- `bytes_transferred` (number)
- `bytes_written` (number)
- `capabilities` (object)
- `checksum` (string)
- `code` (string)
- `command` (string)
- `content` (string)
- `deleted` (array)
- `duration_ms` (number)
- `error` (object)
- `exit_code` (number)
- `failure_class` (string)
- `has_more` (boolean)
- `host` (string)
- `limit` (number)
- `local_path` (string)
- `next_action` (string)
- `next_commands` (object)
- `offset` (number)
- `path` (string)
- `rc` (number)
- `recovery` (string)
- `remote_path` (string)
- `revision` (string)
- `seq` (number)
- `session` (string)
- `sid` (string)
- `status` (string)
- `stderr` (string)
- `stderr_lines` (number)
- `stdout` (string)
- `stdout_lines` (number)
- `stream` (string)
- `summary` (string)
- `tmux_name` (string)
- `total_lines` (number)
- `verify`

### `ssh-session-exec` (~270 tokens)

SSH Session Exec

Run a command inside a persistent tmux session. Returns metadata first; read output with ssh-session-read.

Input parameters:

- `command` (string, required): Shell command to execute in the persistent session
- `connectTimeoutMs` (number): SSH handshake timeout in ms (default: 20000). Per-call override. Different values spawn separate pooled connections.
- `execTimeoutMs` (number): Per-command execution timeout in ms (default: 120000). Used by remote-ssh and hash-verified file tools.
- `host` (string, required): SSH host - alias from ~/.ssh/config or hostname/IP
- `keepaliveIntervalMs` (number): SSH keepalive interval in ms (default: 30000). Per-call override. Different values spawn separate pooled connections.
- `port` (number): SSH port (default: 22)
- `privateKeyPath` (string): Path to SSH private key (optional)
- `remotePlatform` (string): Remote path platform. Use "windows" for paths like C:\\repo\\file.txt. Default: auto
- `sid` (string, required): Session id returned by ssh-session-open
- `user` (string): SSH username (optional if set in ~/.ssh/config)
- `waitSeconds` (number): Seconds to wait for command completion. Default: 300

Output parameters:

- `bytes_transferred` (number)
- `bytes_written` (number)
- `capabilities` (object)
- `checksum` (string)
- `code` (string)
- `command` (string)
- `content` (string)
- `deleted` (array)
- `duration_ms` (number)
- `error` (object)
- `exit_code` (number)
- `failure_class` (string)
- `has_more` (boolean)
- `host` (string)
- `limit` (number)
- `local_path` (string)
- `next_action` (string)
- `next_commands` (object)
- `offset` (number)
- `path` (string)
- `rc` (number)
- `recovery` (string)
- `remote_path` (string)
- `revision` (string)
- `seq` (number)
- `session` (string)
- `sid` (string)
- `status` (string)
- `stderr` (string)
- `stderr_lines` (number)
- `stdout` (string)
- `stdout_lines` (number)
- `stream` (string)
- `summary` (string)
- `tmux_name` (string)
- `total_lines` (number)
- `verify`

### `ssh-session-read` (~304 tokens)

SSH Session Read

Read a paginated stdout/stderr window from a persistent session command.

Input parameters:

- `connectTimeoutMs` (number): SSH handshake timeout in ms (default: 20000). Per-call override. Different values spawn separate pooled connections.
- `execTimeoutMs` (number): Per-command execution timeout in ms (default: 120000). Used by remote-ssh and hash-verified file tools.
- `host` (string, required): SSH host - alias from ~/.ssh/config or hostname/IP
- `keepaliveIntervalMs` (number): SSH keepalive interval in ms (default: 30000). Per-call override. Different values spawn separate pooled connections.
- `limit` (number): Line limit. Default: 50
- `offset` (number): Zero-based line offset. Default: 0
- `port` (number): SSH port (default: 22)
- `privateKeyPath` (string): Path to SSH private key (optional)
- `raw` (boolean): When true, return only the output content field
- `remotePlatform` (string): Remote path platform. Use "windows" for paths like C:\\repo\\file.txt. Default: auto
- `seq` (required): Command sequence returned by ssh-session-exec
- `sid` (string, required): Session id returned by ssh-session-open
- `stream` (string): Output stream: stdout or stderr. Default: stdout
- `user` (string): SSH username (optional if set in ~/.ssh/config)

Output parameters:

- `bytes_transferred` (number)
- `bytes_written` (number)
- `capabilities` (object)
- `checksum` (string)
- `code` (string)
- `command` (string)
- `content` (string)
- `deleted` (array)
- `duration_ms` (number)
- `error` (object)
- `exit_code` (number)
- `failure_class` (string)
- `has_more` (boolean)
- `host` (string)
- `limit` (number)
- `local_path` (string)
- `next_action` (string)
- `next_commands` (object)
- `offset` (number)
- `path` (string)
- `rc` (number)
- `recovery` (string)
- `remote_path` (string)
- `revision` (string)
- `seq` (number)
- `session` (string)
- `sid` (string)
- `status` (string)
- `stderr` (string)
- `stderr_lines` (number)
- `stdout` (string)
- `stdout_lines` (number)
- `stream` (string)
- `summary` (string)
- `tmux_name` (string)
- `total_lines` (number)
- `verify`

### `ssh-session-close` (~228 tokens)

SSH Session Close

Close a trusted persistent tmux session and remove its remote session directory.

Input parameters:

- `connectTimeoutMs` (number): SSH handshake timeout in ms (default: 20000). Per-call override. Different values spawn separate pooled connections.
- `execTimeoutMs` (number): Per-command execution timeout in ms (default: 120000). Used by remote-ssh and hash-verified file tools.
- `host` (string, required): SSH host - alias from ~/.ssh/config or hostname/IP
- `keepaliveIntervalMs` (number): SSH keepalive interval in ms (default: 30000). Per-call override. Different values spawn separate pooled connections.
- `port` (number): SSH port (default: 22)
- `privateKeyPath` (string): Path to SSH private key (optional)
- `remotePlatform` (string): Remote path platform. Use "windows" for paths like C:\\repo\\file.txt. Default: auto
- `sid` (string, required): Session id returned by ssh-session-open
- `user` (string): SSH username (optional if set in ~/.ssh/config)

Output parameters:

- `bytes_transferred` (number)
- `bytes_written` (number)
- `capabilities` (object)
- `checksum` (string)
- `code` (string)
- `command` (string)
- `content` (string)
- `deleted` (array)
- `duration_ms` (number)
- `error` (object)
- `exit_code` (number)
- `failure_class` (string)
- `has_more` (boolean)
- `host` (string)
- `limit` (number)
- `local_path` (string)
- `next_action` (string)
- `next_commands` (object)
- `offset` (number)
- `path` (string)
- `rc` (number)
- `recovery` (string)
- `remote_path` (string)
- `revision` (string)
- `seq` (number)
- `session` (string)
- `sid` (string)
- `status` (string)
- `stderr` (string)
- `stderr_lines` (number)
- `stdout` (string)
- `stdout_lines` (number)
- `stream` (string)
- `summary` (string)
- `tmux_name` (string)
- `total_lines` (number)
- `verify`

### `ssh-session-gc` (~246 tokens)

SSH Session GC

Remove expired trusted hex-ssh tmux sessions. Only sessions with valid hex-ssh metadata are touched.

Input parameters:

- `connectTimeoutMs` (number): SSH handshake timeout in ms (default: 20000). Per-call override. Different values spawn separate pooled connections.
- `execTimeoutMs` (number): Per-command execution timeout in ms (default: 120000). Used by remote-ssh and hash-verified file tools.
- `host` (string, required): SSH host - alias from ~/.ssh/config or hostname/IP
- `keepaliveIntervalMs` (number): SSH keepalive interval in ms (default: 30000). Per-call override. Different values spawn separate pooled connections.
- `olderThanSeconds` (number): Delete trusted sessions older than this many seconds. Default: delete expired sessions only
- `port` (number): SSH port (default: 22)
- `privateKeyPath` (string): Path to SSH private key (optional)
- `remotePlatform` (string): Remote path platform. Use "windows" for paths like C:\\repo\\file.txt. Default: auto
- `user` (string): SSH username (optional if set in ~/.ssh/config)

Output parameters:

- `bytes_transferred` (number)
- `bytes_written` (number)
- `capabilities` (object)
- `checksum` (string)
- `code` (string)
- `command` (string)
- `content` (string)
- `deleted` (array)
- `duration_ms` (number)
- `error` (object)
- `exit_code` (number)
- `failure_class` (string)
- `has_more` (boolean)
- `host` (string)
- `limit` (number)
- `local_path` (string)
- `next_action` (string)
- `next_commands` (object)
- `offset` (number)
- `path` (string)
- `rc` (number)
- `recovery` (string)
- `remote_path` (string)
- `revision` (string)
- `seq` (number)
- `session` (string)
- `sid` (string)
- `status` (string)
- `stderr` (string)
- `stderr_lines` (number)
- `stdout` (string)
- `stdout_lines` (number)
- `stream` (string)
- `summary` (string)
- `tmux_name` (string)
- `total_lines` (number)
- `verify`

### `remote-ssh` (~240 tokens)

SSH Command

Execute shell commands on remote servers. Disabled by default. Set REMOTE_SSH_MODE=safe or REMOTE_SSH_MODE=open to enable.

Input parameters:

- `command` (string, required): Shell command to execute
- `connectTimeoutMs` (number): SSH handshake timeout in ms (default: 20000). Per-call override. Different values spawn separate pooled connections.
- `execTimeoutMs` (number): Per-command execution timeout in ms (default: 120000). Used by remote-ssh and hash-verified file tools.
- `host` (string, required): SSH host - alias from ~/.ssh/config or hostname/IP
- `keepaliveIntervalMs` (number): SSH keepalive interval in ms (default: 30000). Per-call override. Different values spawn separate pooled connections.
- `port` (number): SSH port (default: 22)
- `privateKeyPath` (string): Path to SSH private key (optional)
- `remotePlatform` (string): Remote path platform. Use "windows" for paths like C:\\repo\\file.txt. Default: auto
- `user` (string): SSH username (optional if set in ~/.ssh/config)

Output parameters:

- `bytes_transferred` (number)
- `bytes_written` (number)
- `capabilities` (object)
- `checksum` (string)
- `code` (string)
- `command` (string)
- `content` (string)
- `deleted` (array)
- `duration_ms` (number)
- `error` (object)
- `exit_code` (number)
- `failure_class` (string)
- `has_more` (boolean)
- `host` (string)
- `limit` (number)
- `local_path` (string)
- `next_action` (string)
- `next_commands` (object)
- `offset` (number)
- `path` (string)
- `rc` (number)
- `recovery` (string)
- `remote_path` (string)
- `revision` (string)
- `seq` (number)
- `session` (string)
- `sid` (string)
- `status` (string)
- `stderr` (string)
- `stderr_lines` (number)
- `stdout` (string)
- `stdout_lines` (number)
- `stream` (string)
- `summary` (string)
- `tmux_name` (string)
- `total_lines` (number)
- `verify`

### `ssh-read-lines` (~310 tokens)

SSH Read File

Read remote file with hash-annotated lines. Use startLine/maxLines for large files. Returns range checksums for edit verification.

Input parameters:

- `connectTimeoutMs` (number): SSH handshake timeout in ms (default: 20000). Per-call override. Different values spawn separate pooled connections.
- `endLine` (number): End line (optional, reads to limit if not set)
- `execTimeoutMs` (number): Per-command execution timeout in ms (default: 120000). Used by remote-ssh and hash-verified file tools.
- `filePath` (string, required): Path to file on remote server
- `host` (string, required): SSH host - alias from ~/.ssh/config or hostname/IP
- `keepaliveIntervalMs` (number): SSH keepalive interval in ms (default: 30000). Per-call override. Different values spawn separate pooled connections.
- `maxLines` (number): Max lines to read (default: 200)
- `plain` (boolean): Omit hashes (lineNum|content)
- `port` (number): SSH port (default: 22)
- `privateKeyPath` (string): Path to SSH private key (optional)
- `remotePlatform` (string): Remote path platform. Use "windows" for paths like C:\\repo\\file.txt. Default: auto
- `startLine` (number): Start line (1-based, default: 1)
- `user` (string): SSH username (optional if set in ~/.ssh/config)

Output parameters:

- `bytes_transferred` (number)
- `bytes_written` (number)
- `capabilities` (object)
- `checksum` (string)
- `code` (string)
- `command` (string)
- `content` (string)
- `deleted` (array)
- `duration_ms` (number)
- `error` (object)
- `exit_code` (number)
- `failure_class` (string)
- `has_more` (boolean)
- `host` (string)
- `limit` (number)
- `local_path` (string)
- `next_action` (string)
- `next_commands` (object)
- `offset` (number)
- `path` (string)
- `rc` (number)
- `recovery` (string)
- `remote_path` (string)
- `revision` (string)
- `seq` (number)
- `session` (string)
- `sid` (string)
- `status` (string)
- `stderr` (string)
- `stderr_lines` (number)
- `stdout` (string)
- `stdout_lines` (number)
- `stream` (string)
- `summary` (string)
- `tmux_name` (string)
- `total_lines` (number)
- `verify`

### `ssh-edit-block` (~371 tokens)

SSH Edit File

Edit remote files using hash-verified anchors. Use ssh-read-lines first to get hash anchors and checksums.

Input parameters:

- `anchor` (string): Hash anchor 'ab.42' to set single line (from ssh-read-lines)
- `checksum` (string): Range checksum from ssh-read-lines (e.g. '1-50:f7e2a1b0'). If provided, verifies file unchanged before edit.
- `connectTimeoutMs` (number): SSH handshake timeout in ms (default: 20000). Per-call override. Different values spawn separate pooled connections.
- `endAnchor` (string): End hash anchor 'cd.45' for range replace
- `execTimeoutMs` (number): Per-command execution timeout in ms (default: 120000). Used by remote-ssh and hash-verified file tools.
- `filePath` (string, required): Path to file on remote server
- `host` (string, required): SSH host - alias from ~/.ssh/config or hostname/IP
- `insertAfter` (string): Hash anchor 'ab.42' to insert after
- `keepaliveIntervalMs` (number): SSH keepalive interval in ms (default: 30000). Per-call override. Different values spawn separate pooled connections.
- `newText` (string): Replacement text (for anchor/range/insert edits)
- `port` (number): SSH port (default: 22)
- `privateKeyPath` (string): Path to SSH private key (optional)
- `remotePlatform` (string): Remote path platform. Use "windows" for paths like C:\\repo\\file.txt. Default: auto
- `startAnchor` (string): Start hash anchor 'ab.42' for range replace
- `user` (string): SSH username (optional if set in ~/.ssh/config)

Output parameters:

- `bytes_transferred` (number)
- `bytes_written` (number)
- `capabilities` (object)
- `checksum` (string)
- `code` (string)
- `command` (string)
- `content` (string)
- `deleted` (array)
- `duration_ms` (number)
- `error` (object)
- `exit_code` (number)
- `failure_class` (string)
- `has_more` (boolean)
- `host` (string)
- `limit` (number)
- `local_path` (string)
- `next_action` (string)
- `next_commands` (object)
- `offset` (number)
- `path` (string)
- `rc` (number)
- `recovery` (string)
- `remote_path` (string)
- `revision` (string)
- `seq` (number)
- `session` (string)
- `sid` (string)
- `status` (string)
- `stderr` (string)
- `stderr_lines` (number)
- `stdout` (string)
- `stdout_lines` (number)
- `stream` (string)
- `summary` (string)
- `tmux_name` (string)
- `total_lines` (number)
- `verify`

### `ssh-search-code` (~320 tokens)

SSH Search

Search remote files with grep. Returns hash-annotated matches with deduplication. Use for finding code before ssh-edit-block.

Input parameters:

- `connectTimeoutMs` (number): SSH handshake timeout in ms (default: 20000). Per-call override. Different values spawn separate pooled connections.
- `contextLines` (number): Context lines around matches (default: 0)
- `execTimeoutMs` (number): Per-command execution timeout in ms (default: 120000). Used by remote-ssh and hash-verified file tools.
- `filePattern` (string): Glob filter (e.g. "*.js", "*.py")
- `host` (string, required): SSH host - alias from ~/.ssh/config or hostname/IP
- `ignoreCase` (boolean): Case-insensitive search (default: false)
- `keepaliveIntervalMs` (number): SSH keepalive interval in ms (default: 30000). Per-call override. Different values spawn separate pooled connections.
- `maxResults` (number): Max result lines (default: 50)
- `path` (string, required): Directory to search on remote server
- `pattern` (string, required): Text/regex pattern to search
- `port` (number): SSH port (default: 22)
- `privateKeyPath` (string): Path to SSH private key (optional)
- `remotePlatform` (string): Remote path platform. Use "windows" for paths like C:\\repo\\file.txt. Default: auto
- `user` (string): SSH username (optional if set in ~/.ssh/config)

Output parameters:

- `bytes_transferred` (number)
- `bytes_written` (number)
- `capabilities` (object)
- `checksum` (string)
- `code` (string)
- `command` (string)
- `content` (string)
- `deleted` (array)
- `duration_ms` (number)
- `error` (object)
- `exit_code` (number)
- `failure_class` (string)
- `has_more` (boolean)
- `host` (string)
- `limit` (number)
- `local_path` (string)
- `next_action` (string)
- `next_commands` (object)
- `offset` (number)
- `path` (string)
- `rc` (number)
- `recovery` (string)
- `remote_path` (string)
- `revision` (string)
- `seq` (number)
- `session` (string)
- `sid` (string)
- `status` (string)
- `stderr` (string)
- `stderr_lines` (number)
- `stdout` (string)
- `stdout_lines` (number)
- `stream` (string)
- `summary` (string)
- `tmux_name` (string)
- `total_lines` (number)
- `verify`

### `ssh-write-chunk` (~271 tokens)

SSH Write File

Write or append to remote files. Rewrite mode is atomic (temp file + rename). Append mode is non-atomic (direct >>). Auto-creates parent directories.

Input parameters:

- `connectTimeoutMs` (number): SSH handshake timeout in ms (default: 20000). Per-call override. Different values spawn separate pooled connections.
- `content` (string, required): Content to write
- `execTimeoutMs` (number): Per-command execution timeout in ms (default: 120000). Used by remote-ssh and hash-verified file tools.
- `filePath` (string, required): Path to file on remote server
- `host` (string, required): SSH host - alias from ~/.ssh/config or hostname/IP
- `keepaliveIntervalMs` (number): SSH keepalive interval in ms (default: 30000). Per-call override. Different values spawn separate pooled connections.
- `mode` (string): Write mode (default: rewrite)
- `port` (number): SSH port (default: 22)
- `privateKeyPath` (string): Path to SSH private key (optional)
- `remotePlatform` (string): Remote path platform. Use "windows" for paths like C:\\repo\\file.txt. Default: auto
- `user` (string): SSH username (optional if set in ~/.ssh/config)

Output parameters:

- `bytes_transferred` (number)
- `bytes_written` (number)
- `capabilities` (object)
- `checksum` (string)
- `code` (string)
- `command` (string)
- `content` (string)
- `deleted` (array)
- `duration_ms` (number)
- `error` (object)
- `exit_code` (number)
- `failure_class` (string)
- `has_more` (boolean)
- `host` (string)
- `limit` (number)
- `local_path` (string)
- `next_action` (string)
- `next_commands` (object)
- `offset` (number)
- `path` (string)
- `rc` (number)
- `recovery` (string)
- `remote_path` (string)
- `revision` (string)
- `seq` (number)
- `session` (string)
- `sid` (string)
- `status` (string)
- `stderr` (string)
- `stderr_lines` (number)
- `stdout` (string)
- `stdout_lines` (number)
- `stream` (string)
- `summary` (string)
- `tmux_name` (string)
- `total_lines` (number)
- `verify`

### `ssh-upload` (~325 tokens)

SSH Upload File

Upload a local file to a remote server over SFTP. Supports text and binary files, rejects existing destinations by default, validates path boundaries, and stages via the strongest available remote finalize path.

Input parameters:

- `connectTimeoutMs` (number): SSH handshake timeout in ms (default: 20000). Per-call override. Different values spawn separate pooled connections.
- `host` (string, required): SSH host - alias from ~/.ssh/config or hostname/IP
- `keepaliveIntervalMs` (number): SSH keepalive interval in ms (default: 30000). Per-call override. Different values spawn separate pooled connections.
- `localPath` (string, required): Absolute local file path or ~/path to upload
- `overwrite` (boolean): Replace existing destination when true. Default: false
- `permissions` (string): Optional octal file mode for uploaded file, e.g. 0644
- `port` (number): SSH port (default: 22)
- `privateKeyPath` (string): Path to SSH private key (optional)
- `remotePath` (string, required): Absolute destination path on remote server
- `remotePlatform` (string): Remote path platform. Use "windows" for paths like C:\\repo\\file.txt. Default: auto
- `transferTimeoutMs` (number): SFTP inactivity timeout in ms (default: 120000; env TRANSFER_TIMEOUT_MS overrides default). Used by ssh-upload/ssh-download.
- `user` (string): SSH username (optional if set in ~/.ssh/config)
- `verify` (string): Post-transfer verification mode. Default: stat

Output parameters:

- `bytes_transferred` (number)
- `bytes_written` (number)
- `capabilities` (object)
- `checksum` (string)
- `code` (string)
- `command` (string)
- `content` (string)
- `deleted` (array)
- `duration_ms` (number)
- `error` (object)
- `exit_code` (number)
- `failure_class` (string)
- `has_more` (boolean)
- `host` (string)
- `limit` (number)
- `local_path` (string)
- `next_action` (string)
- `next_commands` (object)
- `offset` (number)
- `path` (string)
- `rc` (number)
- `recovery` (string)
- `remote_path` (string)
- `revision` (string)
- `seq` (number)
- `session` (string)
- `sid` (string)
- `status` (string)
- `stderr` (string)
- `stderr_lines` (number)
- `stdout` (string)
- `stdout_lines` (number)
- `stream` (string)
- `summary` (string)
- `tmux_name` (string)
- `total_lines` (number)
- `verify`

### `ssh-download` (~300 tokens)

SSH Download File

Download a remote file to the local machine over SFTP. Supports text and binary files, rejects existing destinations by default, validates path boundaries, and stages to a verified local finalize path.

Input parameters:

- `connectTimeoutMs` (number): SSH handshake timeout in ms (default: 20000). Per-call override. Different values spawn separate pooled connections.
- `host` (string, required): SSH host - alias from ~/.ssh/config or hostname/IP
- `keepaliveIntervalMs` (number): SSH keepalive interval in ms (default: 30000). Per-call override. Different values spawn separate pooled connections.
- `localPath` (string, required): Absolute local destination path or ~/path
- `overwrite` (boolean): Replace existing destination when true. Default: false
- `port` (number): SSH port (default: 22)
- `privateKeyPath` (string): Path to SSH private key (optional)
- `remotePath` (string, required): Absolute file path on remote server
- `remotePlatform` (string): Remote path platform. Use "windows" for paths like C:\\repo\\file.txt. Default: auto
- `transferTimeoutMs` (number): SFTP inactivity timeout in ms (default: 120000; env TRANSFER_TIMEOUT_MS overrides default). Used by ssh-upload/ssh-download.
- `user` (string): SSH username (optional if set in ~/.ssh/config)
- `verify` (string): Post-transfer verification mode. Default: stat

Output parameters:

- `bytes_transferred` (number)
- `bytes_written` (number)
- `capabilities` (object)
- `checksum` (string)
- `code` (string)
- `command` (string)
- `content` (string)
- `deleted` (array)
- `duration_ms` (number)
- `error` (object)
- `exit_code` (number)
- `failure_class` (string)
- `has_more` (boolean)
- `host` (string)
- `limit` (number)
- `local_path` (string)
- `next_action` (string)
- `next_commands` (object)
- `offset` (number)
- `path` (string)
- `rc` (number)
- `recovery` (string)
- `remote_path` (string)
- `revision` (string)
- `seq` (number)
- `session` (string)
- `sid` (string)
- `status` (string)
- `stderr` (string)
- `stderr_lines` (number)
- `stdout` (string)
- `stdout_lines` (number)
- `stream` (string)
- `summary` (string)
- `tmux_name` (string)
- `total_lines` (number)
- `verify`

### `ssh-verify` (~277 tokens)

SSH Verify Checksums

Check if range checksums still match remote file. Single-line response avoids full re-read. Use before editing after a pause.

Input parameters:

- `checksums` (string, required): JSON array of checksum strings, e.g. ["1-50:f7e2a1b0", "51-100:abcd1234"]
- `connectTimeoutMs` (number): SSH handshake timeout in ms (default: 20000). Per-call override. Different values spawn separate pooled connections.
- `execTimeoutMs` (number): Per-command execution timeout in ms (default: 120000). Used by remote-ssh and hash-verified file tools.
- `filePath` (string, required): Path to file on remote server
- `host` (string, required): SSH host - alias from ~/.ssh/config or hostname/IP
- `keepaliveIntervalMs` (number): SSH keepalive interval in ms (default: 30000). Per-call override. Different values spawn separate pooled connections.
- `port` (number): SSH port (default: 22)
- `privateKeyPath` (string): Path to SSH private key (optional)
- `remotePlatform` (string): Remote path platform. Use "windows" for paths like C:\\repo\\file.txt. Default: auto
- `user` (string): SSH username (optional if set in ~/.ssh/config)

Output parameters:

- `bytes_transferred` (number)
- `bytes_written` (number)
- `capabilities` (object)
- `checksum` (string)
- `code` (string)
- `command` (string)
- `content` (string)
- `deleted` (array)
- `duration_ms` (number)
- `error` (object)
- `exit_code` (number)
- `failure_class` (string)
- `has_more` (boolean)
- `host` (string)
- `limit` (number)
- `local_path` (string)
- `next_action` (string)
- `next_commands` (object)
- `offset` (number)
- `path` (string)
- `rc` (number)
- `recovery` (string)
- `remote_path` (string)
- `revision` (string)
- `seq` (number)
- `session` (string)
- `sid` (string)
- `status` (string)
- `stderr` (string)
- `stderr_lines` (number)
- `stdout` (string)
- `stdout_lines` (number)
- `stream` (string)
- `summary` (string)
- `tmux_name` (string)
- `total_lines` (number)
- `verify`

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/levnikolaevich-hex-ssh-mcp/levnikolaevich-hex-ssh-mcp#diagnostics

## Score history

- 2026-08-04: 76
- 2026-08-03: 76
- 2026-08-02: 72
- 2026-08-01: 22
- 2026-07-31: 46
- 2026-07-29: 26
- 2026-07-28: 42
- 2026-07-27: 42

## Links

- npm package: https://www.npmjs.com/package/@levnikolaevich/hex-ssh-mcp
- Socket report: https://socket.dev/npm/package/@levnikolaevich/hex-ssh-mcp
- Repository: https://github.com/levnikolaevich/claude-code-skills
- Changelog RSS feed: https://verifymcp.io/servers/levnikolaevich-hex-ssh-mcp/levnikolaevich-hex-ssh-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/levnikolaevich-hex-ssh-mcp/levnikolaevich-hex-ssh-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/levnikolaevich-hex-ssh-mcp/levnikolaevich-hex-ssh-mcp
