mcpField
R
realssh-mcp

realssh-mcp

Local
github.com/danielecrCloud & Infra0Updated 27w ago

About realssh-mcp

realssh-mcp is an MCP server for running commands on remote hosts through the system ssh binary. It is for users who need SSH operations from an MCP client, reusing existing ssh-agent and SSH configuration while offering connectivity checks and command timeouts.

Key features

  1. 01Runs remote commands through system ssh
  2. 02Reuses ssh-agent and SSH configuration
  3. 03Supports ProxyCommand and jump hosts
  4. 04Tests host connectivity
  5. 05Returns stdout, stderr, and exit code

Use cases

  1. 01Checking disk status on a remote server
  2. 02Inspecting remote service status
  3. 03Testing SSH connectivity before execution
  4. 04Running operations commands in MCP workflows

MCP support

The MCP server exposes ssh_execute and ssh_test tools. MCP clients can use them to run remote commands or test connectivity; the server delegates execution to the system ssh program.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"danielecr-realssh": {
"command": "npx",
"args": [
"-y",
"@danielecr/realssh-mcp"
]
}
}
}
Run commandnpx -y @danielecr/realssh-mcp

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@danielecr/realssh-mcp1.0.6

Tools

2

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
hoststringYesSSH server hostname or IP address (e.g., 'dev234' or '192.168.1.100')
portnumberNoSSH server port (default: 22)
commandstringYesCommand to execute on the remote server
timeoutnumberNoCommand timeout in milliseconds (default: 30000)
usernamestringNoSSH username (e.g., 'username'). Defaults to the current OS user.
extraArgsarrayNoExtra SSH arguments (e.g., ['-o', 'StrictHostKeyChecking=no'])
agentForwardbooleanNoEnable SSH agent forwarding (default: false)

Details

From the project README

SSH Real MCP Server

A Model Context Protocol (MCP) server that enables SSH remote command execution by delegating entirely to the system ssh binary. This means ssh-agent, ProxyCommand, ~/.ssh/config, jump hosts, and every other OS-level SSH feature work out of the box — no Node.js crypto, no native addons.

How it works

Instead of implementing the SSH protocol in Node.js, this server spawns ssh as a child process and pipes the output back to the MCP client. Authentication, key discovery, and connection routing are handled by your OS, exactly as if you ran ssh yourself in a terminal.

Requirements: ssh must be installed and available in PATH (standard on macOS and Linux).

Features

  • Zero auth config — uses your existing ssh-agent, ~/.ssh/config, and key files automatically
  • ProxyCommand / jump hosts — works natively, no special parameters needed
  • Connectivity test — ssh_test tool to verify reachability before running commands
  • Argument injection protection — host and username are validated before being passed to ssh
  • Configurable timeout — commands are killed and an error is returned if they exceed the timeout
  • Detailed results: stdout, stderr, and exit code

Installation

From npm
npm install -g @danielecr/realssh-mcp
From source
git clone https://github.com/danielecr/realssh-mcp.git
cd realssh-mcp
npm install
npm run build

VS Code / Copilot configuration

After installing the package globally, add the server to your MCP configuration. In VS Code, open the MCP config file via Command Palette → MCP: Open User Configuration and add:

{
  "servers": {
    "realssh": {
      "type": "stdio",
      "command": "realssh-mcp"
    }
  }
}

Then run MCP: List Servers to verify the server is active.

Tools

ssh_execute

Execute a command on a remote server via SSH.

Parameters:

  • host (string, required): SSH server hostname or IP address
  • command (string, required): Command to execute on the remote server
  • username (string, optional): SSH username. Defaults to the current OS user
  • port (number, optional): SSH server port (default: 22)
  • timeout (number, optional): Command timeout in milliseconds (default: 30000)
  • agentForward (boolean, optional): Enable SSH agent forwarding -A (default: false)
  • extraArgs (string[], optional): Extra SSH arguments (e.g., ["-o", "StrictHostKeyChecking=no"])

Example:

{
  "host": "prod-web-01",
  "command": "df -h"
}
{
  "host": "192.168.1.100",
  "username": "deploy",
  "command": "systemctl status nginx"
}
ssh_test

Test SSH connectivity to a remote host (runs echo ok and checks the response).

Parameters:

  • host (string, required): SSH server hostname or IP address
  • username (string, optional): SSH username
  • port (number, optional): SSH server port (default: 22)
  • extraArgs (string[], optional): Extra SSH arguments

Host configuration

Hosts, aliases, jump hosts, and identity files are configured in ~/.ssh/config — not in the MCP server. This is intentional: the OS ssh binary reads that file natively.

Example ~/.ssh/config:

Host prod
    HostName prod.example.com
    User deploy
    ProxyJump bastion

Host bastion
    HostName bastion.example.com
    User admin
    IdentityFile ~/.ssh/bastion_ed25519

With the above config, "host": "prod" works with no extra parameters.

Security considerations

  • Commands are executed on remote systems with the privileges of the SSH user — ensure proper access controls on the remote side.
  • BatchMode=yes is set by default, preventing the ssh process from hanging on interactive prompts.
  • Host and username inputs are validated to prevent SSH option injection.
  • Command output may contain sensitive data; treat it accordingly.

License

MIT

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.