VOOZH about

URL: https://glama.ai/mcp/servers/YawLabs/ssh-mcp?locale=es-ES

⇱ Servidor MCP SSH by YawLabs | Glama


@yawlabs/ssh-mcp

👁 npm version
👁 License: MIT

Haz que SSH funcione para herramientas de IA. Servidor MCP que gestiona tu entorno SSH, diagnostica qué está roto, lo repara y le da a tu agente acceso remoto a cualquier cosa.

Creado y mantenido por Yaw Labs.

El problema

Las herramientas CLI de IA se ejecutan en subprocesos donde SSH falla constantemente. El agente intenta hacer git pull y obtiene Permission denied (publickey). Intenta conectarse por SSH a un servidor y el socket del agente está obsoleto. Intenta desplegar y la clave del host cambió porque la instancia fue recreada. Cada vez, la IA no tiene idea de qué está mal y entra en un bucle.

Esto sucede en todas las situaciones que requieren claves SSH:

  • Git — clone, pull, push, fetch, submodules, LFS

  • Gestores de paquetesnpm install, pip install, go get, cargo, composer desde repositorios privados

  • Acceso al servidor — SSH, SCP, SFTP, rsync

  • Túneles — reenvío de puertos a bases de datos, proxies SOCKS

  • Despliegue — Ansible, Terraform, Capistrano, scripts de despliegue

  • Nube — AWS EC2, GCP, Azure, DigitalOcean, cualquier VPS

ssh-mcp soluciona esto. Gestiona el agente SSH, carga claves, diagnostica fallos con comandos de reparación accionables y proporciona operaciones remotas, todo como herramientas MCP que tu agente de IA puede llamar.

Inicio rápido

npm install -g @yawlabs/ssh-mcp

Añádelo a la configuración de tu cliente MCP:

{
 "mcpServers": {
 "ssh": {
 "command": "ssh-mcp"
 }
 }
}

Herramientas

Gestión del entorno SSH

Herramientas que reparan tu configuración SSH local para que todo lo demás (git, despliegues, túneles) deje de fallar.

Herramienta

Descripción

ssh_agent_ensure

Asegura que ssh-agent esté ejecutándose. Inicia uno si es necesario y establece variables de entorno para la sesión.

ssh_key_list

Lista todas las claves SSH en ~/.ssh/ con tipo, huella digital y estado del agente.

ssh_key_load

Carga una clave en el agente en ejecución. Asegura que el agente se inicie primero.

ssh_config_lookup

Resuelve la configuración SSH efectiva para un host (nombre de host, usuario, puerto, proxy, archivos de identidad).

ssh_known_hosts_fix

Elimina una clave de host obsoleta y vuelve a escanear. Soluciona errores de "host key verification failed".

ssh_git_check

Prueba la autenticación Git-over-SSH para GitHub, GitLab, Bitbucket, etc.

ssh_test

Prueba de conectividad rápida con tiempos y detalles de error accionables.

Diagnósticos

Herramienta

Descripción

ssh_diagnose

Diagnóstico completo del entorno SSH. Comprueba el agente, las claves, la configuración, known_hosts y la conectividad. Devuelve comandos de reparación exactos para cada fallo.

Operaciones remotas

Herramienta

Descripción

ssh_exec

Ejecuta un comando en un host remoto. Devuelve stdout, stderr y código de salida.

ssh_read_file

Lee un archivo de un host remoto a través de SFTP.

ssh_write_file

Escribe contenido en un archivo en un host remoto a través de SFTP.

ssh_upload

Sube un archivo local a un host remoto a través de SFTP.

ssh_download

Descarga un archivo de un host remoto al sistema de archivos local.

ssh_ls

Lista archivos en un directorio en un host remoto.

Operaciones de alto nivel

Herramientas que envuelven patrones comunes que los agentes construyen con ssh_exec, más rápidas y menos propensas a errores.

Herramienta

Descripción

ssh_multi_exec

Ejecuta un comando en múltiples hosts en paralelo. Devuelve resultados por host.

ssh_find

Busca archivos de forma remota con parámetros estructurados (nombre, tipo, tamaño, profundidad).

ssh_tail

Lee las últimas N líneas de un archivo, opcionalmente filtradas por un patrón grep.

ssh_service_status

Comprueba el estado del servicio systemd (activo, PID, tiempo de actividad, descripción).

Autodiagnóstico

Cuando cualquier operación remota falla, ssh-mcp ejecuta automáticamente diagnósticos e incluye los resultados en la respuesta de error. Tu agente no necesita llamar a ssh_diagnose por separado; se le informa qué está mal y cómo solucionarlo directamente en el mensaje de error.

Agrupación de conexiones (Pooling)

Las operaciones remotas reutilizan las conexiones SSH automáticamente. Cuando tu agente realiza múltiples llamadas al mismo host, la primera llamada abre una conexión y las llamadas posteriores la reutilizan. Las conexiones se mantienen activas durante 60 segundos después del último uso y luego se cierran automáticamente.

Soporte de configuración SSH

Todas las conexiones respetan tu ~/.ssh/config. Los alias de host, puertos personalizados, nombres de usuario, archivos de identidad y configuraciones de ProxyJump se utilizan automáticamente. Si tienes Host myserver configurado en tu configuración SSH, simplemente pasa host: "myserver" y ssh-mcp resuelve todo.

ProxyJump / hosts bastión son compatibles automáticamente. Si tu configuración SSH tiene ProxyJump bastion para un host, ssh-mcp se conecta a través del bastión de forma transparente. Los proxies encadenados también funcionan.

Verificación de clave de host

Todas las operaciones remotas verifican la clave de host del servidor contra ~/.ssh/known_hosts:

  • Host conocido, la clave coincide — aceptar.

  • Host conocido, la clave cambió — rechazar (protección MITM).

  • Host desconocido — aceptar en la primera conexión (TOFU). Usa ssh_known_hosts_fix para fijar la clave para futuras detecciones de discrepancias.

Para entornos más estrictos, establece SSH_MCP_STRICT_HOST_KEY=1 para rechazar hosts desconocidos. Agrégalos explícitamente con ssh_known_hosts_fix primero.

Las herramientas de diagnóstico (ssh_test, ssh_diagnose) usan StrictHostKeyChecking=no para sus comandos de sondeo. Esos sondeos solo ejecutan echo SSH_OK (no pasan credenciales ni datos), por lo que la configuración relajada es segura para probar la conectividad. Las operaciones reales siempre pasan por el hostVerifier.

Soporte para Windows

En Windows, ssh-mcp detecta el servicio OpenSSH Authentication Agent automáticamente (a través de la tubería con nombre \\.\pipe\openssh-ssh-agent). No se necesita SSH_AUTH_SOCK, solo asegúrate de que el servicio del agente OpenSSH esté ejecutándose.

Autenticación

Todas las operaciones remotas aceptan parámetros de conexión:

Parámetro

Descripción

Predeterminado

host

Nombre de host o IP SSH (requerido)

port

Puerto SSH

Desde configuración SSH o 22

username

Nombre de usuario SSH

Desde configuración SSH o usuario actual

privateKeyPath

Ruta a la clave privada SSH

Detección automática

password

Contraseña SSH (preferir claves)

Orden de resolución de autenticación: ssh-mcp elige la primera coincidencia de esta lista y no pasa a las entradas posteriores; esto hace que el método de autenticación sea determinista y predecible.

  1. privateKeyPath explícito

  2. password explícito

  3. ssh-agent (SSH_AUTH_SOCK en Unix, \\.\pipe\openssh-ssh-agent en Windows)

  4. Archivos de identidad de ~/.ssh/config para el host

  5. Rutas de clave predeterminadas (~/.ssh/id_ed25519, id_rsa, id_ecdsa)

Flujos de trabajo de ejemplo

El agente no puede hacer git pull

Agent calls ssh_git_check → "Permission denied. Your SSH key is not registered with github.com."
Agent calls ssh_key_list → finds id_ed25519 exists but is not loaded
Agent calls ssh_key_load("~/.ssh/id_ed25519") → "Key loaded"
Agent calls ssh_git_check → "Git SSH authentication to github.com succeeded as username"
Agent runs git pull → works

La clave de host cambió después de recrear la instancia

Agent calls ssh_exec on server → error: "Host key verification failed"
 (auto-diagnostics included in error: "Fix with ssh_known_hosts_fix")
Agent calls ssh_known_hosts_fix("my-server") → "Host key refreshed"
Agent calls ssh_exec → works

Conexión por primera vez a un nuevo servidor

Agent calls ssh_test("new-server") → "Connection refused at new-server:22"
Agent calls ssh_diagnose("new-server") → full report showing agent running, keys loaded, but host unreachable
Agent reports: "SSH server isn't running on new-server or port 22 is blocked"

Uso programático

import { connect, exec, diagnose, ensureAgent, listSshKeys, checkGitSsh, ConnectionPool } from '@yawlabs/ssh-mcp';

// Fix SSH environment
const agent = ensureAgent();
console.log(agent.message);

// Check git access
const git = checkGitSsh('github.com');
console.log(git.message);

// List available keys
const keys = listSshKeys();
for (const key of keys) {
 console.log(`${key.name} (${key.type}) - ${key.loadedInAgent ? 'loaded' : 'not loaded'}`);
}

// Run a remote command (one-off)
const client = await connect({ host: 'my-server', username: 'deploy' });
const result = await exec(client, 'uptime');
console.log(result.stdout);
client.end();

// Run multiple commands with connection pooling
const pool = new ConnectionPool();
await pool.withConnection({ host: 'my-server' }, async (client) => {
 const r1 = await exec(client, 'uptime');
 console.log(r1.stdout);
});
// Connection stays open for 60s — next call reuses it
await pool.withConnection({ host: 'my-server' }, async (client) => {
 const r2 = await exec(client, 'df -h');
 console.log(r2.stdout);
});
pool.drain(); // close all connections when done

// Diagnose issues
const report = diagnose('my-server');
console.log(report.overall); // "ok" | "warning" | "error"
for (const check of report.checks) {
 console.log(`[${check.status}] ${check.name}: ${check.message}`);
}

Requisitos

  • Node.js 18+

  • Cliente SSH instalado (para diagnósticos y gestión del entorno)

Licencia

MIT

A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
<1hResponse time
3dRelease cycle
18Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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/YawLabs/ssh-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server