ssh-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ssh_guideA | Подробное руководство по работе с этими инструментами. Прочитайте нужную тему перед первой интерактивной сессией, первым туннелем или сохранением нового сервера: там разобраны нерабочие пути, на которые иначе уходит по несколько попыток. |
| ssh_statusA | Показать сохранённые серверы, живые соединения, сессии и туннели. Первый инструмент, с которого стоит начинать: отвечает на вопрос «что у меня уже есть» одним вызовом. |
| ssh_connectA | Подключиться к серверу по имени либо по адресу с логином и паролем/ключом. Если сервер неизвестен, подключение происходит без всякого конфига, а доступы НЕ сохраняются: в ответе придёт next_action с требованием спросить у пользователя имя и вызвать ssh_save_server. Не придумывайте имя сами. |
| ssh_save_serverA | Сохранить сервер под именем, которое назвал пользователь. Обычно вызывается сразу после ssh_connect с его pending_id — тогда живое соединение просто переименовывается и переподключения не происходит. |
| ssh_forget_serverA | Удалить сохранённый сервер. Заметки удаляются только по явному запросу. |
| ssh_disconnectB | Закрыть соединение с сервером вместе с его сессиями и туннелями. |
| ssh_forget_host_keyA | Снять закрепление ключа хоста. Вызывать только после того, как пользователь явно подтвердил, что сервер был пересоздан. Молча повторять подключение после расхождения ключей — ровно то, чего добивается перехватчик. |
| ssh_import_legacyA | Импортировать серверы из старого блочного servers.env. По умолчанию только показывает, что будет импортировано: покажите результат пользователю прежде, чем писать. |
| ssh_runA | Выполнить команду на сервере и дождаться результата. Для всего, что длится дольше пары минут (apt upgrade, docker pull), берите background=true: команда отвяжется от сессии и переживёт её, а вывод уйдёт в файл. Увеличивать таймаут вместо этого — путь к зависшему вызову. |
| ssh_run_manyA | Выполнить одну команду на нескольких серверах параллельно. Сбой одного сервера не отменяет остальные — в ответе будет и результат, и ошибка, каждая рядом со своим именем. |
| ssh_notes_getC | Прочитать факты и заметки о сервере. |
| ssh_notes_addB | Записать заметку о сервере — она переживёт перезапуск и новую сессию. |
| ssh_facts_refreshB | Перечитать факты о сервере: ОС, ядро, диск, установленное ПО, порты. |
| ssh_historyB | Показать журнал выполненных действий — что и когда делали с серверами. |
| ssh_uploadA | Залить локальный файл на сервер и проверить, что он долетел целым. Для содержимого, которое вы сами составили, лучше ssh_file_write — он идемпотентен, умеет проверку конфига и делает резервную копию. |
| ssh_downloadB | Скачать файл с сервера на эту машину и сверить контрольную сумму. |
| ssh_file_readB | Прочитать текстовый файл с сервера. Большие файлы обрезаются. |
| ssh_file_writeB | Положить файл на сервер атомарно и идемпотентно. Порядок намеренный: сверить хеш, залить во временный, проверить временный, переставить через rename. На месте боевого файла никогда не оказывается непроверенное содержимое, а повторный вызов с тем же текстом ничего не делает и честно сообщает changed=false. |
| ssh_list_dirC | Показать содержимое каталога на сервере. |
| ssh_copy_betweenA | Перекинуть файл с одного сервера на другой через эту машину. Идёт потоком через локальный временный файл: так не требуется никакого доверия между серверами, которого между ними обычно и нет. |
| ssh_shell_openA | Открыть интерактивную оболочку на сервере. Нужна там, где команда что-то спрашивает или рисует полноэкранный интерфейс: nano, whiptail, htop, меню панелей. Для обычных команд берите ssh_run — он дешевле. Сессию по окончании закрывайте. |
| ssh_shell_sendA | Отправить текст и/или нажатия клавиш в сессию и дождаться реакции. Работайте циклом: отправили — прочитали — посмотрели на экран — решили. Две отправки подряд вслепую почти всегда приводят к застрявшей сессии. |
| ssh_shell_send_secretA | Ввести пароль в приглашение sudo, passwd или установщика. Предпочитайте server_password: тогда пароль берётся из хранилища внутри процесса и вообще не проходит через переписку. Никогда не отправляйте пароль обычным ssh_shell_send — тот пишет текст в журнал. |
| ssh_shell_readB | Дочитать вывод сессии, ничего не отправляя — для длящихся команд. |
| ssh_shell_resizeB | Изменить размер окна сессии. Полезно, если TUI обрезает содержимое. |
| ssh_shell_closeC | Закрыть интерактивную сессию. |
| ssh_keys_listB | Показать имена клавиш, которые понимает ssh_shell_send. |
| ssh_tunnel_openB | Поднять туннель до сервера. Панель, слушающую на 127.0.0.1:2053, открывают как kind='local' с dest_host='127.0.0.1', dest_port=2053 — и она становится доступна по возвращённому адресу. Туннель живёт до конца сессии Claude Code. |
| ssh_tunnel_closeA | Закрыть туннель. Без аргумента закрывает все. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| ssh-interactive | Интерактивная консоль и полноэкранные интерфейсы |
| ssh-ops | Файлы, туннели и работа по всему флоту |
| ssh-servers | Подключение, выполнение команд и сохранение новых серверов |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 29 tools
Most tools have clearly distinct purposes (run vs shell, upload vs file_write, notes vs facts), but ssh_run and ssh_shell_open could be confused for interactive vs non-interactive execution, and ssh_upload vs ssh_file_write overlap in file transfer. The descriptions help disambiguate, but the boundaries require careful reading.
The naming follows a consistent ssh_<verb>_<noun> pattern (ssh_run, ssh_upload, ssh_shell_open, ssh_tunnel_open). Minor deviations like ssh_status, ssh_guide, and ssh_import_legacy break the verb_noun pattern slightly, but the overall convention is predictable.
29 tools is on the heavy side for an SSH server, but the breadth is justified by covering connections, file operations, interactive shells, tunnels, notes, and history. It feels comprehensive rather than bloated, though some tools (ssh_keys_list, ssh_shell_resize) are niche.
The tool surface covers the full SSH lifecycle: connection management (connect, disconnect, save, forget), file operations (upload, download, read, write, list, copy), interactive sessions (open, send, read, resize, close), tunnels (open, close), and auxiliary data (notes, facts, history, keys). No obvious dead ends for common workflows.