TermSSH MCP
✨ Por qué TermSSH MCP
La mayoría de las herramientas SSH para flujos de trabajo de IA se basan en ejecutar comando → obtener salida → listo.
Eso falla cuando la tarea real es interactiva:
los instaladores hacen preguntas
los shells mantienen el estado
la depuración requiere múltiples pasos
los despliegues necesitan cargas de archivos además de control de terminal
los agentes necesitan observar, reaccionar y continuar
TermSSH MCP está construido para cubrir esa brecha.
En lugar de pretender que todo es un solo comando, ofrece a los clientes MCP un flujo de trabajo real al estilo operador:
abrir un shell → escribir entrada → leer salida → mantener contexto → subir archivos → continuar trabajando
🧠 Qué lo hace diferente
Centrado en terminal
Las sesiones de terminal interactivas son el modelo central, no una ocurrencia tardía.
Listo para agentes
Diseñado para clientes MCP, agentes de codificación y bucles de automatización.
Flujos de trabajo con estado
Reutiliza sesiones activas para que las tareas de varios pasos se sientan naturales y confiables.
Carga incluida
Mueve scripts, configuraciones, cargas útiles y artefactos generados a través de SFTP.
Multiplataforma
Funciona contra objetivos SSH de Linux y Windows.
Superficie de herramientas limpia
Herramientas MCP enfocadas para el control de terminal y la entrega remota de archivos.
🚀 Capacidades principales
Sesiones de terminal SSH interactivas
Flujo incremental de lectura/escritura de terminal
Reutilización de sesiones de terminal gestionadas por defecto
Creación opcional de sesiones múltiples forzadas
Carga de archivos locales a través de SFTP
Carga directa de texto y contenido en base64
Soporte para redimensionamiento de terminal
Soporte para objetivos SSH de Linux y Windows
Interfaz nativa MCP para herramientas de IA
🧰 Conjunto de herramientas
upload-file
Sube un archivo local desde la máquina host MCP al servidor SSH remoto usando SFTP.
Parámetros
localPath— ruta del archivo fuente localremotePath— ruta de destino en el host remotocreateDirectories— crear directorios padres faltantes si es necesariooverwrite— reemplazar un archivo remoto existente si está presentemode— modo POSIX opcional como0644
upload-content
Sube texto directo o contenido en base64 al servidor remoto.
Parámetros
content— texto sin formato o carga útil en base64encoding—utf8obase64remotePath— ruta de destino en el host remotocreateDirectories— crear directorios padres faltantes si es necesariooverwrite— reemplazar un archivo remoto existente si está presentemode— modo POSIX opcional como0644
terminal-start
Inicia una sesión de terminal remota interactiva.
Parámetros
cwd— directorio de trabajo opcional después del inicio del shellshell— binario de shell opcionalplatformHint—auto,linuxowindowselevated— intentar elevaciónsucuando esté configuradocols— ancho de la terminalrows— altura de la terminalenv— variables de entorno opcionalesmultiSession— establecer entruepara forzar una nueva sesión gestionada en lugar de reutilizar una existente
terminal-write
Escribe entrada en una sesión de terminal activa.
Parámetros
sessionId— id de la sesión objetivoinput— texto a enviarappendNewline— añadir una nueva línea automáticamente si es necesario
terminal-read
Lee la salida almacenada en búfer de una sesión de terminal.
Parámetros
sessionId— id de la sesión objetivosinceSequence— solo devolver salida más nueva que un número de secuencia dadomaxChars— limitar el tamaño de la salida devueltawaitForMs— retraso de sondeo corto opcional
terminal-resize
Redimensiona una sesión de terminal activa.
Parámetros
sessionId— id de la sesión objetivocols— nuevo anchorows— nueva altura
terminal-close
Cierra una sesión de terminal localmente.
Parámetros
sessionId— id de la sesión objetivo
🔄 Flujo de trabajo típico
flowchart LR
A[terminal-start] --> B[terminal-write]
B --> C[terminal-read]
C --> D{Need file?}
D -- Yes --> E[upload-file / upload-content]
D -- No --> F{Continue session?}
E --> F
F -- Yes --> B
F -- No --> G[terminal-close]Esto funciona especialmente bien para:
instalaciones interactivas de paquetes
configuración y aprovisionamiento remoto
despliegues con carga de artefactos
servicios de depuración en múltiples pasos
flujos de trabajo de shell con estado donde el contexto importa
🛠 Instalación
Clonar el repositorio
git clone https://github.com/rayss868/termssh-mcp.git
cd termssh-mcp
npm install
npm run buildInstalar globalmente
npm install -g termssh-mcp⚙ Configuración
Parámetros CLI requeridos
host— nombre de host o dirección IP de la máquina remotauser— nombre de usuario SSH
Parámetros CLI opcionales
port— puerto SSH, por defecto22password— contraseña SSHkey— ruta a una clave SSH privadasudoPassword— contraseña opcional para flujos de trabajo orientados a sudosuPassword— contraseña opcional para elevación basada ensutimeout— tiempo de espera de preparación SSH en milisegundos, por defecto60000maxChars— límite de validación de longitud de comando, por defecto1000; usenoneo0para modo ilimitado
🧩 Ejemplo de configuración MCP
{
"mcpServers": {
"termssh-mcp": {
"command": "npx",
"args": [
"-y",
"termssh-mcp",
"--",
"--host=1.2.3.4",
"--port=22",
"--user=root",
"--password=pass",
"--timeout=30000",
"--maxChars=none"
]
}
}
}Ejemplo de clave SSH
{
"mcpServers": {
"termssh-mcp": {
"command": "npx",
"args": [
"-y",
"termssh-mcp",
"--",
"--host=example.com",
"--user=root",
"--key=/path/to/private/key"
]
}
}
}🤖 Ejemplo de Claude Code
Registra el servidor en Claude Code:
claude mcp add --transport stdio termssh-mcp -- npx -y termssh-mcp -- --host=YOUR_HOST --user=YOUR_USER --password=YOUR_PASSWORDCon autenticación de clave SSH:
claude mcp add --transport stdio termssh-mcp -- npx -y termssh-mcp -- --host=example.com --user=root --key=/path/to/private/keyCon tiempo de espera extendido:
claude mcp add --transport stdio termssh-mcp -- npx -y termssh-mcp -- --host=192.168.1.100 --user=admin --password=your_password --timeout=120000 --maxChars=none🎯 Ideal para
Desarrolladores
acceso remoto a shell desde herramientas de codificación de IA
sesiones de depuración con estado
entrega de scripts y configuraciones
Equipos de DevOps / infraestructura
inspección de servicios
soporte de despliegue
operaciones remotas de varios pasos
Creadores de agentes
flujos de trabajo MCP nativos de terminal
sesiones reutilizables
bucles de automatización remota controlados
🏗 Desarrollo
Construir el proyecto:
npm run buildEjecutar pruebas:
npm testUsar el Inspector MCP:
npm run inspect📁 Estructura del proyecto
src/index.ts— punto de entrada del servidor MCP y registro de herramientassrc/ssh-connection-manager.ts— manejo de la conexión SSH y ciclo de vida de la terminalsrc/upload.ts— ayudantes de carga y ayudantes de metadatos de sesión interactivasrc/core.ts— validación compartida y primitivas de utilidad SSHtest/upload-and-terminal.test.ts— cobertura de pruebas unitarias de carga/sesióntest/maxChars.test.ts— cobertura de validación de comandostest/smoke.ssh.test.ts— pruebas de humo para el comportamiento exportado actual
🗺 Ideas para la hoja de ruta
inspección más rica de metadatos de sesión
mejor observabilidad de sesiones remotas
características opcionales de persistencia de sesión
más ejemplos para Claude Code y herramientas MCP
plantillas de flujo de trabajo orientadas al despliegue
🔐 Nota de seguridad
TermSSH MCP proporciona acceso remoto a sistemas a través de SSH.
Úselo solo en infraestructura que posea o que esté explícitamente autorizado a gestionar.
📜 Licencia
Publicado bajo la Licencia MIT.
🤝 Contribuyendo
Las contribuciones son bienvenidas.
Consulte CONTRIBUTING.md para obtener orientación sobre contribuciones y CODE_OF_CONDUCT.md para el comportamiento esperado.
Latest Blog Posts
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/rayss868/termssh-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server