MCP SSH Server
Ejecuta comandos remotos de forma segura y realiza operaciones de archivos a través de SSH, con soporte para autenticación basada en contraseña y clave.
Documentación
MCP SSH Server
Una potente implementación de servidor SSH para el Protocolo de Contexto de Modelo (MCP). Este servidor permite la ejecución segura de comandos remotos y operaciones de archivos a través del protocolo SSH, con soporte tanto para autenticación por contraseña como por clave.
Características
- ✨ Gestión segura de conexiones SSH
- 🔑 Autenticación por contraseña y por clave
- 💻 Ejecución de comandos remotos
- 📁 Operaciones de archivos (subir/descargar)
- 📊 Seguimiento de progreso para transferencias de archivos
- 🔐 Gestión de permisos
- 📂 Operaciones de directorios
- 🚀 Transferencias masivas de archivos
- 📝 Registro detallado
Instalación
- Instale el paquete:
npm install mcp-ssh
- Añada a su configuración de escritorio de Claude (
claude_desktop_config.json):
{
"mcpServers": {
"ssh": {
"command": "node",
"args": ["%APPDATA%/npm/node_modules/mcp-ssh/dist/server.js"],
"env": {
"SSH_PORT": "8889",
"SSH_LOG_LEVEL": "info"
}
}
}
}
Uso
Autenticación por contraseña
$body = @{
id = "test"
host = "example.com"
port = 22
username = "user"
password = "pass123"
} | ConvertTo-Json
Invoke-RestMethod -Uri "http://localhost:8889/connect" -Method Post -Body $body -ContentType "application/json"
Autenticación por clave
$body = @{
id = "test"
host = "example.com"
port = 22
username = "user"
privateKey = Get-Content ~/.ssh/id_rsa | Out-String
passphrase = "optional-key-passphrase" # if your key is protected
} | ConvertTo-Json
Invoke-RestMethod -Uri "http://localhost:8889/connect" -Method Post -Body $body -ContentType "application/json"
Ejecutar comandos
$execBody = @{
id = "test"
command = "ls -la"
} | ConvertTo-Json
Invoke-RestMethod -Uri "http://localhost:8889/exec" -Method Post -Body $execBody -ContentType "application/json"
Operaciones de archivos
# Upload file
$uploadForm = @{
file = Get-Item -Path "localfile.txt"
remotePath = "/remote/path/file.txt"
}
Invoke-RestMethod -Uri "http://localhost:8889/upload/test" -Method Post -Form $uploadForm
# Download file
Invoke-RestMethod -Uri "http://localhost:8889/download/test?remotePath=/remote/path/file.txt" -Method Get -OutFile "downloaded.txt"
Operaciones de directorios
# List directory
Invoke-RestMethod -Uri "http://localhost:8889/ls/test?path=/remote/path" -Method Get
# Get connection status
Invoke-RestMethod -Uri "http://localhost:8889/status/test" -Method Get
Desarrollo
- Clone el repositorio:
git clone https://github.com/shaike1/mcp-server-ssh.git
cd mcp-server-ssh
- Instale las dependencias:
npm install
- Compile:
npm run build
- Inicie el servidor:
npm start
Variables de Entorno
SSH_PORT: Puerto del servidor (por defecto: 8889)SSH_LOG_LEVEL: Nivel de registro (por defecto: info)
Contribuciones
- Haga un fork del repositorio
- Cree su rama de características (
git checkout -b feature/amazing-feature) - Haga commit de sus cambios (
git commit -m 'Add some amazing feature') - Haga push a la rama (
git push origin feature/amazing-feature) - Abra un Pull Request
Licencia
MIT