SkillTide Submit
Official description10 sourcesMCP servers8d ago
tufantunc/ssh-mcp

tufantunc/ssh-mcp

๐Ÿ“‡ ๐Ÿ  ๐Ÿง ๐ŸชŸ - SSH control for Linux and Windows servers: execute remote shell commands with password or SSH keyโ€ฆ
View on GitHub โ†—Direct link ยท no redirect page
Config template (adjust for your client)
claude mcp add ssh-mcp -- npx -y ssh-mcp
A pasteable skeleton generated from the repository name. Check the project README for the exact package and arguments.
Star count
809 โ˜… ยท tufantunc/ssh-mcp ยท read from the repository page ยท (checked 2026-10-16 20:00:20)
Source
collected from the punkpeye/awesome-mcp-servers list ยท type: MCP server
Harvest history
first seen 2026-10-09 ยท last seen 2026-10-16 ยท seen 32ร— ยท listed by 10 sources
Score
score 1,003 ยท 809 โ˜… ยท 10 sources ยท mcp
FAQ (answers come from our records)
How do I install it?
We did not find an install command for this repository (our install coverage is only about 4%). Check its README or releases page.
Who is it for?
We filed it under these tags: MCP ๆœๅŠก. The tags come from the entry itself, not a taxonomy we imposed.
Who maintains it?
repository tufantunc/ssh-mcp๏ผ›first catalogued 2026-10-09๏ผ›last seen 2026-10-16ใ€‚There is no official certification or quality rating here โ€” we record sources and dates only.
Third-party quality signals

SSH MCP Server v2

ไปฅไธ‹ๆ‘˜ๅฝ•่‡ช่ฏฅไป“ๅบ“็š„ README๏ผˆ็‰‡ๆฎต๏ผ‰ ยท ๅœจ GitHub ่ฏปๅฎŒๆ•ด README โ†’

**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.
Source
awesome ยท https://github.com/tufantunc/ssh-mcp
Browse by field
MCP servers
Traction
809 โ˜…
added
yesterday

More in MCP servers

All 5,525 in MCP servers โ†’

Filed under

Every tag opens the full list for that filter. Counts are the live catalogue figures.

Browse all fields โ†’

โ† Back to index