@smorchestraai-code/ssh-mcp
v1.0.0
Published
MCP server for SSH-based server management. 16 tools across commands, file transfer, log reading, Docker introspection, and ServerFast bundle credential retrieval. Bring your own SSH keys — Claude operates against any VPS you can already SSH into.
Maintainers
Readme
SSH MCP
Part of the smorchestra-mcps collection of server / ops / infrastructure MCP servers.
Let Claude SSH into your servers, run commands, transfer files, tail logs, and inspect Docker. اسمح لـ Claude بالاتصال بخوادمك عبر SSH وتنفيذ الأوامر ومتابعة السجلات.
A Model Context Protocol server that gives Claude 16 tools across SSH command execution, file transfer, log reading, Docker introspection, and ServerFast bundle credential retrieval. Claude operates against any VPS you can already SSH into — no central registry, no agent install, just your existing SSH keys.
Install in one minute
You need: Node.js 20 or newer (download from nodejs.org), Claude Desktop, and an SSH key already configured for the server(s) you want to manage (Claude uses your existing ~/.ssh/ keys — no new keys generated).
1. Find your Claude Desktop config file:
| OS | Path |
|---|---|
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Linux | ~/.config/Claude/claude_desktop_config.json |
If the file doesn't exist, create it.
2. Paste this block:
{
"mcpServers": {
"ssh": {
"command": "npx",
"args": ["-y", "@smorchestraai-code/ssh-mcp"]
}
}
}No environment variables needed. Keys are read from your standard SSH locations:
~/.ssh/id_ed25519(preferred)~/.ssh/id_rsa~/.ssh/id_ecdsa
Or pass a custom path via the key_path argument on any tool call.
3. Restart Claude Desktop.
Detailed install: Windows · macOS · Troubleshooting
Already have other MCPs in your config? Just add the
"ssh": { ... }block inside the existing"mcpServers": {}object — don't replace the whole file.
What you can ask Claude
| Category | Tools | Examples |
|---|---|---|
| Commands | ssh_exec_command, ssh_exec_script, ssh_service_status, ssh_service_action, ssh_system_info | "SSH into 1.2.3.4 as root and run uptime" · "Restart nginx on prod" |
| Files | ssh_upload_file, ssh_download_file, ssh_list_directory | "Upload my-config.toml to /etc/myapp/" · "What's in /var/www on prod?" |
| Logs | ssh_tail_log, ssh_search_log, ssh_list_logs | "Tail the last 50 lines of /var/log/syslog" · "Search /var/log/auth.log for 'failed password' in the last hour" |
| Docker | ssh_docker_ps, ssh_docker_logs, ssh_docker_compose_action, ssh_docker_stats | "Show running containers on the staging server" · "docker compose up -d in /opt/n8n" |
| ServerFast | ssh_read_bundle_credentials | "What are my n8n credentials on the bundle-advanced server I just provisioned?" (reads /opt/eo-bundle/credentials.json) |
Combined with @smorchestraai-code/contabo-mcp, Claude can provision → SSH → operate in one prompt:
Provision a Cloud VPS L in Germany, wait for it to come up, SSH in as root,
install Docker, and run a quick `docker run hello-world` smoke test.Security model
- Your keys never leave your machine. The MCP runs locally on your laptop, reads keys from
~/.ssh/, and SSHes from there. No phone-home. - No credentials in the MCP config. Keys come from where they always lived.
- No persistent connections. Each tool call opens a new SSH connection, runs the command, closes the connection.
- Same surface as your terminal. If you can
ssh user@hostfrom the same shell, Claude can use that host through this MCP. If you can't, neither can Claude.
If you want Claude to use a non-default key, pass key_path to any tool call:
Use the key at ~/.ssh/staging_ed25519 and SSH into staging.example.com as ubuntuUpdating
Because the config uses npx -y, you always get the latest published version on every Claude Desktop restart. No manual updates needed.
Local development
git clone https://github.com/SMOrchestra-ai/smorchestra-mcps.git
cd smorchestra-mcps
npm install
npm run build --workspace=packages/ssh-mcp
npm test --workspace=packages/ssh-mcpThe 119-test suite mocks ssh2 completely — no live SSH connections, no credentials needed to run tests.
License
MIT — © 2026 SMOrchestra.ai / Mamoun Alamouri
