Atlas / MCP servers / n8n2erpnext / light-remote-mcp

light-remote-mcpBLOCK

mcp/n8n2erpnext/light-remote-mcp

Light Remote MCP turns a Windows or Linux machine into an explicitly authorized remote execution target for ChatGPT, Claude, Codex, and other MCP-capable AI workflows.

Verdict
BLOCK
Grade
F
Trust score
43 /100
Exposed tools
44 33r · 10w · 1d
Transport
streamable-http
License
Apache-2.0
Stars
0
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

Cho ChatGPT Web và AI làm việc trực tiếp trên máy của bạn qua HTTP — không cần mở SSH inbound cho từng máy.

Tiếng Việt · English

Light Remote MCP là một lớp remote execution có kiểm soát dành cho ChatGPT Web, Agent và các mô hình AI khác. Thay vì để AI SSH trực tiếp vào từng VPS/PC, Light Remote đưa filesystem, process, terminal PTY/ConPTY, Git, Docker, system services và nhiều thao tác infra qua một luồng HTTP được gắn đúng device + session + Agent + policy.

Mục tiêu thực tế: thay phần lớn workflow “mở SSH rồi thao tác tay” bằng một kết nối AI có thể audit, cấp quyền theo máy, giữ session bền và thu hồi được.

Beta: 0.9.0-rc.26 là release candidate để test. Hãy bắt đầu với quyền thấp trên máy không critical trước khi bật terminal, sudo/UAC, package manager hoặc system-service permissions.

Vì sao Light Remote khác một remote shell thông thường?

  • Không cần mở inbound SSH trên leaf client. Windows/Linux/macOS Agent giữ outbound device channel tới Hub.
  • Không cần mở terminal để giữ kết nối. Windows chạy background Agent sau tray, Linux chạy systemd, macOS dùng launchd; đóng PowerShell/SSH/browser không làm service biến mất.
  • PTY/ConPTY thật. Agent có thể mở shell tương tác, gửi Ctrl-C, resize terminal, chạy installer/TUI
Read from source at commit 04b6583cb630OBSERVED · 2026-10-12
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add light-remote-direct-plugin-server --env CLIENT_UPDATE_SIGNING_KEY_FILE=${CLIENT_UPDATE_SIGNING_KEY_FILE} --env GPT_OPERATOR_UPDATE_PUBLIC_KEY=${GPT_OPERATOR_UPDATE_PUBLIC_KEY} --env LIGHT_REMOTE_GOOGLE_OAUTH_FILE=${LIGHT_REMOTE_GOOGLE_OAUTH_FILE} --env LIGHT_REMOTE_PLUGIN_OAUTH_LEGACY_CLIENTS_FILE=${LIGHT_REMOTE_PLUGIN_OAUTH_LEGACY_CLIENTS_FILE} -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "light-remote-direct-plugin-server": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "CLIENT_UPDATE_SIGNING_KEY_FILE": "${CLIENT_UPDATE_SIGNING_KEY_FILE}",
        "GPT_OPERATOR_UPDATE_PUBLIC_KEY": "${GPT_OPERATOR_UPDATE_PUBLIC_KEY}",
        "LIGHT_REMOTE_GOOGLE_OAUTH_FILE": "${LIGHT_REMOTE_GOOGLE_OAUTH_FILE}",
        "LIGHT_REMOTE_PLUGIN_OAUTH_LEGACY_CLIENTS_FILE": "${LIGHT_REMOTE_PLUGIN_OAUTH_LEGACY_CLIENTS_FILE}"
      }
    }
  }
}
03

Exposed tools (44)

33 read · 10 write · 1 destructive. Blast radius: 1 tool can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
fs_listread
fs_read_textread
fs_searchread
git_diffread
git_statusread
light_remote_capabilitiesread
light_remote_close_sessionread
light_remote_copy_pathread
light_remote_delete_pathdestructive
light_remote_deviceread
light_remote_devicesread
light_remote_edit_blockwrite
light_remote_execwrite
light_remote_fleetread
light_remote_hold_sessionread
light_remote_jobread
light_remote_list_directoryread
light_remote_make_directoryread
light_remote_move_pathwrite
light_remote_open_sessionread
light_remote_operating_contractread
light_remote_outputread
light_remote_process_inputread
light_remote_process_listread
light_remote_process_outputread
light_remote_process_startwrite
light_remote_process_stopwrite
light_remote_read_multiple_filesread
light_remote_read_text_fileread
light_remote_resume_sessionread
light_remote_run_signed_updatewrite
light_remote_search_cancelread
light_remote_search_resultsread
light_remote_search_startwrite
light_remote_sessionread
light_remote_sessionsread
light_remote_set_device_policywrite
light_remote_set_node_drainwrite
light_remote_stat_pathread
light_remote_write_text_filewrite
pingread
system_statusread
vps_identityread
workspace_rootsread
04

Trust audit

BLOCKgrade F · trust 43/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (17 observation(s))
Network
declared (8 observation(s))
Shell
declared (10 observation(s))
Dependencies
not all pinned
Secrets in source
found

Findings (25)

HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
deploy/scripts/selftest-device-policy-page.mjs:12
new Function(scripts[0]);
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
deploy/scripts/selftest-direct-web-plane.mjs:124
new Function(inlineDownloadScripts[0]);
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
deploy/scripts/selftest-enrollment-page.mjs:10
new Function(scripts[0]);
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
deploy/scripts/selftest-enrollment-page.mjs:45
new Function(publicScripts[0]);
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
deploy/scripts/selftest-enrollment-page.mjs:48
new Function(loginScripts[0]);
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHFilesystem / path · fs.credential_store · CWE-22, CWE-59
gateway/workspace.mjs:21
const DENY_NAME = /(^\.env($|\.)|secret|token|credential|password|id_ed25519|id_rsa|\.pem$|\.key$|\.p12$|\.pfx$|\.npmrc$|\.netrc$)/i;
Why it matters. touches a credential store
MEDIUMInventory / provenance · inv.binary · CWE-1104
channels/beta/artifacts/Light-Remote-Fleet-Wall-0.9.0-rc.24.tar.gz
Light-Remote-Fleet-Wall-0.9.0-rc.24.tar.gz
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
channels/beta/artifacts/Light-Remote-Fleet-Wall-0.9.0-rc.6.main1.tar.gz
Light-Remote-Fleet-Wall-0.9.0-rc.6.main1.tar.gz
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
channels/beta/artifacts/Light-Remote-Fleet-Wall-0.9.0-rc.6.tar.gz
Light-Remote-Fleet-Wall-0.9.0-rc.6.tar.gz
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
deploy/scripts/generate-wall-auth.mjs:25
console.log(`bootstrap-password-file-created=${bootstrapFile}`);
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
client/linux-debian/tray/light-remote-tray.py:10
ROOT=os.environ.get('LIGHT_REMOTE_ROOT','/opt/gpt-operator-agent'); NODE=f'{ROOT}/current/runtime/node'; AGENT=f'{ROOT}/current/device-agent/operator-agent.mjs'; WALL='http://127.0.0.1:5491/'; ICON=os
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
client/macos/build-pkg.sh:123
if /usr/bin/curl -fsS --max-time 1 'http://127.0.0.1:5491/' >/dev/null 2>&1; then WALL_OK=1; break; fi
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
client/macos/build-pkg.sh:129
if /usr/bin/curl -fsS --max-time 1 'http://127.0.0.1:5491/' >/dev/null 2>&1; then WALL_OK=1; break; fi
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
deploy/scripts/selftest-bridge-session-auth.mjs:6
const password='selftest-bridge-password';
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
deploy/scripts/selftest-v09-homelab-wall-access.mjs:16
const authFile=path.join(dir,'wall-auth.json'),password='homelab-wall-password-123';writeLocalWallAuthConfig(authFile,{username:'operator',password});
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
deploy/scripts/selftest-v09-local-wall-auth.mjs:10
const password='selftest-wall-password-123';
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
deploy/scripts/selftest-v11-paddle-billing.mjs:156
apiKey: 'pdl_sdbx_apikey_test',
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
deploy/scripts/selftest-v11-paddle-billing.mjs:471
apiKey: 'pdl_sdbx_apikey_test',
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
light_remote_delete_path
Why it matters. 1 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInventory / provenance · inv.hidden_file · CWE-1104
.light-remote-lane.json
.light-remote-lane.json
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
client/linux/update-lifeboat.mjs:5
import {UPDATE_CODES,normalizeUpdateReport,normalizeUpdateStatus} from '../../lib/update-contract.mjs';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
client/linux/updater.mjs:6
import { UPDATE_CODES } from '../../lib/update-contract.mjs';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
client/linux/updater.mjs:40
function updaterSelfTest(){const source=fileURLToPath(import.meta.url),contract=fileURLToPath(new URL('../../lib/update-contract.mjs',import.meta.url));if(!fs.existsSync(source)||!fs.existsSync(contra
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
client/macos/update-lifeboat.mjs:5
import {UPDATE_CODES,normalizeUpdateReport,normalizeUpdateStatus} from '../../lib/update-contract.mjs';
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
client/macos/updater.mjs:6
import {UPDATE_CODES} from '../../lib/update-contract.mjs';

Gates applied: no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha 04b6583cb630full audit observations/trust-audit/mcp-server/n8n2erpnext__light-remote-mcp.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-1204b6583cb630BLOCKF43first audit
06

Questions

What is the light-remote-mcp MCP server?

Light Remote MCP turns a Windows or Linux machine into an explicitly authorized remote execution target for ChatGPT, Claude, Codex, and other MCP-capable AI workflows.

What tools does light-remote-mcp expose?

44 in total: 33 read-only, 10 that write, and 1 that can delete or overwrite (light_remote_delete_path). Every one is listed on this page with its risk.

Is light-remote-mcp safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (43/100) and found 6 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 1 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does light-remote-mcp need?

It reads CLIENT_UPDATE_SIGNING_KEY_FILE, GPT_OPERATOR_UPDATE_PUBLIC_KEY, LIGHT_REMOTE_GOOGLE_OAUTH_FILE, LIGHT_REMOTE_PLUGIN_OAUTH_LEGACY_CLIENTS_FILE, LIGHT_REMOTE_PLUGIN_OAUTH_SECRET, LIGHT_REMOTE_PLUGIN_OAUTH_SECRET_FILE, OPERATOR_AGENT_WALL_AUTH_FILE, OPERATOR_FLEET_AUTHORITY_CHECK_MS, OPERATOR_FLEET_AUTHORITY_RENEW_SKEW_MS, OPERATOR_FLEET_AUTHORITY_TTL_MS, OPERATOR_KEY_FILE and OPERATOR_PUBLIC_KEYS_FILE from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does light-remote-mcp run?

It speaks streamable-http, so it runs as a service you connect to over the network. It is published on npm as light-remote-direct-plugin-server at 0.1.5.

How current is this page?

The grade is for one exact copy of the source (04b6583cb630), read on 2026-10-12. The repository is watched and re-audited when it changes.

Advertisement