SSH access with Warp-like terminal experience for remote server management.
SSH MCP Server
An MCP (Model Context Protocol) server that provides SSH access with Warp-like terminal experience. Connect to remote servers, execute commands, transfer files, and manage interactive shell sessions.
Installation
npm install -g @kpanuragh/ssh-mcp
Or run directly with npx:
npx @kpanuragh/ssh-mcp
Features
- SSH Connection Management - Multiple concurrent connections with session persistence
- Command Execution - Run commands with stdout/stderr capture and exit codes
- SFTP Operations - Upload, download, and list files on remote servers
- Interactive Shell - PTY-based shell sessions for interactive commands
- Authentication - Support for both password and SSH key authentication
MCP Tools
| Tool | Description |
|---|---|
ssh_connect |
Establish SSH connection to a remote server |
ssh_exec |
Execute a command on connected server |
ssh_disconnect |
Close an SSH session |
ssh_list_sessions |
List all active SSH sessions |
sftp_upload |
Upload a file to remote server |
sftp_download |
Download a file from remote server |
sftp_list |
List files in remote directory |
ssh_shell_start |
Start interactive shell session |
ssh_shell_send |
Send input to interactive shell |
ssh_shell_read |
Read output from interactive shell |
ssh_shell_close |
Close interactive shell session |
Usage with Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"ssh": {
"command": "npx",
"args": ["@kpanuragh/ssh-mcp"]
}
}
}
Example Workflow
1. Connect to a server
{
"tool": "ssh_connect",
"arguments": {
"host": "example.com",
"username": "user",
"password": "password"
}
}
Or with SSH key:
{
"tool": "ssh_connect",
"arguments": {
"host": "example.com",
"username": "user",
"privateKeyPath": "/home/user/.ssh/id_rsa"
}
}
2. Execute commands
{
"tool": "ssh_exec",
"arguments": {
"sessionId": "uuid-from-connect",
"command": "ls -la"
}
}
3. Transfer files
{
"tool": "sftp_upload",
"arguments": {
"sessionId": "uuid-from-connect",
"localPath": "/local/file.txt",
"remotePath": "/remote/file.txt"
}
}
4. Interactive shell
{
"tool": "ssh_shell_start",
"arguments": {
"sessionId": "uuid-from-connect"
}
}
{
"tool": "ssh_shell_send",
"arguments": {
"sessionId": "uuid-from-connect",
"shellId": "shell-uuid",
"input": "cd /var/log\n"
}
}
5. Disconnect
{
"tool": "ssh_disconnect",
"arguments": {
"sessionId": "uuid-from-connect"
}
}
License
MIT
Tools (11)
ssh_connectEstablish SSH connection to a remote serverssh_execExecute a command on connected serverssh_disconnectClose an SSH sessionssh_list_sessionsList all active SSH sessionssftp_uploadUpload a file to remote serversftp_downloadDownload a file from remote serversftp_listList files in remote directoryssh_shell_startStart interactive shell sessionssh_shell_sendSend input to interactive shellssh_shell_readRead output from interactive shellssh_shell_closeClose interactive shell sessionConfiguration
{
"mcpServers": {
"ssh": {
"command": "npx",
"args": ["@kpanuragh/ssh-mcp"]
}
}
}