claude-ssh-mcp
by MaraBank
README.md
# claude-ssh-mcp
[](https://pypi.org/project/claude-ssh-mcp/)
[](https://www.npmjs.com/package/claude-ssh-mcp)
[](https://opensource.org/licenses/MIT)
MCP addon for **Claude Desktop** — gives Claude SSH access to your servers.
## Install
**With pip (auto-installs Node.js if needed):**
```bash
pip install claude-ssh-mcp
claude-ssh-mcp
```
**Or with npm:**
```bash
npx -y claude-ssh-mcp
```
That's it. Restart Claude Desktop and you're ready.
## Usage
Just talk to Claude naturally:
- *"Connect to 192.168.1.100 as root with password mypass, call it production"*
- *"Run `ls -la /var/www` on production"*
- *"Upload C:\Users\me\app.zip to /tmp/app.zip on production"*
- *"Download /var/log/error.log from production"*
- *"Connect to 10.0.0.5 as deploy with key at C:\Users\me\.ssh\id_rsa, name it staging"*
- *"Transfer /var/log/app.log from production to /tmp/app.log on staging"*
- *"List my servers"*
- *"Remove staging"*
## Features
- **Auto-install** — one command adds it to Claude Desktop
- **Auto-installs Node.js** — pip version handles everything
- **Servers are saved** — connect once, reconnect by name
- **SSH keepalive** — connections stay alive during long sessions
- **Auto-reconnect** — recovers from network interruptions
- **Auto-update** — checks for updates every 2 hours
## Saved Servers
When you tell Claude to connect, the server is saved to `~/.mcp-ssh/servers.json`. Next time just say *"connect to production"*.
Edit manually if you prefer:
```json
{
"production": {
"host": "192.168.1.100",
"port": 22,
"username": "root",
"password": "mypass"
},
"staging": {
"host": "10.0.0.5",
"port": 22,
"username": "deploy",
"privateKeyPath": "C:\\Users\\me\\.ssh\\id_rsa"
}
}
```
## Tools
| Tool | What it does |
|------|--------------|
| `ssh_connect` | Connect to a server (new or saved) |
| `ssh_disconnect` | Close a connection |
| `ssh_list_sessions` | Show all connections and saved servers |
| `ssh_remove_server` | Delete a saved server |
| `ssh_execute` | Run a shell command |
| `ssh_upload` | Upload a local file (SFTP) |
| `ssh_download` | Download a remote file (SFTP) |
| `ssh_transfer` | Copy a file between two servers |
| `ssh_list_files` | List remote directory contents |
## Building from Source
```bash
git clone https://github.com/MaraBank/mcp-ssh-server.git
cd mcp-ssh-server
npm install
npm run build
```
Then in Claude Desktop config (`%APPDATA%\Claude\claude_desktop_config.json`):
```json
{
"mcpServers": {
"ssh": {
"command": "node",
"args": ["C:\\path\\to\\mcp-ssh-server\\build\\index.js"]
}
}
}
```
## License
MIT — free and open source.
TDQS
A3.8/5.0
Scored across 9 tools
Disambiguation5/5
Each tool targets a distinct operation: connect, disconnect, execute commands, file transfers, listing, and server management. No two tools have overlapping purposes.
Naming Consistency5/5
All tools follow the consistent pattern 'ssh_verb' or 'ssh_verb_noun' (e.g., ssh_connect, ssh_list_files, ssh_remove_server). No mixing of conventions.
Tool Count5/5
With 9 tools, the set covers essential SSH operations without being bloated. Each tool serves a clear need for remote server management.
Completeness5/5
The surface provides full lifecycle management: connect/disconnect, command execution, file upload/download/transfer, listing, and session tracking. No obvious gaps for the domain.
Maintenance
ActivityInactive
ResponsivenessSlow