Remote Demo MCP
Remote Demo MCP
Lokaler MCP-Server, der ein vorkompiliertes statisches Verzeichnis mit rsync auf einem Remote-Host bereitstellt.
Funktionsweise
Verwendet einen festen
deployUseraus der MCP-KonfigurationLeitet
projectvom Basisnamen deslocalDirabLädt
localDir-Inhalte hoch nach:/var/www/html/demo-remote/{user}/{project}/
Verwendet den lokalen
rsync-BefehlUnterstützt OTP/interaktive SSH-Abläufe durch Anbindung der rsync-Sitzung an
/dev/ttyFragt bei Fehlern nach, ob ein erneuter Versuch unternommen werden soll, bis der Benutzer abbricht
Installation
npm install
npm run buildKonfiguration
Standard-Konfigurationspfad:
~/.config/remote-demo-mcp/config.json
Pfad überschreiben mit:
REMOTE_DEMO_MCP_CONFIG=/abs/path/config.json
Beispiel:
{
"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"]
}Der Server aktiviert automatisch fortsetzbare Uploads durch Anhängen von:
--partial--checksum--progress(sofernrsyncOptionsnicht bereits--progressoder--info=...enthält)
Kompatibilitätshinweis:
Der interaktive Sitzungsmodus verwendet
node-pty. Wenn Sie unter macOS/Linuxposix_spawnp failedsehen, liegt dies oft an einem nicht ausführbarennode-pty-Hilfsprogramm (.../node-pty/prebuilds/*/spawn-helper). Dieser Server prüft nun beim Start der Sitzung die Ausführungsberechtigung des Hilfsprogramms und korrigiert diese automatisch.
Der Basispfad des Remote-Ziels ist fest kodiert und kann nicht überschrieben werden:
/var/www/html/demo-remote
Tool
deploy_static
Schlüsselwörter:
EN:
deploy to remote,deploy demo,publish demo,upload static site中文:
部署到远程,部署demo,部署 demo,发布demo,上传静态网页
user-Regeln:
deployUserist die App-Benutzer-ID für den Remote-Pfad, nicht der SSH-usernameErlaubte Zeichen:
A-Z a-z 0-9 _ -Nicht erlaubt:
.,.., Leerzeichen,/,\und andere Sonderzeichen
Eingabe:
{
"localDir": "/abs/path/to/dist",
"clientCwd": "/abs/path/on-mcp-client",
"dryRun": false
}localDir-Pfadauflösung:
Absoluter Pfad: wird direkt verwendet
Relativer Pfad: wird relativ zu
clientCwdaufgelöst, falls angegebenFallback für relative Pfade:
CODEX_START_DIRfalls gesetzt, ansonstenprocess.cwd()(Server-Startverzeichnis)
Projekt-Namensauflösung:
Wenn
clientCwdangegeben ist, verwendet der Projektname das letzte Pfadsegment vonclientCwdAndernfalls verwendet der Projektname das letzte Pfadsegment des aufgelösten
localDir
Verhaltenshinweis:
Wenn
ssh.interactiveAuth=trueunddryRun=false, schlägtdeploy_staticdesignbedingt sofort fehl.Für interaktive OTP/Passwort-Bereitstellungen verwenden Sie:
start_deploy_sessionpoll_deploy_sessionsubmit_deploy_inputwennnextAction=submit_input
Host-Key-Bestätigungen (
yes/no) und Passwort-Prompts werden im Sitzungsmodus automatisch behandelt.OTP ist weiterhin manuell: Rufen Sie
submit_deploy_inputauf, wennnextAction=submit_input.
Ausgabe (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
Eingabe:
{
"url": "https://example.com/alice/my-site/index.html",
"timeoutMs": 8000
}Interaktive OTP-Sitzungstools
Verwenden Sie diese, wenn während der Bereitstellung in Nicht-TTY-Hosts ein OTP/Passwort eingegeben werden muss:
start_deploy_sessionpoll_deploy_session(Ausgabe und Fortschritt lesen; wennstate=waiting_input, Code übermitteln)submit_deploy_input(OTP/Passwort senden)Schritt 2 wiederholen, bis
stateaufsucceededoderfailedstehtoptional
cancel_deploy_session
poll_deploy_session unterstützt inkrementelle Ausgabe per cursor und gibt nextCursor zurück.
Sitzungstools geben nextAction zurück, um die Orchestrierung deterministisch zu machen:
submit_input:submit_deploy_inputaufrufenpoll:poll_deploy_sessionaufrufendone: Workflow abgeschlossen (succeeded/failed/cancelled)
Sitzungsprotokollierung:
Konfiguration in der MCP-Konfigurationsdatei unter
sessionLog.sessionLog.enabledStandard istfalse.sessionLog.pathStandard ist/tmp/remote-demo-mcp-session.log.sessionLog.logInputValueStandard istfalse(nur die Länge der Eingabe wird protokolliert).Interaktive Sitzungstools führen rsync in einem PTY aus, sodass Passwort/OTP-Prompts über
poll_deploy_sessionerkannt werden können.
SSH-Host-Key-Richtlinie:
accept-new(Standard): Host-Key beim ersten Mal automatisch akzeptieren; geänderter Key wird abgelehnt.strict: Unbekannte Host-Keys niemals automatisch akzeptieren.insecure: Host-Key-Validierung deaktivieren (hohes Risiko; nur für temporäre/Debug-Zwecke).
Codex CLI interaktiver Ablauf:
start_deploy_sessionaufrufenpoll_deploy_sessionin einer Schleife ausführenWenn
needsInput=trueodernextAction=submit_input,submit_deploy_inputmit OTP/Passwort aufrufen. Der Hinweis für den Benutzer lautet "Please Enter MFA Code." oder "Please Enter Password."Weiter pollen, bis
nextAction=done
Agent-Protokollvertrag (für MCP-Clients wie Codex):
start_deploy_sessioneinmal aufrufen.nextActionaus der Antwort lesen.Wenn
nextAction=submit_input,submit_deploy_inputaufrufen.Wenn
nextAction=poll,poll_deploy_sessionaufrufen.Schritte 2-4 wiederholen, bis
nextAction=done.Niemals
deploy_staticfür OTP-Abläufe aufrufen; nur Sitzungstools verwenden.Während des Pollings den Übertragungsfortschritt aus
outputkontinuierlich an den Endbenutzer weiterleiten.
Ausgabe (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"
}Ausführen
npm run dev
# or
npm run build && npm startKonfigurationsdatei initialisieren:
remote-demo-mcp initDies erstellt:
~/.config/remote-demo-mcp/config.jsonDer interaktive Modus zeigt jeden aktuellen Feldwert zur Bearbeitung an.
Drücken Sie Enter ohne Eingabe, um den aktuellen Wert unverändert zu lassen.
Wenn die Konfiguration bereits existiert, fragt
initnach, ob sie geändert werden soll, und verlangt vor dem Überschreiben eine endgültige Bestätigung.
codex 使用
安裝 npm 包
npm install -g @jake.e-com365/remote-demo-mcpcodex 添加 mcp
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"]
}This server cannot be installed
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/jake-bcn/remote-demo-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server