SSH MCP Server
An MCP server that gives AI assistants full SSH/SFTP remote operations — session management, command execution, interactive shells, file transfers, port forwarding, and system diagnostics.
Works with Claude Desktop, VS Code + GitHub Copilot, and any MCP-compatible client.
Packages
Package | Description |
MCP server (29 tools) — standalone CLI & npm package | |
VS Code extension — auto-registers the server with GitHub Copilot |
Features
Session Management — Connect/disconnect/ping with password or key-based auth
Command Execution — Run commands with stdout/stderr capture, timeouts, exit codes
Sudo Execution — Elevated commands with password injected via stdin (never logged)
Background Jobs — Long-running commands with polling and cancellation
Interactive Shells — PTY shells with read/write/resize
SFTP Operations — Upload, download, read, write, delete, list, stat
Port Forwarding — Local (-L) and remote (-R) SSH tunnels
System Diagnostics — OS, CPU, memory, disk, network, load, processes
Audit Logging — NDJSON structured logs with filtering
Quick Start
Standalone (npm)
npm install -g simple-ssh-mcp-serverClaude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"ssh": {
"command": "npx",
"args": ["ssh-mcp-server"],
"env": {
"SSH_MCP_MAX_CONNECTIONS": "10",
"SSH_MCP_HOST_KEY_MODE": "accept"
}
}
}
}VS Code + GitHub Copilot
Install the SSH MCP VS Code extension — the server starts automatically when VS Code launches. Requires VS Code 1.99+ and GitHub Copilot.
Tools (29)
Category | Tools |
Sessions |
|
Exec |
|
Background |
|
Shells |
|
SFTP |
|
Port Forward |
|
Diagnostics |
|
Configuration
All settings via environment variables:
Variable | Default | Description |
|
| Max concurrent SSH sessions |
|
| Audit log directory |
|
| Default TERM for PTY shells |
|
| Terminal width |
|
| Terminal height |
|
| Command timeout (ms) |
|
| Host key: |
|
|
|
See server README for the full configuration reference.
Security
Sudo passwords injected via stdin, never logged
ANSI escape sequences stripped from output
Output truncation prevents unbounded memory
SSH keepalives detect dead connections
ESLint security plugin + Gitleaks + CodeQL + Trivy in CI