SSH MCP Server
@yawlabs/ssh-mcp
SSH-операции для ИИ-агентов. MCP-сервер с функциями удаленного выполнения команд, передачи файлов и встроенной SSH-диагностикой, которая точно сообщает, что пошло не так и как это исправить.
Создано и поддерживается Yaw Labs.
Зачем нужен этот инструмент?
ИИ-агенты, подключающиеся к удаленным серверам по SSH, постоянно сталкиваются с одними и теми же проблемами: неработающий ssh-agent, загружен не тот ключ, устаревшие ключи хоста после пересоздания инстансов, ошибки доступа без полезного контекста. Большинство SSH MCP-серверов просто оборачивают ssh2, оставляя агенту разбор загадочных ошибок.
Этот сервер включает ssh_diagnose — диагностический инструмент, который проверяет всю вашу SSH-среду (агент, ключи, конфигурацию, known_hosts, сетевое соединение) и возвращает готовые команды для исправления. Используйте его перед подключением или после сбоя.
Быстрый старт
npm install -g @yawlabs/ssh-mcpДобавьте в конфигурацию вашего MCP-клиента:
{
"mcpServers": {
"ssh": {
"command": "ssh-mcp"
}
}
}Инструменты
Основные операции
Инструмент | Описание |
| Выполнение команды на удаленном хосте. Возвращает stdout, stderr и код выхода. |
| Чтение файла с удаленного хоста через SFTP. |
| Запись содержимого в файл на удаленном хосте через SFTP. |
| Загрузка локального файла на удаленный хост через SFTP. |
| Скачивание файла с удаленного хоста в локальную файловую систему. |
| Список файлов в директории на удаленном хосте. |
Диагностика
Инструмент | Описание |
| Диагностика проблем с SSH-соединением. Проверяет агент, ключи, known_hosts, SSH-конфигурацию и наличие связи. Возвращает команды для исправления. |
Аутентификация
Все инструменты принимают параметры подключения:
Параметр | Описание | По умолчанию |
| SSH-хост или IP (обязательно) | — |
| SSH-порт |
|
| SSH-имя пользователя | Текущий пользователь |
| Путь к закрытому SSH-ключу | Автоопределение |
| SSH-пароль (лучше использовать ключи) | — |
Порядок разрешения аутентификации: явный ключ > явный пароль > ssh-agent (SSH_AUTH_SOCK) > пути к ключам по умолчанию (~/.ssh/id_ed25519, id_rsa, id_ecdsa).
Диагностика
ssh_diagnose выполняет 5 проверок и возвращает структурированный отчет:
SSH Agent — запущен ли
ssh-agent? Загружены ли ключи?SSH Keys — существуют ли закрытые ключи в
~/.ssh/?SSH Config — есть ли запись конфигурации для этого хоста? (поддерживаются маски)
Known Hosts — кэширован ли ключ хоста?
Connectivity — можем ли мы фактически подключиться?
Каждая непройденная проверка включает точную команду для исправления. Пример вывода:
SSH Diagnostic Report for dev-server:22
Overall: ERROR
[PASS] SSH Agent
ssh-agent running with keys:
256 SHA256:abc... user@host (ED25519)
[PASS] SSH Keys
Found SSH keys: id_ed25519, gh_woods
[PASS] SSH Config
SSH config for "dev-server":
Host dev-server
HostName 10.0.1.50
User ec2-user
[FAIL] Known Hosts
Host "dev-server" is not in known_hosts.
[FAIL] Connectivity
Host key verification failed for dev-server. The host key changed (instance recreated?).
Suggested fixes:
- Remove stale host key: ssh-keygen -R "dev-server"
- Re-add host key: ssh-keyscan -H "dev-server" >> ~/.ssh/known_hostsПрограммное использование
import { connect, exec, diagnose } from '@yawlabs/ssh-mcp';
// Run a command
const client = await connect({ host: 'my-server', username: 'deploy' });
const result = await exec(client, 'uptime');
console.log(result.stdout);
client.end();
// Diagnose connectivity 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}`);
}Требования
Node.js 18+
Установленный SSH-клиент (для диагностики)
Лицензия
MIT
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