MCP server for executing shell commands on remote hosts via SSH.
MCPpedia last refreshed this data
io.github.jordanburke/ssh-client-mcp-server is an MCP server that MCP server for executing shell commands on remote hosts via SSH. Its tool list has not been published yet over stdio, requires no API key, and scores 87/100 on MCPpedia's security, maintenance and efficiency rubric.
Config is the same across clients - only the file and path differ.
{
"mcpServers": {
"ssh-client-mcp-server": {
"args": [
"-y",
"ssh-client-mcp-server",
"--host=1.2.3.4",
"--user=root",
"--key=~/.ssh/id_ed25519"
],
"command": "npx"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
MCP server for executing shell commands on remote hosts via SSH.
Run this in your terminal to verify the server starts. Then let us know if it worked - your result helps other developers.
npx -y 'ssh-client-mcp-server' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
Five weighted categories - click any category to see the underlying evidence.
No known CVEs.
Checked ssh-client-mcp-server against OSV.dev.
Click any tool to inspect its schema.
Be the first to review
Have you used this server?
Share your experience - it helps other developers decide.
Sign in to write a review.
Others in other
Private-by-default, local-first memory/context/task orchestrator for MCP apps and agents.
Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 60-95% fewer tokens, same answers. Library, proxy, MCP server.
SQL for Android APK and DEX files: classes, methods, strings, references and smali.
System 1 decision models (Jev, Laya, Cua-S1) as brain for agents: Browser use, computer use, games and robotics
MCP Security Weekly
Get CVE alerts and security updates for io.github.jordanburke/ssh-client-mcp-server and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
SSH Client MCP Server is a local Model Context Protocol (MCP) server that lets LLMs and other MCP clients execute shell commands on remote hosts over SSH. It runs from Linux, macOS, or Windows and targets any reachable SSH server (Linux, macOS, Windows with OpenSSH, etc.).
Built on somamcp — a functional MCP framework over FastMCP with telemetry, introspection, and backend abstraction.
This repository is a pnpm monorepo with three packages:
| Package | npm name | Role |
|---|---|---|
packages/core | @ssh-mcp/core (private) | Shared SSH pool, tmux command builders, and auth resolution. Bundled into the other packages; not published separately. |
packages/connector | ssh-client-mcp-server | Single-host MCP server (the original package). exec + tmux_* tools for one configured SSH host. |
packages/orchestrator | ssh-fleet-mcp-server | Multi-host fleet MCP server. Host-routed exec + tmux_* tools driven by a TOML fleet config. |
Run the full validation suite across all packages:
pnpm -r validate
npx — see Client Setup.No global install required — npx fetches and runs the latest published version.
exec tool — runs a shell command on the remote host, returns stdout. stderr surfaces as a structured error.SSH_AUTH_SOCK (system ssh-agent, 1Password, Bitwarden Desktop, KeePassXC).--key supports ~, $VAR, ${VAR}, and relative paths via functype-os. Unresolved variables fail fast with a typed error.--user defaults to the current OS username when omitted.exec call.soma_health, soma_capabilities, soma_connections auto-registered by somamcp.| Tool | Description |
|---|---|
exec | Execute a shell command on the remote SSH server and return stdout. |
soma_health | Server uptime, status, active session count. |
soma_capabilities | Enumerate registered tools, resources, and prompts. |
soma_connections | Gateway connection status (unused here). |
For driving long-running interactive processes (e.g. a remote coding agent) across calls, the server exposes tmux-backed tools. tmux must be installed on the remote host.
tmux_list — list live tmux sessions.tmux_send({ session?, input, submit? }) — type input into session (created if absent); presses Ent