Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.
Warning

Malware flagged

A supply-chain scanner flagged a high-severity malware risk in this package. Treat it as unsafe to install until the finding is cleared. See Supply Chain Security in the trust breakdown.

SSH Session MCP

NPM · SSH-SESSION-MCP

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

Available components

−3 this week 72 Trust /100

Last scanned (23 hours ago)

Scores higher than 43% of npm servers

Category Cloud Infrastructure

Trust breakdown (7 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 → Why this is hard to score →

Supply Chain Security36
  • Malware check failed: a supply-chain vendor flagged a high-severity malware risk. See how to fix → Fail
  • CVE check failed: a known high-severity CVE affects zod 3.23.8, a direct dependency. A fixed version is available. View diagnostics → Fail
  • No install/post-install scripts declared.Pass
  • 34 of 101 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
  • 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 161 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability76
  • AI-judged instruction clarity (good).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 Management77
  • Stability observed for 23 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
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 5 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "ssh-session-send" implies "send" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 23 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
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.

  • 4 Nov 26 −3
    • Stability: pass → 0.77 functional
  • 2 Nov 26 +1
    • Security disclosure: unverified → pass ▲ functional
  • 1 Nov 26 −1
    • Security disclosure: pass → unverified ▼ functional
  • 29 Oct 26 0
    • Stability: 0.97 → pass security
  • 28 Oct 26 0
    • Stability: pass → 0.97 functional
  • 24 Oct 26 −5
    • CVE-2023-54404 affects this package: high ▼ security
    • Known CVEs: pass → fail ▼ security
  • 22 Oct 26 +1
    • Stability: 0.97 → pass security
    • Security disclosure: unverified → pass ▲ functional
  • 21 Oct 26 −1
    • Security disclosure: pass → unverified ▼ functional
    • Stability: pass → 0.97 functional
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 4 Nov 2026 · Analysed npm/ssh-session-mcp@2.7.1

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
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 SLSA build provenance https://slsa.dev/provenance/v1
Subject digest sha512:c647b797448aacad10f02223bf7faddb2e63d77ee0d240b0052a9c0a18d4d66da0edea7f2c469b8c2b5d183464c87cd3941041dde5ecd2f07ce83af03

Background: How many MCP packages publish verified provenance →

Vulnerabilities 1 finding
ID CVE Severity Vector Fix available
GHSA-mrhx-c7xc-m3w5 CVE-2023-54404 high CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H yes

Background: What a vulnerability scan can and cannot prove →

Dependencies 101 packages
Packages resolved 101
Stale 34
Tree resolution Complete

Background: SBOMs and build attestations, explained →

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. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

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
maxCharsinteger–Max 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
connectionNamestring–Logical connection name. Defaults to "main" for profile-based sessions
devicestring–Device profile id. Defaults to config defaultDevice when available
sessionNamestring–Optional 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
backoffstring–Backoff strategy (default "exponential")
commandstringyesShell command to execute
delayMsinteger–Base delay between retries in ms (default 1000)
failPatternstring–Regex pattern - if output matches this, consider command failed regardless of exit code
maxRetriesinteger–Maximum number of retries (default 3)
sessionstring–Session name or id. Defaults to "default"
successPatternstring–Regex 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
idleMsinteger–Idle timeout in ms - if no new output for this duration, consider command done (default 2000)
maxCharsinteger–Max chars to read from output (default 16000). When output exceeds this limit, head (30%) and tail (70%) are returned with the middle omitted.
sessionstring–Session name or id. Defaults to "default"
waitMsinteger–Maximum 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
sessionstring–Session 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
actorstring–Label for the sender shown inline in the dashboard, e.g. codex, claude, user
controlstringyesControl key to send
sessionstring–Session 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
sessionstring–Session 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
lineinteger–Read from this history line number
maxLinesinteger–Maximum number of history lines to return
sessionstring–Session 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
connectionNamestring–Filter by connection name
devicestring–Filter by device id
includeClosedboolean–Include 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
autoOpenViewerboolean–Automatically ensure a local viewer is opened for this session
closedRetentionMsinteger–How long to keep a closed session summary/transcript in memory before pruning
colsinteger–PTY column count
connectionNamestring–Logical connection name for the selected device
dashboardHeightinteger–Rendered dashboard height in rows
dashboardLeftCharsinteger–How many recent transcript chars to retain in the rendered viewer
dashboardRightEventsinteger–How many recent input/control/lifecycle events to retain for actor markers
dashboardWidthinteger–Rendered dashboard width in columns
devicestring–Device profile id from ssh-session-mcp.config.json
hoststring–SSH host. Falls back to server --host if omitted
idleTimeoutMsinteger–Auto-close the SSH session after this much inactivity. 0 disables idle cleanup
includeDashboardboolean–Include the rendered dashboard text in the tool response
keystring–Path to a private SSH key on the local machine
passwordstring–SSH password
portinteger–SSH port. Falls back to server --port or 22
rowsinteger–PTY row count
sessionNamestring–Optional human-readable alias for the session
startupInputstring–Raw text to send immediately after opening the session
startupInputActorstring–Actor label for startupInput, e.g. codex, claude, user
startupWaitMsinteger–How long to wait before capturing the initial dashboard
stripAnsiFromLeftboolean–Strip ANSI escape sequences from rendered SSH output
termstring–PTY TERM value
userstring–SSH username. Falls back to server --user if omitted
viewerModestring–Viewer launch mode when autoOpenViewer is enabled
viewerSingletonScopestring–How 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
sessionstring–Session 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
sessionstring–Session 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
sessionstring–Session 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
enabledboolean–Whether the rule is active. Defaults to true
flagsstring–Optional 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
modestring–Which operation mode the rule applies to
patternstringyesJavaScript regular expression source without surrounding slashes
sessionstring–Session id, session ref, or session name. Defaults to the active session
suggestionstring–Optional 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
maxCharsinteger–Maximum chars to return
offsetinteger–Read from this output offset. If omitted, return the latest tail
sessionstring–Session id, session ref, or session name. Defaults to the active session
waitForChangeMsinteger–Wait 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
sessionstring–Session 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
actorstring–Label for the sender shown inline in the dashboard, e.g. codex, claude, user
appendNewlineboolean–Append a newline after the input
inputstringyesRaw text to send into the PTY
sessionstring–Session 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
sessionstring–Session 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
dashboardHeightinteger–Rendered dashboard height in rows
dashboardLeftCharsinteger–How many recent transcript chars to retain in the rendered viewer
dashboardRightEventsinteger–How many recent input/control/lifecycle events to retain for actor markers
dashboardWidthinteger–Rendered dashboard width in columns
eventSeqinteger–Wait until transcript events grow beyond this sequence number
includeDashboardboolean–Include the rendered dashboard text in the tool response
outputOffsetinteger–Wait until terminal output grows beyond this offset
sessionstring–Session id, session ref, or session name. Defaults to the active session
stripAnsiFromLeftboolean–Strip ANSI escape sequences from rendered SSH output
waitForChangeMsinteger–Long-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
modestring–Viewer launch mode
sessionstring–Session id, session ref, or session name. Defaults to the active session
singletonScopestring–Deduplication 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.

Install

How do I install the SSH Session MCP server?

SSH Session MCP runs locally as an npm package, launched with npx -y ssh-session-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · ssh-session-mcp

# add to Claude Code
claude mcp add zw-awa-ssh-session-mcp -- npx -y ssh-session-mcp
Common questions

What is the SSH Session MCP server?

SSH Session MCP is listed in the public MCP registry as io.github.Zw-awa/ssh-session-mcp. Shared SSH PTY runtime for MCP clients with viewer, input lock, async tracking, and policy rules. This page covers its npm package (ssh-session-mcp).

Is the SSH Session MCP server safe to use?

SSH Session MCP scores 72 out of 100 on VerifyMCP. A supply-chain scanner flagged a possible malware risk on one channel of this server. We recorded 1 known advisory against it as of 4 November 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the SSH Session MCP server expose?

SSH Session MCP exposes 23 tools: ssh-session-open, ssh-session-send, ssh-device-list, ssh-session-read, ssh-session-watch, and 18 more. Their descriptions and schemas cost roughly 2,348 tokens of context every time the server is loaded.

Is the SSH Session MCP server still maintained?

SSH Session MCP is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the SSH Session MCP server under?

SSH Session MCP declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.