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

  1. Instale el paquete:
npm install mcp-ssh
  1. 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

  1. Clone el repositorio:
git clone https://github.com/shaike1/mcp-server-ssh.git
cd mcp-server-ssh
  1. Instale las dependencias:
npm install
  1. Compile:
npm run build
  1. 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

  1. Haga un fork del repositorio
  2. Cree su rama de características (git checkout -b feature/amazing-feature)
  3. Haga commit de sus cambios (git commit -m 'Add some amazing feature')
  4. Haga push a la rama (git push origin feature/amazing-feature)
  5. Abra un Pull Request

Licencia

MIT