mcp-ssh-server
Enables SSH connection to remote Linux servers for executing commands, reading/writing files, and managing directories via SFTP.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-ssh-serverConnect to dev.example.com as admin"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP SSH Server
A Model Context Protocol (MCP) server that bridges VS Code on Windows with remote Linux servers via SSH. This enables AI assistants like GitHub Copilot to seamlessly interact with remote development environments.
Features
π Password-to-Key Bootstrap: Connect once with a password, then automatically use SSH keys for all future connections
π Remote File System Access: Expose remote directories through MCP Resources
π οΈ Remote Command Execution: Run shell commands on remote servers with full stdout/stderr capture
π Direct File Operations: Read and write files directly to remote servers via SFTP
π Connection Management: Automatic reconnection and connection pooling
π Secure Key Storage: ED25519 keys stored locally in
~/.mcp-ssh/
Related MCP server: SSH MCP Server
Architecture
βββββββββββββββββββββββ
β VS Code + Copilot β
ββββββββββββ¬βββββββββββ
β stdio (MCP Protocol)
βΌ
βββββββββββββββββββββββ
β MCP SSH Server β
β βββββββββββββββββ β
β β Resource β β Exposes remote file system
β β Handler β β
β βββββββββββββββββ β
β βββββββββββββββββ β
β β Tool Handler β β Provides remote operations
β βββββββββββββββββ β
β βββββββββββββββββ β
β β SSH Manager β β Password-to-key bootstrap
β βββββββββββββββββ β
β βββββββββββββββββ β
β β SFTP Client β β File operations
β βββββββββββββββββ β
ββββββββββββ¬βββββββββββ
β SSH/SFTP
βΌ
βββββββββββββββββββββββ
β Remote Linux β
β Server β
βββββββββββββββββββββββInstallation
Clone the repository:
git clone <repository-url> mcp-ssh-server cd mcp-ssh-serverInstall dependencies:
npm installConfigure VS Code MCP Settings:
Add this configurationto to your MCP settings file. The location depends on your VS Code configuration:
{ "mcpServers": { "ssh-server": { "command": "node", "args": ["path\\mcp-ssh-server\\src\\index.js"], "env": { "LOG_LEVEL": "info" } } } }
Password-to-Key Bootstrap Flow
The MCP SSH Server implements an intelligent authentication flow:
First Connection
User provides SSH password
Server connects using password authentication
Server automatically generates an ED25519 key pair
Public key is deployed to
~/.ssh/authorized_keyson the remote serverPrivate key is stored in
~/.mcp-ssh/keys/id_ed25519_<host>Connection is re-established using the new key
Subsequent Connections
Server detects existing key for the host
Connects directly using key-based authentication
No password required!
Security Notes
Keys are stored with
0600permissions (owner read/write only)Each host gets a unique key pair
Keys are never transmitted after initial deployment
Password is only used once and not stored
Available Tools
The MCP server provides the following tools that can be invoked by AI assistants:
1. connect_ssh
Connect to a remote SSH server.
Parameters:
host(required): Remote host address or IPusername(required): SSH usernamepassword(optional): SSH password (only needed for first connection)port(optional): SSH port (default: 22)
Example:
{
"host": "example.com",
"username": "developer",
"password": "initial-password",
"port": 22
}2. execute_command
Execute a shell command on the remote server.
Parameters:
command(required): Shell command to executeworkingDirectory(optional): Working directory for the command
Example:
{
"command": "gcc main.c -o main && ./main",
"workingDirectory": "/home/developer/project"
}3. read_file
Read contents of a file from the remote server.
Parameters:
path(required): Absolute or relative path to the file
Example:
{
"path": "/home/developer/config.json"
}4. write_file
Write content to a file on the remote server.
Parameters:
path(required): Absolute or relative path to the filecontent(required): Content to write
Example:
{
"path": "/home/developer/script.sh",
"content": "#!/bin/bash\necho 'Hello World'"
}5. list_directory
List contents of a directory on the remote server.
Parameters:
path(optional): Directory path (defaults to home directory)
Example:
{
"path": "/home/developer/projects"
}VS Code Integration
Using with GitHub Copilot Chat
Once configured, you can interact with your remote server through Copilot:
Example prompts:
"Connect to my server at dev.example.com as user john"
"List files in the /var/www directory"
"Read the nginx configuration file"
"Compile and run the C++ program in ~/projects/app"
"Write this code to ~/app/server.js on the remote server"
Chat Variables (Future Enhancement)
To create a custom chat variable like @ssh-server, you would need to:
Create a VS Code extension that registers the chat participant
Use the MCP client library to communicate with this server
Register slash commands like
/connect,/exec,/read,/write
Example extension.js (conceptual):
vscode.chat.createChatParticipant(
"ssh-server",
async (request, context, stream, token) => {
// Connect to MCP server via stdio
// Forward user's request to appropriate tool
// Stream response back to chat
}
);Configuration
Environment Variables
LOG_LEVEL: Set logging level (debug,info,warn,error) - default:infoLOG_TO_FILE: Enable file logging - default:false
Directory Structure
~/.mcp-ssh/
βββ keys/ # SSH private keys
β βββ id_ed25519_user@host_22
β βββ id_ed25519_user@other_22
βββ config/ # Configuration files (future)
βββ logs/ # Log files (if enabled)Usage Examples
Example 1: Connect and Compile Code
User: "Connect to dev.example.com as developer with password 'mypass'"
AI: Uses connect_ssh tool
Server: Connects, generates keys, deploys public key
AI: "Connected! Future connections will use keys."
User: "Compile the C program in ~/project"
AI: Uses execute_command tool
Server: Executes "cd ~/project && gcc main.c -o main"
AI: Returns stdout/stderr and exit codeExample 2: Edit Remote Configuration
User: "Read the nginx config"
AI: Uses read_file tool with path "/etc/nginx/nginx.conf"
Server: Returns file contents
AI: Displays configuration
User: "Add this server block to the config..."
AI: Uses write_file tool
Server: Writes updated configuration
AI: "Configuration updated successfully"Troubleshooting
Connection Issues
Problem: "Connection timeout"
Check firewall rules on both Windows and Linux
Verify SSH service is running:
systemctl status sshdTest connection manually:
ssh user@host
Problem: "Key authentication failed"
Check
~/.ssh/authorized_keyspermissions on remote server (should be 600)Verify
~/.sshdirectory permissions (should be 700)Check server logs:
sudo tail -f /var/log/auth.log
Key Bootstrap Issues
Problem: "Failed to deploy public key"
Ensure user has write access to
~/.ssh/authorized_keysCheck if
~/.sshdirectory exists on remote serverVerify password authentication is enabled in
/etc/ssh/sshd_config
File Operation Issues
Problem: "Failed to write file"
Check file path permissions
Verify user has write access to the directory
Ensure parent directories exist
Development
Project Structure
mcp-ssh-server/
βββ src/
β βββ index.js # Entry point
β βββ config.js # Configuration
β βββ mcp/
β β βββ MCPServer.js # Main MCP server
β β βββ ResourceHandler.js # MCP Resources implementation
β β βββ ToolHandler.js # MCP Tools implementation
β βββ ssh/
β β βββ SSHConnectionManager.js # SSH connection management
β β βββ KeyManager.js # Key generation and deployment
β βββ sftp/
β β βββ SFTPClient.js # SFTP operations wrapper
β βββ utils/
β βββ logger.js # Logging utility
βββ package.json
βββ README.mdRunning in Development Mode
npm run devThis starts the server with Node.js inspector enabled for debugging.
Security Considerations
Key Storage: Private keys are stored in
~/.mcp-ssh/keys/with restrictive permissionsPassword Handling: Passwords are only used once and never stored
Connection Security: Uses modern SSH algorithms (ED25519, Curve25519)
File Operations: All file writes are atomic to prevent corruption
Logging: Passwords are redacted from logs
License
MIT
Contributing
Contributions are welcome! Please feel free to submit issues and pull requests.
Acknowledgments
Built with the Model Context Protocol SDK
Uses ssh2 for SSH connectivity
Uses ssh2-sftp-client for SFTP operations
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityDmaintenanceA bridge that enables AI assistants to connect to VS Code's debugger, allowing them to interact with and control debugging sessions through websocket connections.8MIT
- AlicenseAqualityDmaintenanceSSH MCP Server lets you manage remote Linux servers through natural language in VS Code Copilot Chat. Instead of switching to a terminal and remembering SSH commands23MIT

cygnus-ssh-mcpofficial
AlicenseAqualityBmaintenanceEnables AI assistants to manage remote servers via SSH with 43 specialized tools for command execution, file editing, directory operations, and background tasks across Linux, macOS, and Windows.445GPL 3.0- Alicense-qualityFmaintenanceEnables AI assistants to interact with VS Code for language intelligence, debugging, and code execution.16MIT
Related MCP Connectors
Persistent memory and cross-session learning for AI coding assistants (hosted remote MCP).
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analyβ¦
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/arieend/mcp-ssh-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server