SSH
STDIO提供SSH远程服务器访问的MCP服务器
提供SSH远程服务器访问的MCP服务器
A Model Context Protocol (MCP) server that provides SSH access to remote servers, allowing AI tools like Claude Desktop or VS Code to securely connect to your VPS for website management.
Clone the repository:
git clone https://github.com/yourusername/mcp-ssh-server.git cd mcp-ssh-server
Install dependencies:
npm install
Build the project:
npm run build
Install globally (optional):
npm install -g .
{ "mcpServers": { "ssh-server": { "command": "node", "args": ["/path/to/mcp-ssh-server/build/index.js"], "env": { "NODE_NO_WARNINGS": "1" } } } }
Important: Replace /path/to/mcp-ssh-server/build/index.js with the absolute path to your built index.js file.
Create or edit .vscode/mcp.json in your workspace:
{ "mcpServers": { "ssh-server": { "command": "node", "args": ["/path/to/mcp-ssh-server/build/index.js"] } } }
Establish an SSH connection to a remote server.
Parameters:
host (required) - Hostname or IP addressusername (required) - SSH usernamepassword (optional) - SSH passwordprivateKeyPath (optional) - Path to private key filepassphrase (optional) - Passphrase for private keyport (optional) - SSH port (default: 22)connectionId (optional) - Unique identifier for this connectionReturns:
success - Boolean indicating successconnectionId - ID to use for subsequent commandsmessage - Connection status messageExample:
Connect to my server at example.com using username 'admin' and password authentication
Execute a command on the remote server.
Parameters:
connectionId (required) - ID from ssh_connectcommand (required) - Command to executecwd (optional) - Working directorytimeout (optional) - Command timeout in milliseconds (default: 60000)Returns:
code - Exit codesignal - Signal that terminated the process (if any)stdout - Standard outputstderr - Standard errorExample:
Run "ls -la /var/www/html" on the server
Upload a file to the remote server.
Parameters:
connectionId (required) - ID from ssh_connectlocalPath (required) - Local file pathremotePath (required) - Remote destination pathReturns:
success - Boolean indicating successmessage - Upload status messageDownload a file from the remote server.
Parameters:
connectionId (required) - ID from ssh_connectremotePath (required) - Remote file pathlocalPath (required) - Local destination pathReturns:
success - Boolean indicating successmessage - Download status messageList files in a directory on the remote server.
Parameters:
connectionId (required) - ID from ssh_connectremotePath (required) - Directory path to listReturns:
files - Array of file objects with properties:
filename - File nameisDirectory - Boolean indicating if it's a directorysize - File sizelastModified - Last modification timeClose an SSH connection.
Parameters:
connectionId (required) - ID from ssh_connectReturns:
success - Boolean indicating successmessage - Disconnection status messageConnect to your server:
Please connect to my VPS at example.com using username 'admin' and my SSH key at ~/.ssh/id_rsa
Check server status:
Run the command "systemctl status nginx" to check web server status
Upload a website file:
Upload my local file ~/websites/index.html to /var/www/html/index.html on the server
List website files:
Show me all files in the /var/www/html directory
Download a backup:
Download the file /var/backups/website-backup.tar.gz to my local Downloads folder
Disconnect when done:
Please disconnect from the SSH session
The foundation is in place to add Ubuntu website management tools in src/ubuntu-website-tools.ts. Future enhancements will include:
.env file for sensitive informationnode --versionnpm installnpm run buildTo modify or extend the server:
src/npm run buildFor quick testing during development:
npm run dev
Contributions for additional tools and features are welcome. Please feel free to submit pull requests or open issues for enhancements and bug fixes.
MIT License