No description
- Go 83.8%
- TypeScript 9.5%
- HTML 4.9%
- SCSS 1.2%
- Dockerfile 0.6%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| cmd/mcp-ssh | ||
| deploy | ||
| docs | ||
| examples/mcp-client | ||
| internal | ||
| testutil | ||
| .dockerignore | ||
| .gitignore | ||
| .golangci.yml | ||
| .woodpecker.yml | ||
| config.example.yaml | ||
| docker-compose.yml | ||
| Dockerfile | ||
| Dockerfile.ci | ||
| go.mod | ||
| go.sum | ||
| README.md | ||
mcp-ssh
Единый самодостаточный Go-сервис: один статический бинарник (CGO_ENABLED=0,
работает в контейнере scratch без внешних утилит), который предоставляет:
- MCP-сервер (
Streamable HTTP, эндпоинт/mcp) — управление удалёнными серверами по SSH / SFTP / sudo для LLM-агентов; - REST API (
/api/) и веб-интерфейс (Angular + Material, встроен черезgo:embed, раздаётся на/) — управление подключениями, генерация/импорт SSH-ключей, развёртывание ключей.
Вся логика SSH/SFTP/sudo — на чистом Go (golang.org/x/crypto/ssh,
github.com/pkg/sftp); ssh/scp/sftp/ssh-copy-id из окружения
не вызываются.
Подробности — в docs/: SPEC, CONFIG, API, MCP, DEPLOYMENT, SECURITY.
Быстрый старт
Docker (рекомендуется)
# 1) токен для /api/ (обязательный секрет)
export MCP_SSH_AUTH_TOKEN="$(openssl rand -hex 32)"
# 2) сборка и запуск (multi-stage: node → go → scratch)
docker compose up -d --build
# 3) проверка
curl -s localhost:3000/api/health
open localhost:3000 # веб-интерфейс
Данные (ключи, connections.yaml, known_hosts) хранятся в томе
mcp-ssh-data и переживают перезапуск.
Бинарник
# сборка
cd internal/web && npm ci && npm run build && cd ..
rm -rf internal/webui/dist && mkdir internal/webui/dist
cp -r internal/web/dist/web/browser/. internal/webui/dist/
CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o bin/mcp-ssh ./cmd/mcp-ssh
# запуск
cp config.example.yaml config.yaml # и заполните auth.token
./bin/mcp-ssh --config config.yaml
Проверка:
curl -s localhost:3000/api/health # {"status":"ok",...}
curl -s -o /dev/null -w '%{http_code}\n' localhost:3000/ # 200 (SPA)
./bin/mcp-ssh --version
MCP-клиент
Эндпоинт: http://localhost:3000/mcp (Streamable HTTP). Пример подключения —
в docs/MCP.md.
Управление без веб (CLI)
mcp-ssh key generate --id ed25519-web-1 --type ed25519
mcp-ssh host add --id web-1 --host 203.0.113.10 --user root --auth key --key ed25519-web-1
mcp-ssh deploy web-1
mcp-ssh host test web-1
Полный список — mcp-ssh help и docs/CONFIG.md §7.