Skip to content
PluginStats

ssh-mcp weekly downloads statistics

By tufantunc · npm · MCP servers

MCP server exposing policy-gated, audited SSH access for Linux and Windows hosts via the Model Context Protocol.

View on npm Fresh · Oct 17, 2026

ssh-mcp has 3,306 recorded weekly downloads on npm, a decrease of 64.1% over the past 30 days.

It ranks #1182 of 2,256 tracked npm listings by weekly downloads.

Over 90 days, weekly downloads changed by +185%.

PluginStats has 543 daily observations since Apr 23, 2025; the latest is from Oct 17, 2026.

Weekly downloads
3,306
Official API · Oct 17, 2026
7-day growth
-55.7%
-4.2K weekly downloads
30-day growth
-64.1%
-5.9K weekly downloads
90-day growth
+185%
+2.1K weekly downloads
Rank
#1182
Among tracked npm listings

About ssh-mcp

SSH MCP Server v2

SSH MCP Server is a security-first Model Context Protocol server that gives LLM agents controlled SSH access to remote hosts — with command classification, policy-based authorization, human-in-the-loop approval, and full audit logging.

The risk this server exists to manage. Giving an LLM shell access on a remote host puts private data, untrusted input and network egress in one place — Simon Willison's "lethal trifecta". Prompt injection has no general fix, so ssh-mcp assumes any command may be attacker-influenced: it classifies before executing, authorizes against a role × host-group matrix, gates destructive work behind approval, and records the decision either way. That narrows the blast radius; it does not remove the risk. Two things stay yours: never point it at a root account, and never set auto approval on a production profile. SECURITY.md has the full threat model.

Quick Start

1. Install

2. Configure

Without a config the server still starts, so a client or directory can complete the MCP handshake and read tools/list — but every tool call is refused until you configure it, with a message naming the path below. Nothing runs on a host until this step is done.

Create the config file at the path for your platform:

| Platform | Path |

| Linux | ~/.config/ssh-mcp/config.toml (or $XDG_CONFIG_HOME/ssh-mcp/config.toml) | | macOS | ~/Library/Application Support/ssh-mcp/config.toml | | Windows | %APPDATA%\ssh-mcp\config.toml |

The config decides which hosts, roles and policy rules this server honours, so it checks that nobody but you can read it — and treats the two platforms differently, because the question has a much clearer answer on one of them.

Linux and macOS: enforced. The mode check above, on the file *and* the directory — which is why chmod 700 is in that command, since mkdir -p under the default umask leaves the directory 0755. The server refuses to start otherwise. "Only the owner" is unambiguous here and chmod is a one-line fix.

Windows: split by what the ACL actually allows. There are no mode bits, so the ACL is read instead — and read exposure and write exposure are not treated alike, because Windows is much clearer about one of them than the other.

| The ACL lets another account… | Default |

| only read the config | reported, and the server starts | | change the config | refused | | nothing (no ACL at all) | refused — that is full control for everyone | | …and if the ACL could not be read | refused, except when icacls is absent or the check timed out |

A config under %APPDATA% inherits access for you, SYSTEM and Administrators and needs nothing done to it. One created elsewhere does not: a file under C:\ inherits *read* for every local account and *modify* for every authenticated one. The message names the two icacls commands that fix it either way.

Read exposure is reported rather than refused because that is where Windows is genuinely muddier than POSIX, and refusing over it blocked a config at the documented location (#138). Write exposure is refused because it is not muddy at all: another account being able to rewrite the file that decides which hosts, roles and approval policy this server honours is an authorization bypass, not a disclosure.

Two flags move the whole thing: --strictConfigAcl refuses everything the check objects to, read-only grants included; --allowUncheckedConfigAcl reports everything and refuses nothing. Neither combination leaves you without an exit, which is the lesson of #138.

Exit statuses

| Status | Meaning |

| 0 | Clean shutdown | | 1 | A defect in the server — printed with a stack trace; please report it | | 2 | How it was invoked or configured — printed as a message, no stack |

A supervisor that treats any non-zero status as a failure needs no change. One that matched on 1 to detect a startup problem should match on 2 as well.

Starting with nothing configured is not an exit-2 condition, as of the release that added introspection without a config: the server starts so it can be described, and refuses each tool call instead. A supervisor that used a non-zero exit to catch an unconfigured deployment should watch for starting unconfigured on stderr, or read configured from GET /health when running the HTTP transport.

3. Set credentials via environment variables

4. Connect from your MCP client

Claude Code:

Claude Desktop / Cursor / Windsurf:

Never pass passwords as CLI arguments — they're visible via ps aux. Use env vars, config files, SSH agent, or OS keychain.

Tools (14)

| Tool | Purpose | readOnly | destructive |

| list-connections | Discover available hosts and connection status | ✅ | — | | list-sessions | List active sessions per host | ✅ | — | | open-session | Create a named interactive (stateful) or background session | — | — | | close-session | Close a session. A background session's command is signalled (INT/TERM/KILL) before its channel is dropped | — | ✅ | | read-session-output | Read output from background sessions (e.g., tail -f) | ✅ | — | | read-command | Execute allowlisted read-only commands (ls, cat, grep, ...) | ✅ | — | | run-command | Execute arbitrary commands (destructive/privileged need approval, unless approvalPolicy = "auto") | — | — | | privileged-command | Execute with sudo (needs approval, unless approvalPolicy = "auto") | — | ✅ | | sftp-upload | Upload a file via SFTP (replaces the destination unconditionally) | — | ✅ | | sftp-download | Download a file via SFTP | ✅ | — | | sftp-list | List a remote directory, bounded in entries and bytes | ✅ | — | | sftp-upload-file | Stream a local file to the remote host, never through model context | — | ✅ | | sftp-download-file | Stream a remote file to local disk, never through model context | — | ✅ | | signal-process | Send INT/TERM/KILL to a remote PID | — | ✅ |

Streaming file transfer…

Description from the npm listing.

  • ssh
  • mcp
  • model-context-protocol
  • server
  • windows
  • linux
  • automation
  • remote
  • cli
  • typescript

Charts

Images: 30d · 1y · all time · 1600×900 dark

Adoption over time

ssh-mcp weekly downloads on npm, last 90 days: 3,306 weekly downloads as of Oct 17, 2026, +185% over 90 days.ssh-mcpWeekly downloads on npm · Last 90 days3,306downloads / week+185% over 90 days010K20K30K40K50K60K70KJul 19Aug 3Aug 18Sep 2Sep 17Oct 2Oct 17downloads / weekobservedarchived (Internet Archive)no observationsJul 21, 2026 – Oct 17, 2026 · 89 observations · Updated Oc…pluginstats.com
ssh-mcp weekly downloads on npm, last 90 days: 3,306 weekly downloads as of Oct 17, 2026, +185% over 90 days.
PNG SVG

7/30/90-day growth

ssh-mcp weekly downloads growth on npm: -55.7% over 7 days, -64.1% over 30 days, +185% over 90 days.ssh-mcpWeekly downloads growth on npm3,306downloads / week now7-day growth-4,165 weekly downloads-55.7%30-day growth-5,894 weekly downloads-64.1%90-day growth+2,146 weekly downloads+185%Growth vs. nearest observation to each baseline date · Updated Oct 17, 2026pluginstats.com
ssh-mcp weekly downloads growth on npm: -55.7% over 7 days, -64.1% over 30 days, +185% over 90 days.
PNG SVG

Ranking history

ssh-mcp npm ranking history: currently #1182 (by weekly downloads).ssh-mcpnpm ranking · by weekly downloads · Last 90 days#1182current rank#400#500#600#700#800#900#1000#1100#1200Jul 21Aug 5Aug 20Sep 4Sep 19Oct 4Oct 19rankOct 17, 2026 – Oct 19, 2026 · 3 observations · Updated Oct 17, 2026pluginstats.com
ssh-mcp npm ranking history: currently #1182 (by weekly downloads).
PNG SVG

Listing placement

All npm2,256 listings · 113 pages · 1,130 shown · page 60, #2 (overall #1,182)
All npm: every listing in weekly downloads order
PNG SVG

Listing placement

MCP servers255 listings · 13 pages · page 12, #12 (overall #232)
MCP servers: every listing in weekly downloads order
PNG SVG

Filled points are observed values; hollow points come from Internet Archive snapshots of the listing page. Dashed segments span periods with no observations — values between points are not interpolated.

Each band is one page of 20. Weekly downloads on a log scale. Placement is projected from weekly downloads, so it can differ from the marketplace's own sort order. Hover a dot to see the listing.

Recent observations

Full history (543)
Recent weekly downloads observations for ssh-mcp
Date (UTC)Weekly downloadsChange vs. previous
3,306-457
3,763+338
3,425-915
4,340-683
5,0230
5,023-123
5,146-2.3K
7,471-1.5K
8,960+84
8,876+147
8,729-195
8,924-1.5K
10,431-1.2K
11,655—

Similar npm MCP servers plugins

All 20 ssh-mcp alternatives

Data source

Weekly downloads (trailing 7 complete days) come from the official npm downloads API. Downloads include CI and mirrors and are not equivalent to installs or users. npm publishes no ratings.

Listing: https://www.npmjs.com/package/ssh-mcp. First seen Oct 16, 2026; last successful collection Oct 19, 2026. See the methodology.