MCP SSH Server
Proporciona acceso SSH a servidores remotos, permitiendo que herramientas de IA se conecten de forma segura a tu VPS para su gestión.
Documentación
MCP SSH Server
Un servidor de Model Context Protocol (MCP) que proporciona acceso completo por SSH y consola serie a servidores remotos y dispositivos de red. Permite que herramientas de inteligencia artificial como Claude Desktop gestionen de forma segura servidores Linux, conmutadores de red y dispositivos de infraestructura mediante conexiones SSH por red y acceso directo a consola por USB a Serie.
Características
Capacidades principales de SSH
- Gestión de conexiones SSH con autenticación por contraseña o clave
- Ejecución de comandos remotos con manejo de tiempos de espera
- Subida y descarga de archivos mediante SFTP
- Listado de directorios y operaciones con archivos
- Manejo seguro de conexiones
Gestión de dispositivos de red
- Acceso a consola USB a Serie — Conexiones de consola directas mediante adaptadores FTDI y otros USB
- Gestión de conmutadores de red — Compatibilidad total con conmutadores Cisco IOS/IOS-XE y Aruba
- Descubrimiento de dispositivos — Detección automática de tipos y capacidades de conmutadores
- Gestión de configuración — Copia de seguridad, restauración y configuración automatizada
- Diagnósticos de red — Pruebas integradas de ping, traceroute y conectividad
- Transición de consola a SSH — Configuración automatizada de SSH mediante conexión de consola
- Gestión de firmware — Subida, verificación, instalación y reversión del firmware del conmutador
Gestión de servidores
- Herramientas de gestión para servidores Ubuntu (Nginx, SSL, paquetes, cortafuegos)
- Compatible con Claude Desktop, VS Code y otros clientes compatibles con MCP
Pruebas de producción en entornos reales
Esta herramienta ha sido probada exhaustivamente en entornos de red de producción:
- Descubrimiento de red — Se descubrieron con éxito puertos flutter desconocidos anteriormente en conmutadores de producción que causaban problemas de conectividad intermitente
- Cero tiempo de inactividad — Se gestionaron múltiples conmutadores en redes de producción en vivo sin causar interrupciones ni cortes en la red
- Ahorro de tiempo — La configuración automatizada de SSH redujo el tiempo de configuración de un conmutador de 15-20 minutos a menos de 2 minutos
- Fiabilidad — Cero incidentes durante despliegues de producción en múltiples dispositivos de red
- Compatibilidad USB a Serie — Probado con adaptadores FTDI FT232R/FT232H, Prolific PL2303, Silicon Labs CP2102/CP2104 y CH340
- Compatibilidad con conmutadores — Validado en las series Cisco Catalyst 2960/3560/3750 y Aruba 2530/2930
La herramienta ha demostrado ser lo suficientemente fiable para tareas de gestión de redes en producción sin necesidad de un entorno de laboratorio separado para pruebas.
Requisitos previos
- Node.js 18 o superior
- npm o yarn
- Compatible con Windows, macOS y Linux
Instalación
-
Clonar el repositorio:
git clone https://github.com/yourusername/mcp-ssh-server.git cd mcp-ssh-server -
Instalar dependencias:
npm install -
Compilar el proyecto:
npm run build -
Instalar globalmente (opcional):
npm install -g .
Configuración
Configuración de Claude Desktop
- Abre Claude Desktop
- Ve a Configuración > Desarrollador (o pulsa Ctrl+Shift+D)
- Edita la configuración de MCP
- Añade la siguiente configuración:
{
"mcpServers": {
"ssh-server": {
"command": "node",
"args": ["/path/to/mcp-ssh-server/build/index.js"],
"env": {
"NODE_NO_WARNINGS": "1"
}
}
}
}
Importante: Reemplaza /path/to/mcp-ssh-server/build/index.js por la ruta absoluta a tu archivo index.js compilado.
Configuración de VS Code (si se usa la extensión MCP)
Crea o edita .vscode/mcp.json en tu espacio de trabajo:
{
"mcpServers": {
"ssh-server": {
"command": "node",
"args": ["/path/to/mcp-ssh-server/build/index.js"]
}
}
}
Herramientas disponibles
Herramientas principales de SSH
ssh_connect
Establece una conexión SSH con un servidor remoto.
Parámetros:
host(obligatorio) — Nombre de host o dirección IPusername(obligatorio) — Nombre de usuario SSHpassword(opcional) — Contraseña SSHprivateKeyPath(opcional) — Ruta al archivo de clave privadapassphrase(opcional) — Frase de contraseña para la clave privadaport(opcional) — Puerto SSH (por defecto: 22)connectionId(opcional) — Identificador único para esta conexión
Devuelve:
success— Booleano que indica éxitoconnectionId— ID para usar en comandos posterioresmessage— Mensaje de estado de la conexión
Ejemplo:
Connect to my server at example.com using username 'admin' and password authentication
ssh_exec
Ejecuta un comando en el servidor remoto.
Parámetros:
connectionId(obligatorio) — ID de ssh_connectcommand(obligatorio) — Comando a ejecutarcwd(opcional) — Directorio de trabajotimeout(opcional) — Tiempo de espera del comando en milisegundos (por defecto: 60000)
Devuelve:
code— Código de salidasignal— Señal que terminó el proceso (si existe)stdout— Salida estándarstderr— Error estándar
Ejemplo:
Run "ls -la /var/www/html" on the server
ssh_upload_file
Sube un archivo al servidor remoto.
Parámetros:
connectionId(obligatorio) — ID de ssh_connectlocalPath(obligatorio) — Ruta local del archivoremotePath(obligatorio) — Ruta de destino remota
Devuelve:
success— Booleano que indica éxitomessage— Mensaje de estado de la subida
ssh_download_file
Descarga un archivo del servidor remoto.
Parámetros:
connectionId(obligatorio) — ID de ssh_connectremotePath(obligatorio) — Ruta remota del archivolocalPath(obligatorio) — Ruta de destino local
Devuelve:
success— Booleano que indica éxitomessage— Mensaje de estado de la descarga
ssh_list_files
Lista archivos en un directorio del servidor remoto.
Parámetros:
connectionId(obligatorio) — ID de ssh_connectremotePath(obligatorio) — Ruta del directorio a listar
Devuelve:
files— Matriz de objetos de archivo con propiedades:filename— Nombre del archivoisDirectory— Booleano que indica si es un directoriosize— Tamaño del archivolastModified— Hora de última modificación
ssh_disconnect
Cierra una conexión SSH.
Parámetros:
connectionId(obligatorio) — ID de ssh_connect
Devuelve:
success— Booleano que indica éxitomessage— Mensaje de estado de desconexión
Ejemplos de uso con Claude
-
Conecta a tu servidor:
Please connect to my VPS at example.com using username 'admin' and my SSH key at ~/.ssh/id_rsa -
Comprueba el estado del servidor:
Run the command "systemctl status nginx" to check web server status -
Sube un archivo del sitio web:
Upload my local file ~/websites/index.html to /var/www/html/index.html on the server -
Lista los archivos del sitio web:
Show me all files in the /var/www/html directory -
Descarga una copia de seguridad:
Download the file /var/backups/website-backup.tar.gz to my local Downloads folder -
Desconéctate cuando termines:
Please disconnect from the SSH session
Herramientas de gestión de conmutadores de red
switch_discover_device
Descubre e identifica el tipo y las capacidades del conmutador de red.
Parámetros:
connectionId(obligatorio) — ID de una conexión SSH activaenablePassword(opcional) — Contraseña de enable para el modo privilegiado
switch_show_interfaces
Muestra el estado e configuración de las interfaces del conmutador de red.
Parámetros:
connectionId(obligatorio) — ID de una conexión SSH activainterfaceType(opcional) — Tipo de interfaces a mostrarenablePassword(opcional) — Contraseña de enable para el modo privilegiado
switch_show_vlans
Muestra la configuración y estado de las VLAN del conmutador de red.
Parámetros:
connectionId(obligatorio) — ID de una conexión SSH activaenablePassword(opcional) — Contraseña de enable para el modo privilegiado
switch_backup_config
Realiza una copia de seguridad de la configuración del conmutador (configuración en ejecución o de arranque).
Parámetros:
connectionId(obligatorio) — ID de una conexión SSH activaconfigType(opcional) — Tipo de configuración para la copia de seguridadenablePassword(opcional) — Contraseña de enable para el modo privilegiado
switch_network_diagnostics
Ejecuta diagnósticos de red desde el conmutador (ping, traceroute).
Parámetros:
connectionId(obligatorio) — ID de una conexión SSH activatarget(obligatorio) — Dirección IP o nombre de host de destinodiagnosticType(opcional) — Tipo de diagnóstico a ejecutarenablePassword(opcional) — Contraseña de enable para el modo privilegiado
switch_show_mac_table
Muestra la tabla de direcciones MAC del conmutador de red.
Parámetros:
connectionId(obligatorio) — ID de una conexión SSH activavlan(opcional) — VLAN específica para mostrar direcciones MACenablePassword(opcional) — Contraseña de enable para el modo privilegiado
Herramientas de consola USB a Serie
Estas herramientas permiten el acceso directo a la consola de dispositivos de red mediante adaptadores USB a Serie. Son esenciales para la configuración inicial del dispositivo, el acceso de emergencia cuando se pierde la conectividad de red o cuando aún no se ha configurado SSH.
Adaptadores USB a Serie compatibles:
- FTDI FT232R/FT232H (recomendado: el más fiable)
- Prolific PL2303 (amplia compatibilidad)
- Silicon Labs CP2102/CP2104 (buen rendimiento)
- Chipsets CH340/CH341 (opción económica)
Todos los adaptadores funcionan con cables de consola estándar de Cisco/Aruba (RJ45 a DB9 o USB directo).
serial_list_ports
Lista los puertos USB a Serie disponibles en el sistema. Detecta automáticamente los adaptadores FTDI, Prolific, Silicon Labs y CH340.
Ejemplo:
Show me all available serial ports
serial_connect
Conecta a un dispositivo de red mediante el puerto de consola USB a Serie.
Parámetros:
port(obligatorio) — Nombre del puerto serie (por ejemplo, COM3 en Windows, /dev/ttyUSB0 en Linux)baudRate(opcional) — Velocidad de baudios (por defecto: 9600 para la mayoría de conmutadores)connectionId(opcional) — Identificador único para la conexióndeviceType(opcional) — Tipo de dispositivo para ajustes óptimos (cisco, aruba, genérico)
Ejemplo:
Connect to my Cisco switch console on COM3
serial_send_command
Envía un comando al dispositivo de red mediante conexión serie.
Parámetros:
connectionId(obligatorio) — ID de una conexión serie activacommand(obligatorio) — Comando para enviar al dispositivowaitForResponse(opcional) — Esperar respuesta del dispositivotimeout(opcional) — Tiempo de espera de respuesta en milisegundos
Ejemplo:
Send "show version" command to the console connection
serial_discover_device
Descubre el tipo y las capacidades del dispositivo mediante conexión serie. Identifica automáticamente dispositivos Cisco IOS, Cisco IOS-XE, Aruba y genéricos.
Parámetros:
connectionId(obligatorio) — ID de una conexión serie activa
Ejemplo:
Discover what type of device is connected
serial_list_connections
Lista todas las conexiones serie activas.
serial_disconnect
Desconecta un puerto serie.
Parámetros:
connectionId(obligatorio) — ID de una conexión serie activa
Herramientas de gestión de sitios web en Ubuntu
Las siguientes herramientas de gestión de servidores Ubuntu están disponibles:
- ubuntu_nginx_control — Control del servidor web (iniciar, detener, reiniciar, estado, recargar, verificar configuración)
- ubuntu_update_packages — Actualizaciones de paquetes del sistema con opción solo de seguridad
- ubuntu_ssl_certificate — Gestión de certificados SSL usando Let's Encrypt (emitir, renovar, estado, listar)
- ubuntu_website_deployment — Despliegue de sitios web con copia de seguridad y restauración automáticas
- ubuntu_ufw_firewall — Gestión del cortafuegos (UFW) (habilitar, deshabilitar, permitir, denegar, eliminar)
Herramientas de configuración y automatización de SSH
Estas herramientas automatizan el proceso de configurar el acceso SSH en conmutadores de red mediante conexión de consola, permitiendo una transición fluida de gestión solo por consola a gestión basada en SSH.
switch_generate_ssh_config
Genera una plantilla de configuración SSH para un conmutador de red según el tipo de dispositivo y el nivel de seguridad.
Parámetros:
deviceType(opcional) — Tipo de dispositivo: cisco, aruba (se detecta automáticamente si no se especifica)securityLevel(opcional) — Nivel de seguridad: básico, seguro (por defecto: básico)hostname(obligatorio) — Nombre de host del conmutadorip_address(obligatorio) — Dirección IP de gestiónsubnet_mask(opcional) — Máscara de subred (por defecto: 255.255.255.0)gateway(obligatorio) — Puerta de enlace predeterminadausername(obligatorio) — Nombre de usuario SSHpassword(obligatorio) — Contraseña SSH
switch_apply_ssh_config
Aplica la configuración SSH a un conmutador mediante una conexión de consola serie activa.
Parámetros:
serialConnectionId(obligatorio) — ID de una conexión serie activadeviceType(opcional) — Tipo de dispositivo: cisco, arubahostname(obligatorio) — Nombre de host del conmutadorip_address(obligatorio) — Dirección IP de gestióngateway(obligatorio) — Puerta de enlace predeterminadausername(obligatorio) — Nombre de usuario SSHpassword(obligatorio) — Contraseña SSHconfirmApply(obligatorio) — Debe ser verdadero para continuar
switch_verify_ssh_status
Comprueba el estado actual de la configuración SSH en un conmutador mediante conexión serie.
Parámetros:
serialConnectionId(obligatorio) — ID de una conexión serie activa
switch_test_ssh_connection
Prueba la conectividad SSH a un switch recién configurado.
Parámetros:
ip_address(obligatorio) - Dirección IP del switchusername(obligatorio) - Nombre de usuario SSHpassword(obligatorio) - Contraseña SSHport(opcional) - Puerto SSH (predeterminado: 22)
switch_complete_ssh_setup
Completa el flujo de trabajo de configuración SSH de extremo a extremo mediante la conexión de consola. Esto automatiza todo el proceso de configuración de SSH en un switch.
Parámetros:
serialConnectionId(obligatorio) - ID de una conexión serie activahostname(obligatorio) - Nombre de host del switchip_address(obligatorio) - Dirección IP de gestióngateway(obligatorio) - Puerta de enlace predeterminadausername(obligatorio) - Nombre de usuario SSHpassword(obligatorio) - Contraseña SSHconfirmSetup(obligatorio) - Debe ser verdadero para continuar
Herramientas de transición de consola a SSH
console_to_ssh_transition
Flujo de trabajo automatizado completo para transicionar un switch de red de solo acceso por consola a gestión por SSH. Esta es la herramienta recomendada para la configuración inicial del switch.
Parámetros:
port(obligatorio) - Puerto serie (por ejemplo, COM3, /dev/ttyUSB0)hostname(obligatorio) - Nombre de host del switchip_address(obligatorio) - Dirección IP de gestióngateway(obligatorio) - Puerta de enlace predeterminadausername(obligatorio) - Nombre de usuario SSHpassword(obligatorio) - Contraseña SSHdeviceType(opcional) - Tipo de dispositivo: cisco, aruba (se detecta automáticamente si no se especifica)confirmTransition(obligatorio) - Debe ser verdadero para continuar
Ejemplo:
Set up SSH on my Cisco switch connected to COM3 with hostname "switch-core-01", IP 192.168.1.10, gateway 192.168.1.1, username "admin"
quick_ssh_check
Verificación rápida del estado de SSH en un switch mediante la conexión serie sin realizar cambios.
Parámetros:
port(obligatorio) - Puerto seriebaudRate(opcional) - Velocidad de baudios (predeterminado: 9600)enablePassword(opcional) - Contraseña de habilitación si es necesaria
Herramientas de gestión de firmware
Estas herramientas ofrecen capacidades integrales de gestión de firmware para switches de red, incluida la verificación de versiones, la carga de firmware, la verificación, la instalación y la preparación de reversión.
switch_check_firmware
Verifica la versión actual del firmware y la información del sistema en un switch de red.
Parámetros:
connectionId(obligatorio) - ID de una conexión SSH activaenablePassword(opcional) - Contraseña de habilitación para modo privilegiado
Devuelve:
- Versión actual del firmware
- Versión de arranque
- Modelo del dispositivo y número de serie
- Tiempo de actividad del sistema
- Salida completa de la versión
switch_check_storage
Verifica el espacio de almacenamiento disponible en el switch antes de la carga del firmware.
Parámetros:
connectionId(obligatorio) - ID de una conexión SSH activaenablePassword(opcional) - Contraseña de habilitación para modo privilegiado
Devuelve:
- Información de almacenamiento flash
- Espacio disponible
- Detalles del sistema de archivos
switch_upload_firmware
Carga un archivo de firmware al switch de red mediante SFTP. Admite archivos de firmware grandes con un tiempo de espera de 30 minutos.
Parámetros:
connectionId(obligatorio) - ID de una conexión SSH activalocalFirmwarePath(obligatorio) - Ruta local del archivo de firmwareremotePath(opcional) - Ruta remota en el switch (predeterminado: flash:/nombre de archivo)enablePassword(opcional) - Contraseña de habilitación para modo privilegiado
Ejemplo:
Upload firmware file ~/downloads/c2960-lanbasek9-mz.150-2.SE11.bin to the switch
switch_verify_firmware
Verifica la integridad de un archivo de firmware cargado en el switch mediante sumas de comprobación MD5.
Parámetros:
connectionId(obligatorio) - ID de una conexión SSH activafirmwarePath(obligatorio) - Ruta al archivo de firmware en el switchenablePassword(opcional) - Contraseña de habilitación para modo privilegiado
Devuelve:
- Estado de verificación
- Resultados de la suma de comprobación MD5
- Información del archivo
switch_install_firmware
Instala el firmware en el switch y opcionalmente reinicia para aplicar la actualización.
Parámetros:
connectionId(obligatorio) - ID de una conexión SSH activafirmwarePath(obligatorio) - Ruta al archivo de firmware en el switchenablePassword(opcional) - Contraseña de habilitación para modo privilegiadoautoReboot(opcional) - Reiniciar automáticamente después de la instalación (predeterminado: false)
Importante: ¡Esto modifica la configuración de arranque! ¡Prueba primero en un entorno de laboratorio!
Ejemplo:
Install firmware flash:/c2960-lanbasek9-mz.150-2.SE11.bin and reboot the switch
switch_prepare_rollback
Prepara la información necesaria para la reversión del firmware en caso de problemas con el nuevo firmware.
Parámetros:
connectionId(obligatorio) - ID de una conexión SSH activaenablePassword(opcional) - Contraseña de habilitación para modo privilegiado
Devuelve:
- Configuración de arranque actual
- Imágenes de firmware disponibles
- Instrucciones para la reversión
Configuración de consola USB a serie
Requisitos de hardware
Adaptadores USB a serie:
- Adaptadores basados en FTDI (FT232R, FT232H) - Mejor opción por su fiabilidad
- Prolific PL2303 - Ampliamente disponibles y compatibles
- Silicon Labs CP2102/CP2104 - Buen rendimiento y estabilidad
- CH340/CH341 - Opción económica, funciona bien en la mayoría de los sistemas
Cables de consola:
- Cable de consola Cisco (RJ45 a DB9 o USB)
- Cable de consola Aruba/HP (RJ45 a DB9 o USB)
- Los cables de consola universales funcionan con la mayoría de los dispositivos
Instalación de controladores
Windows:
- Controladores FTDI: normalmente se instalan automáticamente o se descargan de ftdichip.com
- Controladores Prolific: disponibles en prolific.com.tw
- Controladores Silicon Labs: descárguelos de silabs.com
- Controladores CH340: normalmente incluidos en Windows 10/11, o descárguelos por separado
macOS:
- Adaptadores FTDI: normalmente funcionan sin configuración adicional
- Otros adaptadores: pueden requerir instalación del controlador del fabricante
Linux:
- La mayoría de los adaptadores funcionan de inmediato con los controladores del kernel
- FTDI, Silicon Labs, CH340: integrados en el kernel
- Verifique
dmesgdespués de conectar el adaptador para confirmar la detección
Inicio rápido con consola
- Conecte el adaptador USB a serie a su computadora
- Conecte el cable de consola del adaptador al puerto de consola del switch
- Enumere los puertos disponibles: "Muéstrame los puertos serie disponibles"
- Conéctese al puerto: "Conectar a COM3 para switch Cisco"
- Envíe comandos o ejecute la configuración automatizada
Notas de seguridad
- Guarde las claves SSH de forma segura
- Use autenticación basada en claves cuando sea posible
- Limite el acceso SSH a direcciones IP específicas
- Mantenga su servidor actualizado
- Use contraseñas o frases de contraseña seguras (mínimo 8 caracteres)
- Asegure el acceso físico a los puertos de consola y adaptadores USB a serie
- Considere configurar variables de entorno en un archivo
.envpara información sensible
Solución de problemas
El servidor no se inicia
- Verifique que Node.js esté instalado:
node --version - Verifique que todas las dependencias estén instaladas:
npm install - Reconstruya el proyecto:
npm run build
Problemas de conexión
- Verifique que el servidor SSH esté ejecutándose en el destino
- Revise la configuración del firewall
- Confirme que las credenciales sean correctas
- Pruebe la conexión SSH manualmente primero
Integración con Claude Desktop
- Asegúrese de que la ruta en la configuración sea absoluta
- Reinicie Claude Desktop después de los cambios de configuración
- Consulte la Consola de desarrollador para ver los mensajes de error
Desarrollo
Para modificar o ampliar el servidor:
- Edite los archivos fuente en
src/ - Reconstruya:
npm run build - Pruebe sus cambios
- Reinicie Claude Desktop o VS Code para que se apliquen los cambios
Ejecución en modo de desarrollo
Para pruebas rápidas durante el desarrollo:
npm run dev
Contribuciones
Las contribuciones para herramientas y características adicionales son bienvenidas. No dude en enviar solicitudes de extracción (pull requests) o abrir problemas para mejoras y correcciones de errores.
Licencia
Licencia MIT