@rebind.gg/mcp-server
Uses Google Gemini models through OpenRouter as the reasoning and vision backend for the server-side helper tools: REBIND_MODEL (default google/gemini-3.5-flash-lite) powers delegate_task, rebind_versus and meditate, with an optional separate multimodal model for meditate's live-page and captcha vision pass.
Provides run_lua, which executes a Luau script on the connected machine and returns its value as JSON, as the fast path for deterministic sequences such as launching apps, placing windows, running shell commands and pixel search. lua_docs exposes the full Luau SDK type definitions, including the coroutine-safe HID input path (HID.Down/Up/MoveTo/Combo).
Enables macOS-specific capabilities on the relay host: reading the focused browser's active tab URL through AppleScript for read_page, and the browser-side steps of meditate (rendering a JS shell, same-origin fetches from inside the page, and the live-page/captcha vision pass). On non-macOS relays these features are unavailable and pages are only read over HTTP.
Click on "Deploy 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., "@@rebind.gg/mcp-servertake a screenshot of the current window"
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.
@rebind.gg/mcp-server
Stdio MCP server that turns Rebind into a computer-use toolkit: screenshots, verified clicks, keyboard input, window control, and direct Luau scripting on the connected machine. Input uses the relay's active transport: genuine USB HID in hardware mode or OS injection in software mode.
Requirements
Bun >= 1.1 (the server runs via
bunx)The Rebind app running the free Remote Control package (
rebind install @rebind/remote-control)
Install
One command writes the correct config for whichever clients you name — Claude Code, Cursor, Codex, OpenCode, VS Code, Windsurf, Zed, and more — via add-mcp:
npx add-mcp "bunx @rebind.gg/mcp-server" --name rebind \
--env REBIND_URL=ws://127.0.0.1:19561 \
-g -a claude-code -a cursor -a codex -a opencodeDrop -a <agent> for the clients you want, or pass --all. -g installs globally; omit it for project-local config. Restart the client afterward.
Manual configuration
Any MCP client takes the stdio block directly:
{
"mcpServers": {
"rebind": {
"command": "bunx",
"args": ["@rebind.gg/mcp-server"],
"env": { "REBIND_URL": "ws://127.0.0.1:19561" }
}
}
}Verify the relay is reachable
bunx @rebind.gg/mcp-server --selftestConnects, takes a capture, and reports the display — the fastest way to catch the #1 first-run failure (relay not loaded).
Related MCP server: computer-control-mcp-lands
Tools
Tool | What it does |
| Capture a display (cursor marked with a crosshair). All coordinates the model emits are pixels in the most recent screenshot. |
| Capture one window by title substring (or the active window) — smaller, cheaper, monitor-proof. |
| Re-capture a region of the last screenshot at native resolution, for small text. Read-only. |
| Move to a point and click ( |
| Move without clicking, with the same verification. |
| Type text into the focused element. |
| Press a key or combo, e.g. |
| Scroll at the cursor. Positive scrolls down, negative up. |
| Extract the focused browser's current page as structured text (URL, forms, interactive elements, plain text) via an address-bar bookmarklet; the full dump, including cleaned HTML, lands in the clipboard. The result is read back through AppleScript ( |
| Research a problem page until a reasoning model has the data to solve it: fetches the URL directly, pulls the script bundles behind a JS shell so its API endpoints are visible, fetches those endpoints and assets, and reads the live page with vision. The browser steps (rendering a JS shell, same-origin fetches through the page, and the vision pass) need a macOS relay; elsewhere it reads pages over HTTP only. Returns a markdown dossier plus JSON |
| Run a Luau script on the connected machine and return its |
| Full Luau SDK type definitions for |
| Display and window enumeration, focus, and placement. |
| Cursor readback, pauses, and the mouse scale probe. |
| Server-side reasoning helpers with no desktop access: one bounded text task, or parallel critics that attack a plan. Registered only with |
Configuration
Env var | Default | Purpose |
|
| Relay WebSocket URL. |
| — | Required when the relay has an auth token set (the Auth token field in Remote Control's Options). |
| off | Path to append one JSONL line per tool call ( |
|
| OpenRouter slug for |
| falls back to | Multimodal slug for |
| off | Set to |
How it works
Verified clicks. click and move_mouse reach an absolute screen point by reading the real OS cursor and sending relative HID deltas (which map 1:1 to pixels), correcting against the true cursor until it lands. This sidesteps the relay's own absolute move, whose delta comes from a cached cursor position that goes stale and flings the pointer to a screen edge.
Calibration. A mouse scale probe runs on the first click/move_mouse. If pointer ballistics are detected (enhance pointer precision, DPI mismatch), the probe reports it, since acceleration would break the 1:1 assumption. Re-run it any time with calibrate.
One queue. There is one physical cursor and keyboard, so tool calls are serialized: parallel calls from the model run one after another instead of interleaving HID input.
One coordinate space. All results are reported in the pixel space of the last screenshot — the same space the model emits — so no rescaling math ever falls on the model.
Machine-aware orientation. At startup the server probes the connected machine through the relay (OS, shortcut modifier, available shell tools, installed apps) and serves it as the MCP instructions block, along with a policy: prefer run_lua for deterministic work, keyboard over mouse, and screenshots last. The full Luau SDK type definitions are embedded inline so the model never has to guess run_lua APIs (including the coroutine-safe HID path — HID.Down/Up/MoveTo/Combo work in a one-shot chunk, HID.Press does not). The OS is read from the relay, not process.platform, so the guidance is correct even when the server and the relay run on different machines.
Solve pipeline
meditate gathers; it does not submit. The intended flow, all gated behind REBIND_ALLOW_DELEGATION=1:
meditate→ a dossier. Evidence is gathered by fetching, not by driving the GUI: a direct GET returns the server's own bytes, and when that comes back a JS shell the script bundles are pulled in so the endpoints the page calls are visible to the model, which then requests them by id. On a macOS relay, same-origin URLs are fetched from inside the page — the browser's own session, cookies and TLS answer them, so an endpoint that refuses a bare curl responds normally; cross-origin falls back to relay-side curl. The rendered DOM is read when a fetch cannot see the content, also on a macOS relay only. It then leaves the browser open on the problem page and returnsform(per-field{value, source, op}, traced to evidence) andsubmittable. It never bakes in the captcha — that can rotate, so it is read live at submit time, and its absence does not make a dossier unsubmittable.rebind_versus→ feed it the dossier to attack the reconciled values before anything irreversible happens.Solve (caller-driven, by sight) on the still-open page: re-navigate to the anchor and confirm the URL; screenshot → click field → type each
formvalue; tick attachment checkboxes; read the live captcha off the page; then re-extract the filled form and diff it against the dossier — on any mismatch or unresolved conflict, stop (do not submit). Only on a clean diff, click submit and verify. Whensubmittableis false there is no form to fill; surface the answer instead.
The verify-diff before an irreversible submit is a discipline the caller enforces — auto-submitting reconciled data fails closed, not open.
Develop
bun run --cwd packages/mcp-server test # src/ and tests/
bun run --cwd packages/mcp-server typecheckLicense
MIT © US Input Company
This server cannot be deployed
Maintenance
Related MCP Connectors
Eyes and hands on real Windows PCs — observe, click, type via Glasswarp API.
Securely control computers you explicitly pair through files, terminals, processes, screenshots, desktop UI/input, clipboard, browser automation, diagnostics, and document tools.
Securely control paired computers with ReMCP.
Drive real devices from your AI Coding tool. Embed a client SDK (Unity, Godot, Flutter, iOS/macOS, Android, React Native, Web) in your app, then capture screenshots, traverse the UI tree, inject taps and key events, and run automated test tasks on the physical device over a secure relay.
Related MCP Servers
- FlicenseCqualityCmaintenanceProvides comprehensive Windows system control including file operations, process management, window control, screenshots, clipboard access, PowerShell/CMD execution, and optional mouse/keyboard automation and browser control capabilities.41-
- AlicenseNot gradedqualityDmaintenanceProvides comprehensive computer control capabilities including mouse and keyboard automation, screen capture, OCR text recognition, and window management through MCP protocol.1MIT
- FlicenseNot gradedqualityBmaintenanceExposes GUI automation tools to control mouse, keyboard, and screen of the local machine via PyAutoGUI.-
- AlicenseNot gradedqualityCmaintenanceEnables coding agents to control other application windows by providing primitives for clicking, typing, capturing screenshots, and window management. Supports macOS, Windows, and Linux.MIT