Remote Demo MCP
Remote Demo MCP
Локальный MCP-сервер, который развертывает предварительно собранный статический каталог на удаленном хосте с помощью rsync.
Что он делает
Использует фиксированный
deployUserиз конфигурации MCPОпределяет
projectна основе базового имениlocalDirЗагружает содержимое
localDirв:/var/www/html/demo-remote/{user}/{project}/
Использует локальную команду
rsyncПоддерживает OTP/интерактивные SSH-потоки путем подключения сессии rsync к
/dev/ttyВ случае сбоя запрашивает повторную попытку до тех пор, пока пользователь не отменит операцию
Related MCP server: nomad
Установка
npm install
npm run buildКонфигурация
Путь к конфигурации по умолчанию:
~/.config/remote-demo-mcp/config.json
Переопределить путь можно с помощью:
REMOTE_DEMO_MCP_CONFIG=/abs/path/config.json
Пример:
{
"deployUser": "demo_user-01",
"publicBaseUrl": "https://example.com",
"sessionLog": {
"enabled": false,
"path": "/tmp/remote-demo-mcp-session.log",
"logInputValue": false
},
"ssh": {
"host": "xxx.xxx.xxx.xxx",
"port": 2222,
"username": "alice123#ec2-user#52.76.147.44",
"interactiveAuth": true,
"password": "",
"hostKeyPolicy": "accept-new",
"autoFillPassword": true
},
"rsyncOptions": ["-az", "--delete"]
}Сервер автоматически включает возобновляемую загрузку, добавляя:
--partial--checksum--progress(еслиrsyncOptionsуже не содержит--progressили--info=...)
Примечание о совместимости:
Режим интерактивной сессии использует
node-pty. Если вы видите ошибкуposix_spawnp failedв macOS/Linux, это часто вызвано неисполняемым вспомогательным файломnode-pty(.../node-pty/prebuilds/*/spawn-helper). Теперь сервер проверяет и автоматически исправляет права на выполнение вспомогательного файла при запуске сессии.
Базовый путь к удаленной цели жестко закодирован и не может быть изменен:
/var/www/html/demo-remote
Инструмент
deploy_static
Ключевые слова:
EN:
deploy to remote,deploy demo,publish demo,upload static site中文:
部署到远程,部署demo,部署 demo,发布demo,上传静态网页
Правила для user:
deployUser— это идентификатор пользователя приложения для удаленного пути, а не SSHusernameДопустимые символы:
A-Z a-z 0-9 _ -Недопустимые:
.,.., пробелы,/,\и другие специальные символы
Входные данные:
{
"localDir": "/abs/path/to/dist",
"clientCwd": "/abs/path/on-mcp-client",
"dryRun": false
}Разрешение пути localDir:
Абсолютный путь: используется напрямую
Относительный путь: разрешается относительно
clientCwd, если он предоставленРезервный вариант для относительного пути:
CODEX_START_DIR, если задан, в противном случаеprocess.cwd()(каталог запуска сервера)
Разрешение имени проекта:
Если предоставлен
clientCwd, имя проекта использует последний сегмент путиclientCwdВ противном случае имя проекта использует последний сегмент пути разрешенного
localDir
Примечание о поведении:
Если
ssh.interactiveAuth=trueиdryRun=false,deploy_staticпо замыслу завершится с ошибкой.Для интерактивного развертывания с OTP/паролем используйте:
start_deploy_sessionpoll_deploy_sessionsubmit_deploy_input, когдаnextAction=submit_input
Подтверждение ключа хоста (
yes/no) и запросы пароля обрабатываются автоматически в режиме сессии.OTP по-прежнему требует ручного ввода: вызовите
submit_deploy_input, когдаnextAction=submit_input.
Выходные данные (structuredContent):
{
"ok": true,
"attempts": 1,
"user": "alice",
"project": "my-site",
"remotePath": "/var/www/html/demo-remote/alice/my-site/",
"publicUrl": "https://example.com/alice/my-site/index.html",
"message": "Deploy succeeded after 1 attempt(s)."
}verify_deploy
Входные данные:
{
"url": "https://example.com/alice/my-site/index.html",
"timeoutMs": 8000
}Инструменты интерактивной OTP-сессии
Используйте их, когда OTP/пароль необходимо ввести во время развертывания на хостах без TTY:
start_deploy_sessionpoll_deploy_session(чтение вывода и прогресса; еслиstate=waiting_input, отправьте код)submit_deploy_input(отправка OTP/пароля)повторите шаг 2, пока
stateне станетsucceededилиfailedопционально
cancel_deploy_session
poll_deploy_session поддерживает инкрементальный вывод по cursor и возвращает nextCursor.
Инструменты сессии возвращают nextAction, чтобы сделать оркестрацию детерминированной:
submit_input: вызовитеsubmit_deploy_inputpoll: вызовитеpoll_deploy_sessiondone: рабочий процесс завершен (succeeded/failed/cancelled)
Логирование сессии:
Настраивается в файле конфигурации MCP в разделе
sessionLog.sessionLog.enabledпо умолчаниюfalse.sessionLog.pathпо умолчанию/tmp/remote-demo-mcp-session.log.sessionLog.logInputValueпо умолчаниюfalse(логируется только длина ввода).Инструменты интерактивной сессии запускают rsync в PTY, поэтому запросы пароля/OTP могут быть обнаружены через
poll_deploy_session.
Политика SSH-ключей хоста:
accept-new(по умолчанию): ключ хоста при первом подключении принимается автоматически; измененный ключ отклоняется.strict: никогда не принимать автоматически неизвестный ключ хоста.insecure: отключить проверку ключа хоста (высокий риск; только для временного использования/отладки).
Интерактивный поток Codex CLI:
Вызовите
start_deploy_sessionЦиклически вызывайте
poll_deploy_sessionЕсли
needsInput=trueилиnextAction=submit_input, вызовитеsubmit_deploy_inputс OTP/паролем. Подсказка для пользователя: "Please Enter MFA Code." или "Please Enter Password."Продолжайте опрос, пока
nextAction=done
Контракт протокола агента (для MCP-клиентов, таких как Codex):
Вызовите
start_deploy_sessionодин раз.Прочитайте
nextActionиз ответа.Если
nextAction=submit_input, вызовитеsubmit_deploy_input.Если
nextAction=poll, вызовитеpoll_deploy_session.Повторяйте шаги 2-4, пока
nextAction=done.Никогда не вызывайте
deploy_staticдля OTP-потоков; используйте только инструменты сессии.Во время опроса постоянно передавайте прогресс передачи из
outputконечному пользователю.
Выходные данные (structuredContent):
{
"ok": true,
"url": "https://example.com/alice/my-site/index.html",
"status": 200,
"statusText": "OK",
"responseTimeMs": 123,
"message": "URL is reachable: HTTP 200 in 123ms"
}Запуск
npm run dev
# or
npm run build && npm startИнициализация файла конфигурации:
remote-demo-mcp initОн создает:
~/.config/remote-demo-mcp/config.jsonИнтерактивный режим показывает каждое текущее значение поля для редактирования.
Нажмите Enter без ввода, чтобы оставить текущее значение без изменений.
Если конфигурация уже существует,
initспросит, нужно ли ее изменить, а затем запросит окончательное подтверждение перед перезаписью.
Использование codex
Установка npm-пакета
npm install -g @jake.e-com365/remote-demo-mcpДобавление mcp в codex
codex mcp add remote-demo-mcp remote-demo-mcp Конфигурация remote-demo-mcp
remote-demo-mcp init
vi ~/.config/remote-demo-mcp/config.json{
"deployUser": "jake",
"publicBaseUrl": "https://demo-remote.e-com365.com/",
"ssh": {
"host": "xxx.xxx.xxx.xxx",
"username": "alice123#ec2-user#18.140.183.126",
"interactiveAuth": true,
"port": 2222,
"password": "xxx",
"hostKeyPolicy": "accept-new",
"autoFillPassword": true
},
"rsyncOptions": ["-az", "--delete"]
}Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
One MCP server for all your MCP servers: code mode, per-tool permissions, approvals and audit.
MCP server that lets your AI assistant build and deploy apps, hosting each one at a live URL.
MCP server for mandates, delegation, policy-gated execution, credential grants, and audit.
A MCP server built for developers enabling Git based project management with project and personal…
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for managing remote servers via SSH, enabling command execution, file transfer, rsync, tunnels, health checks, backups, and database operations.172,699 npm1MIT
- AlicenseBqualityDmaintenanceA local MCP server for agentic remote development that enables code sync via rsync, SSH command execution, and long-running task management in remote tmux sessions.153MIT
- AlicenseNot gradedqualityDmaintenanceSSH-based MCP server that enables remote execution of SSH commands, file transfers, and secure server management via the MCP protocol.ISC
- AlicenseNot gradedqualityDmaintenanceA safe, configurable MCP server enabling AI agents to sync, deploy, diagnose, and compare remote servers via structured tools like rsync and SSH.71 npm5MIT