VOOZH about

URL: https://glama.ai/mcp/servers/oaslananka/mcp-ssh-tool?locale=ru-RU

⇱ mcp-ssh-tool by oaslananka | Glama


mcp-ssh-tool

👁 npm version
👁 CI
👁 Security
👁 Official MCP Registry
👁 License: MIT
👁 npm downloads

Промышленный MCP-инструмент для SSH-автоматизации, предназначенный для операторов, разработчиков и ИИ-клиентов. mcp-ssh-tool открывает постоянные SSH-сессии и предоставляет безопасные, структурированные инструменты для выполнения команд, операций с файлами, передачи данных, создания туннелей, управления пакетами/службами, получения метрик, ресурсов и использования готовых промптов.

Версия v2 безопасна по умолчанию: включена строгая проверка хост-ключей, отключен вход под root, выполнение sudo ограничено политиками, деструктивные команды и изменения файловой системы запрещены, если это не разрешено политикой, а удаленный HTTP-сервер запускается только на loopback-интерфейсе, если не настроены bearer-авторизация и разрешенные источники (origins).

Почему этот сервер

  • Доверие: централизованный механизм политик, структурированные события аудита, маскирование логов, строгие хост-ключи и машиночитаемые ошибки.

  • Качество MCP: stdio для локальных клиентов, Streamable HTTP для удаленных клиентов, устаревший SSE доступен только через явный флаг совместимости.

  • Инструменты для ИИ: стабильные схемы вывода, structuredContent, аннотации для операций (только чтение/деструктивные/идемпотентные), ресурсы и курируемые промпты.

  • Операции: TTL сессий/вытеснение, тайм-ауты команд, проверка контрольных сумм при передаче, реальное SSH-проброс, метрики Prometheus и хуки OpenTelemetry.

  • Портативность: приоритет SFTP, резервные механизмы оболочки POSIX/BusyBox для базовых операций с файлами и четкие границы поддержки.

Быстрый старт

Запуск без установки:

npx -y mcp-ssh-tool --version

Или установите глобально:

npm install -g mcp-ssh-tool

Добавьте stdio MCP-сервер в ваш клиент:

{
 "servers": {
 "ssh-mcp": {
 "type": "stdio",
 "command": "mcp-ssh-tool",
 "args": []
 }
 }
}

Используйте его из вашего MCP-клиента:

Open a safe SSH session to prod-1 as deploy, inspect host capabilities, then show disk usage.

Требования

  • Node.js 22.22.2+ или 24.14.1+ (только LTS)

  • SSH-доступ к целевым хостам

  • Заполненный файл known_hosts для строгой проверки хостов или явная политика хост-ключей для каждой сессии

Транспорты

Режим

Команда

Использовать, когда

stdio

mcp-ssh-tool

Локальные десктопные клиенты, такие как ChatGPT, Claude Desktop, VS Code, Cursor или Codex.

Streamable HTTP

mcp-ssh-tool --transport=http --host 127.0.0.1 --port 3000

Удаленные MCP-клиенты, обратные прокси или сессии Inspector.

legacy SSE

mcp-ssh-tool --transport=http --enable-legacy-sse

Только для временной совместимости с v1. Рекомендуется Streamable HTTP.

Запуск HTTP вне loopback-интерфейса запрещен, если не настроены --bearer-token-file и разрешенные источники.

Безопасные настройки по умолчанию

Область

Значение по умолчанию в v2

Хост-ключи

hostKeyPolicy=strict, knownHostsPath=~/.ssh/known_hosts

SSH-вход под root

запрещен

Raw proc_sudo

запрещен, если не allowRawSudo=true

Деструктивные команды

запрещены, если не allowDestructiveCommands=true

Деструктивные операции с ФС

разрешены только в рамках префиксов политики, в остальных местах запрещены

HTTP bind

127.0.0.1

Legacy SSE

отключен

Чтение файлов

ограничено размером SSH_MCP_MAX_FILE_SIZE

Параметр сессии policyMode: "explain" возвращает план/вердикт без выполнения. Используйте его перед внесением изменений, если ИИ-клиенту нужно оценить риски.

Пример политики

Установите SSH_MCP_POLICY_FILE=/etc/mcp-ssh-tool/policy.json:

{
 "mode": "enforce",
 "allowRootLogin": false,
 "allowRawSudo": false,
 "allowDestructiveCommands": false,
 "allowDestructiveFs": false,
 "allowedHosts": ["^prod-[0-9]+\\.example\\.com$"],
 "commandAllow": ["^(uname|df|uptime|systemctl status)\\b"],
 "commandDeny": ["rm\\s+-rf\\s+/", "shutdown", "reboot"],
 "pathAllowPrefixes": ["/tmp", "/var/tmp", "/home/deploy"],
 "pathDenyPrefixes": ["/etc/shadow", "/etc/sudoers", "/boot", "/dev", "/proc"]
}

Для простых развертываний можно использовать переменные окружения, такие как SSH_MCP_ALLOW_RAW_SUDO=true, SSH_MCP_ALLOWED_HOSTS=prod-1.example.com или SSH_MCP_PATH_ALLOW_PREFIXES=/tmp,/home/deploy.

Основные инструменты

  • ssh_open_session, ssh_close_session, ssh_list_sessions, ssh_ping, ssh_list_configured_hosts, ssh_resolve_host

  • proc_exec, proc_sudo, proc_exec_stream

  • fs_read, fs_write, fs_list, fs_stat, fs_mkdirp, fs_rmrf, fs_rename

  • file_upload, file_download

  • ensure_package, ensure_service, ensure_lines_in_file, patch_apply

  • os_detect, get_metrics

  • tunnel_local_forward, tunnel_remote_forward, tunnel_list, tunnel_close

Все инструменты возвращают текст плюс стабильный structuredContent. Метаданные инструментов включают заголовки, схемы вывода и аннотации, раскрывающие поведение (только чтение, деструктивное, идемпотентное и наличие внешних побочных эффектов).

Ресурсы и промпты

Ресурсы:

  • mcp-ssh-tool://sessions/active

  • mcp-ssh-tool://metrics/json

  • mcp-ssh-tool://metrics/prometheus

  • mcp-ssh-tool://ssh-config/hosts

  • mcp-ssh-tool://policy/effective

  • mcp-ssh-tool://audit/recent

  • mcp-ssh-tool://capabilities/support-matrix

Промпты:

  • safe-connect

  • inspect-host-capabilities

  • plan-mutation

  • managed-config-change

Матрица поддержки

Цель

Статус

Linux

Полная поддержка.

macOS/BSD

Поддерживаются сессии, процессы, ФС и передача; помощники для пакетов/служб только там, где протестировано.

BusyBox/dropbear

Экспериментально для сессий, процессов и базовых операций с ФС.

Windows SSH targets

Экспериментально для сессий, процессов, ФС и передачи; нет proc_sudo или ensure_*.

Примеры для клиентов

ChatGPT или Claude Desktop:

{
 "mcpServers": {
 "ssh-mcp": {
 "command": "npx",
 "args": ["-y", "mcp-ssh-tool"]
 }
 }
}

VS Code или Cursor:

{
 "servers": {
 "ssh-mcp": {
 "type": "stdio",
 "command": "mcp-ssh-tool"
 }
 }
}

MCP Inspector через HTTP:

printf '%s' 'super-secret-token' > .mcp-token
mcp-ssh-tool --transport=http --host 127.0.0.1 --port 3000 --bearer-token-file .mcp-token

Конфигурация

Важные переменные окружения:

Переменная

По умолчанию

Назначение

SSH_MCP_POLICY_FILE

не задано

Источник канонической JSON-политики.

SSH_MCP_HOST_KEY_POLICY

strict

strict, accept-new или insecure.

SSH_MCP_KNOWN_HOSTS_PATH

~/.ssh/known_hosts

Файл known-hosts для строгой проверки.

SSH_MCP_MAX_FILE_SIZE

10485760

Макс. байт для fs_read.

SSH_MCP_COMMAND_TIMEOUT

30000

Тайм-аут команды по умолчанию.

SSH_MCP_HTTP_HOST

127.0.0.1

Хост для Streamable HTTP.

SSH_MCP_HTTP_PORT / PORT

3000

Порт для Streamable HTTP.

SSH_MCP_HTTP_BEARER_TOKEN_FILE

не задано

Требуется для HTTP вне loopback.

SSH_MCP_HTTP_ALLOWED_ORIGINS

loopback origins

Разрешенные источники через запятую.

Устаревшие псевдонимы STRICT_HOST_KEY_CHECKING и SSH_MCP_STRICT_HOST_KEY все еще принимаются в течение одного цикла совместимости v2. Рекомендуется использовать SSH_MCP_HOST_KEY_POLICY.

Разработка

Используйте точную локальную среду выполнения из .nvmrc / .node-version, затем выполните:

npm ci
npm run check

Живые SSH-тесты являются опциональными:

RUN_SSH_INTEGRATION=1 npm run test:integration
RUN_SSH_E2E=1 npm run test:e2e

Локальные проверки качества:

  • pre-commit: форматирует индексированные файлы и проверяет только индексированный TypeScript

  • pre-push: запускает npm run check:push

  • task hooks: запускает отслеживаемые npm-хуки плюс хуки .pre-commit-config.yaml, если установлен pre-commit

  • ручная/полная проверка: task ci или npm run check

Владение CI/CD

Личный репозиторий https://github.com/oaslananka/mcp-ssh-tool является каноническим исходным репозиторием. Автоматический CI/CD, проверки безопасности цепочки поставок, доверенная публикация npm и публикация в MCP Registry выполняются только из https://github.com/oaslananka-lab/mcp-ssh-tool. Организационный репозиторий получает данные из канонического источника; рабочие процессы push и публикации в личном репозитории отключены.

Поле repository.url в npm-пакете намеренно указывает на организационный репозиторий, чтобы проверка происхождения npm могла подтвердить, что опубликованный артефакт был создан тем же репозиторием GitHub Actions, который его собрал.

См. docs/ci-cd-topology.md для получения информации о синхронизации организации, процессе выпуска и руководстве по ручному восстановлению.

Документация

Лицензия

MIT License. См. LICENSE.

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

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