Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

SSH Session MCP

NPM · SSH-SESSION-MCP · SCANNED AUG 3

Shared SSH PTY runtime for MCP clients with viewer, input lock, async tracking, and policy rules.

Available components

+34 this week 80 Trust /100
Trust breakdown (6 categories)

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. How we score →

Supply Chain Security87
  • No malware found by supply-chain analysis.Pass
  • Only part of the dependency tree could be resolved (104 of 108), so this covers what we could see, not the whole tree.Partial
  • No install/post-install scripts declared.Pass
  • Only part of the dependency tree could be resolved (104 of 108), so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to Zw-awa/ssh-session-mcp). View diagnostics → Pass
  • Clear OSI-approved license (Apache-2.0).Pass
  • Actively maintained (last published 68 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability77
  • AI-judged instruction clarity (excellent).Pass
  • Tool/resource definitions use about 2348 tokens (~102/item across 23 items; 23 tools + 0 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
  • Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

npm · ssh-session-mcp

# add to Claude Code
claude mcp add zw-awa-ssh-session-mcp -- npx -y ssh-session-mcp
# add to Codex CLI
codex mcp add zw-awa-ssh-session-mcp -- npx -y ssh-session-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "zw-awa-ssh-session-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "ssh-session-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add zw-awa-ssh-session-mcp --command npx --arg -y --arg ssh-session-mcp
# ~/.hermes/config.yaml
mcp_servers:
  zw-awa-ssh-session-mcp:
    command: "npx"
    args: ["-y", "ssh-session-mcp"]
// mcp.json
{
  "mcpServers": {
    "zw-awa-ssh-session-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "ssh-session-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 3 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

  • 2 Aug 26 +58
    • Install scripts: unverified → pass security
    • Provenance: unverified → pass security
    • Known CVEs: unverified → partial security
    • Malware scan: unverified → pass security
    • Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
    • The attested source repository moved: Zw-awa/ssh-session-mcp security
    • Stability: unverified → 0.23 functional
    • Maintenance: unverified → pass functional
    • Dependency health: unverified → partial functional
    • License: unverified → pass functional
    • Schema quality: unverified → excellent functional
    • MCP protocol: unverified → pass functional
    • Licence: Apache-2.0 functional
  • 1 Aug 26 −7
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 31 Jul 26 −18
    • Malware scan: pass → unverified security
  • 29 Jul 26 +22
    • Tool coverage: unverified → 100 functional
  • 28 Jul 26 −22
    • Tool coverage: 100 → unverified functional
    • First check of Schema quality: unverified functional
  • 27 Jul 26 46

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Analysed npm/[email protected]

Provenance verified

Ecosystem: npm · Outcome: verified

Reason: verified

Source repo:
Zw-awa/ssh-session-mcp
Certificate issuer:
https://token.actions.githubusercontent.com
Certificate SAN:
https://github.com/Zw-awa/ssh-session-mcp/.github/workflows/release.yml@refs/tags/v2.7.1
Rekor log index:
1549621546
Predicate type:
https://slsa.dev/provenance/v1
Subject digest:
sha512:c647b797448aacad10f02223bf7faddb2e63d77ee0d240b0052a9c0a18d4d66da0edea7f2c469b8c2b5d183464c87cd3941041dde5ecd2f07ce83af03
Discovery method:
attestation_endpoint
Dependencies 104 packages

104 packages in the resolved dependency tree · 104 deprecated · 34 stale.

The dependency tree was only partially resolved, so these counts may be incomplete.

MCP tools — 23 exposed · ~2,348 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
ssh-command-status ~67

Check the status of a long-running async command. Returns current output if completed, or partial output if still running.

NameTypeReqDescription
commandIdstringyesThe async command ID returned by ssh-run
maxCharsintegerMax chars to read from output (default 16000)

No output schema declared.

No examples provided.

ssh-device-list ~23

List configured SSH device profiles discovered from ssh-session-mcp.config.json.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

ssh-quick-connect ~101

One-step: open SSH session using configured device profiles when available, otherwise fall back to legacy .env defaults. Reuse an existing session when possible and return viewer details when enabled.

NameTypeReqDescription
connectionNamestringLogical connection name. Defaults to "main" for profile-based sessions
devicestringDevice profile id. Defaults to config defaultDevice when available
sessionNamestringOptional session name. Defaults to "default"

No output schema declared.

No examples provided.

ssh-retry ~158

Execute a command with automatic retry and backoff on failure. Useful for flaky network commands or services that need time to start.

NameTypeReqDescription
backoffstringBackoff strategy (default "exponential")
commandstringyesShell command to execute
delayMsintegerBase delay between retries in ms (default 1000)
failPatternstringRegex pattern - if output matches this, consider command failed regardless of exit code
maxRetriesintegerMaximum number of retries (default 3)
sessionstringSession name or id. Defaults to "default"
successPatternstringRegex pattern - if output matches this, consider command successful regardless of exit code

No output schema declared.

No examples provided.

ssh-run ~178

Execute a command in the SSH session and return the output. Uses intelligent completion detection (prompt matching + idle timeout). In safe mode, dangerous/interactive commands are blocked. Long-running commands automatically transition to async mode.

NameTypeReqDescription
commandstringyesShell command to execute
idleMsintegerIdle timeout in ms - if no new output for this duration, consider command done (default 2000)
maxCharsintegerMax chars to read from output (default 16000). When output exceeds this limit, head (30%) and tail (70%) are returned with the middle omitted.
sessionstringSession name or id. Defaults to "default"
waitMsintegerMaximum wait time in ms (default 30000). Command may return earlier if prompt detected or idle timeout reached.

No output schema declared.

No examples provided.

ssh-session-close ~47

Close an interactive SSH PTY session immediately and remove it from the MCP server.

NameTypeReqDescription
sessionstringSession id, session ref, or session name. Defaults to the active session

No output schema declared.

No examples provided.

ssh-session-control ~90

Send a control key to an interactive SSH PTY session. Actor is shown inline in the dashboard transcript.

NameTypeReqDescription
actorstringLabel for the sender shown inline in the dashboard, e.g. codex, claude, user
controlstringyesControl key to send
sessionstringSession id, session ref, or session name. Defaults to the active session

No output schema declared.

No examples provided.

ssh-session-diagnostics ~52

Inspect session health, buffer trim state, viewer attachment state, input lock state, and tracked command metadata.

NameTypeReqDescription
sessionstringSession id or unique session name. Omit to inspect all tracked sessions

No output schema declared.

No examples provided.

ssh-session-history ~75

Read line-numbered session history built from terminal output and user/agent actions.

NameTypeReqDescription
lineintegerRead from this history line number
maxLinesintegerMaximum number of history lines to return
sessionstringSession id, session ref, or session name. Defaults to the active session

No output schema declared.

No examples provided.

ssh-session-list ~65

List tracked SSH PTY sessions. Closed sessions are kept briefly for inspection, then automatically pruned.

NameTypeReqDescription
connectionNamestringFilter by connection name
devicestringFilter by device id
includeClosedbooleanInclude recently closed retained sessions

No output schema declared.

No examples provided.

ssh-session-open ~460

Open a persistent interactive SSH PTY session with automatic idle cleanup and a terminal-style dashboard view.

NameTypeReqDescription
autoOpenViewerbooleanAutomatically ensure a local viewer is opened for this session
closedRetentionMsintegerHow long to keep a closed session summary/transcript in memory before pruning
colsintegerPTY column count
connectionNamestringLogical connection name for the selected device
dashboardHeightintegerRendered dashboard height in rows
dashboardLeftCharsintegerHow many recent transcript chars to retain in the rendered viewer
dashboardRightEventsintegerHow many recent input/control/lifecycle events to retain for actor markers
dashboardWidthintegerRendered dashboard width in columns
devicestringDevice profile id from ssh-session-mcp.config.json
hoststringSSH host. Falls back to server --host if omitted
idleTimeoutMsintegerAuto-close the SSH session after this much inactivity. 0 disables idle cleanup
includeDashboardbooleanInclude the rendered dashboard text in the tool response
keystringPath to a private SSH key on the local machine
passwordstringSSH password
portintegerSSH port. Falls back to server --port or 22
rowsintegerPTY row count
sessionNamestringOptional human-readable alias for the session
startupInputstringRaw text to send immediately after opening the session
startupInputActorstringActor label for startupInput, e.g. codex, claude, user
startupWaitMsintegerHow long to wait before capturing the initial dashboard
stripAnsiFromLeftbooleanStrip ANSI escape sequences from rendered SSH output
termstringPTY TERM value
userstringSSH username. Falls back to server --user if omitted
viewerModestringViewer launch mode when autoOpenViewer is enabled
viewerSingletonScopestringHow viewer singleton deduplication is scoped when autoOpenViewer is enabled

No output schema declared.

No examples provided.

ssh-session-policy-list ~48

List the inherited and session-level custom policy rules currently active for an SSH session.

NameTypeReqDescription
sessionstringSession id, session ref, or session name. Defaults to the active session

No output schema declared.

No examples provided.

ssh-session-policy-remove ~59

Remove a session-level custom policy rule by id.

NameTypeReqDescription
idstringyesRule id to remove from the current session rule set
sessionstringSession id, session ref, or session name. Defaults to the active session

No output schema declared.

No examples provided.

ssh-session-policy-reset ~48

Reset the current session custom policy rules back to the inherited defaults loaded from configuration.

NameTypeReqDescription
sessionstringSession id, session ref, or session name. Defaults to the active session

No output schema declared.

No examples provided.

ssh-session-policy-upsert ~206

Add or update a session-level custom policy rule. Session rules are applied after immutable built-in hard blocks and before the built-in safe/full warning set.

NameTypeReqDescription
actionstringyesblock rejects the command, warn allows it with warning metadata
categorystringyesRule category shown in blocked/warned responses
enabledbooleanWhether the rule is active. Defaults to true
flagsstringOptional JavaScript regex flags, for example i or gi
idstringyesStable rule id used for future updates or removal
messagestringyesHuman-readable reason shown when the rule matches
modestringWhich operation mode the rule applies to
patternstringyesJavaScript regular expression source without surrounding slashes
sessionstringSession id, session ref, or session name. Defaults to the active session
suggestionstringOptional remediation hint shown alongside the message

No output schema declared.

No examples provided.

ssh-session-read ~108

Read raw buffered terminal output from an SSH PTY session. Supports optional long-polling for new terminal output.

NameTypeReqDescription
maxCharsintegerMaximum chars to return
offsetintegerRead from this output offset. If omitted, return the latest tail
sessionstringSession id, session ref, or session name. Defaults to the active session
waitForChangeMsintegerWait up to this many milliseconds for new terminal output before returning

No output schema declared.

No examples provided.

ssh-session-resize ~63

Resize the PTY window of an interactive SSH session.

NameTypeReqDescription
colsintegeryesNew column count
rowsintegeryesNew row count
sessionstringSession id, session ref, or session name. Defaults to the active session

No output schema declared.

No examples provided.

ssh-session-send ~108

Send raw input to an interactive SSH PTY session. Actor is shown inline in the dashboard transcript.

NameTypeReqDescription
actorstringLabel for the sender shown inline in the dashboard, e.g. codex, claude, user
appendNewlinebooleanAppend a newline after the input
inputstringyesRaw text to send into the PTY
sessionstringSession id, session ref, or session name. Defaults to the active session

No output schema declared.

No examples provided.

ssh-session-set-active ~50

Set or clear the active session used by tools when the session argument is omitted.

NameTypeReqDescription
sessionstringSession id, session ref, or session name. Omit to clear the active session

No output schema declared.

No examples provided.

ssh-session-watch ~204

Long-poll an SSH PTY session and render a terminal-style dashboard with inline actor markers.

NameTypeReqDescription
dashboardHeightintegerRendered dashboard height in rows
dashboardLeftCharsintegerHow many recent transcript chars to retain in the rendered viewer
dashboardRightEventsintegerHow many recent input/control/lifecycle events to retain for actor markers
dashboardWidthintegerRendered dashboard width in columns
eventSeqintegerWait until transcript events grow beyond this sequence number
includeDashboardbooleanInclude the rendered dashboard text in the tool response
outputOffsetintegerWait until terminal output grows beyond this offset
sessionstringSession id, session ref, or session name. Defaults to the active session
stripAnsiFromLeftbooleanStrip ANSI escape sequences from rendered SSH output
waitForChangeMsintegerLong-poll duration in milliseconds

No output schema declared.

No examples provided.

ssh-status ~33

Quick status check: list active sessions, viewer URL, connection state. Use this to check if a session is already running.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

ssh-viewer-ensure ~84

Ensure that a viewer exists for a session. Terminal mode is singleton-scoped and will reuse a running viewer instead of opening duplicates.

NameTypeReqDescription
modestringViewer launch mode
sessionstringSession id, session ref, or session name. Defaults to the active session
singletonScopestringDeduplication scope for terminal viewers

No output schema declared.

No examples provided.

ssh-viewer-list ~21

List persisted local viewer processes and their current binding state.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.