Remote Control MCP (Electrobun)
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Remote Control MCP (Electrobun)Take a screenshot of the screen."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Remote Control MCP (Electrobun)
A desktop remote-control MCP server built with Electrobun. It captures a user-selected screen and exposes mouse/keyboard control + screenshots as an MCP (Model Context Protocol) server, reachable from anywhere through a WebSocket tunnel — so external agents and tools can drive the machine.
Native input simulation currently targets Linux (via
/dev/uinput). See Setup & permissions.
Working on this codebase with an AI agent? Read AGENTS.md first — it documents the architecture and the non-obvious gotchas.
Features
Screen capture — pick a display via the Web
getDisplayMediaAPI and take JPEG screenshots (90% quality).Synthetic mouse — click at absolute pixel coordinates (left/right/middle).
Synthetic keyboard — type text (with human-like timing) and press named keys with modifiers.
Remote MCP server — 5 tools (
get_system_info,screenshot,click,type_text,press_key) exposed over a WebSocket tunnel with a stable public URL.In-app test panel — exercise clicks/typing/keys locally before going remote.
Related MCP server: mcp-vnc
Architecture (short version)
Electrobun runs two processes that talk over RPC:
Bun process (
src/bun/) — OS access:/dev/uinput(FFI),xrandr, persistent storage.Webview (
src/mainview/) — UI, screenshots, and the MCP server + WebSocket tunnel client.
Native actions are forwarded from the webview to Bun via RPC; screenshots are captured in the webview from the active screen-share stream. Full detail and the data-flow diagram live in AGENTS.md.
src/
├── bun/
│ ├── index.ts # RPC schema + handlers, window, screen-size detection, KV store
│ └── uinput.ts # FFI → /dev/uinput: VirtualMouse + VirtualKeyboard
└── mainview/
├── index.html # UI
├── index.css
├── index.ts # ScreenCaptureApp + McpPanel
└── mcp/ # tunnel client + MCP server bridge + tool definitionsGetting started
bun install
bun start # run (electrobun dev)
bun dev # run with file watching
bun run build:canary # build / verify it compilesIn the app, click Select Screen & Start Remote, choose a display, and the Remote MCP panel will show the public URL once the tunnel connects.
Setup & permissions
Input simulation creates kernel-level virtual devices through /dev/uinput, which
is root-only by default. On startup the app offers to grant access via pkexec
(graphical password prompt), running:
chmod 666 /dev/uinputThis is session-only (does not survive reboot). Manual equivalent:
sudo chmod 666 /dev/uinputDo not run the whole app with sudo.
Remote control via MCP
The app exposes a Streamable HTTP MCP endpoint at the public tunnel URL. Tools:
Tool | Description |
| Host details: screen size (the click coordinate space), OS/distro, kernel, arch, session (Wayland/X11), hostname, time. |
| JPEG (90% quality) of the shared screen (requires active screen sharing). |
| Click at absolute pixel |
| Type a string (US layout; non-ASCII skipped + reported). |
| Press a named key / char, optional |
Smoke test
smoke-mcp.sh drives a demo sequence (click → type "chrome" → down → enter):
./smoke-mcp.sh 'https://layerz.me:4433/mcp/<session>'
# or
MCP_URL='https://layerz.me:4433/mcp/<session>' ./smoke-mcp.shPaste the URL from the app's Remote MCP panel.
Security considerations
Screen sharing requires explicit user consent; the tunnel only connects after consent.
Once connected, the public URL lets remote clients control mouse/keyboard and read the screen — treat it like a remote-access credential and disconnect when not in use.
The tunnel never autostarts; it is tied to the screen-selection action.
Notes
US QWERTY keyboard layout assumed for synthetic typing.
Tunnel server:
wss://layerz.me:4433/connect(already deployed; configurable intunnel.ts).
This server cannot be installed
Maintenance
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
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Overtorment/remote-control-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server