@rebind.gg/mcp-server 0.1.5 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +52 -39
  2. package/package.json +2 -2
  3. package/src/index.ts +1 -1
package/README.md CHANGED
@@ -1,19 +1,17 @@
1
1
  # @rebind.gg/mcp-server
2
2
 
3
- Stdio MCP server that exposes Rebind as computer-use tools: `screenshot`,
4
- `screenshot_window`, `zoom`, `click` (verified), `move_mouse`, `type`, `key`,
5
- `scroll`, `run_lua`, `wait`, window control, and `calibrate`. Wraps
6
- `@rebind.gg/client-ts`; requires the **Rebind** app
7
- (https://rebind.gg/download) running its Remote Access relay — `remote.luau`
8
- (recommended) or `remote_access.lua` (protocol >= 1.1.0). The `click` tool clicks via `hid.press`, which is
9
- coroutine-only; use `remote.luau` or a current `remote_access.lua` (older copies
10
- called it outside a coroutine, so clicks silently failed).
3
+ Stdio MCP server that turns [Rebind](https://rebind.gg) into a computer-use toolkit: screenshots, verified clicks, keyboard input, window control, and direct Luau scripting on the connected machine — driven over real HID, not synthetic OS events.
4
+
5
+ **Requirements**
6
+
7
+ - [Bun](https://bun.sh) >= 1.1 (the server runs via `bunx`)
8
+ - The [Rebind app](https://rebind.gg/download) running its Remote Access relay: `remote.luau` (recommended) or `remote_access.lua` (protocol >= 1.1.0)
9
+
10
+ > Older copies of `remote_access.lua` called `hid.press` outside a coroutine, so clicks silently failed. Use `remote.luau` or a current `remote_access.lua`.
11
11
 
12
12
  ## Install
13
13
 
14
- One command writes the correct config for whichever clients you name — Claude
15
- Code, Cursor, Codex, OpenCode, VS Code, Windsurf, Zed, and more — each in its
16
- native format, via [`add-mcp`](https://github.com/neondatabase/add-mcp):
14
+ 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`](https://github.com/neondatabase/add-mcp):
17
15
 
18
16
  ```sh
19
17
  npx add-mcp "bunx @rebind.gg/mcp-server" --name rebind \
@@ -21,13 +19,9 @@ npx add-mcp "bunx @rebind.gg/mcp-server" --name rebind \
21
19
  -g -a claude-code -a cursor -a codex -a opencode
22
20
  ```
23
21
 
24
- Drop `-a <agent>` for the clients you want, or pass `--all`. `-g` installs
25
- globally; omit it for project-local config. Restart the client afterward.
26
-
27
- Requires **Bun** (the server runs via `bunx`) and the **Rebind** app
28
- (https://rebind.gg/download) running its Remote Access relay.
22
+ Drop `-a <agent>` for the clients you want, or pass `--all`. `-g` installs globally; omit it for project-local config. Restart the client afterward.
29
23
 
30
- ## Configure manually
24
+ ### Manual configuration
31
25
 
32
26
  Any MCP client takes the stdio block directly:
33
27
 
@@ -43,33 +37,48 @@ Any MCP client takes the stdio block directly:
43
37
  }
44
38
  ```
45
39
 
46
- `REBIND_TOKEN` is required when the server has an auth token set (the **Auth
47
- token** panel field on `remote.luau`, or `AUTH_TOKEN` on `remote_access.lua`).
48
-
49
- Check the relay is reachable before wiring it up:
40
+ ### Verify the relay is reachable
50
41
 
51
42
  ```sh
52
43
  bunx @rebind.gg/mcp-server --selftest
53
44
  ```
54
45
 
55
- Set `REBIND_AGENT_LOG=<path>` to append one JSONL line per tool call
56
- (`{ts, tool, ok, latency_ms, note}`) — no screenshot bytes, no user content.
57
- Off unless set.
58
-
59
- `click` and `move_mouse` reach an absolute screen point by reading the real OS
60
- cursor and sending relative HID deltas (which map 1:1 to pixels), correcting
61
- against the true cursor until it lands. This sidesteps the relay's own absolute
62
- move, whose delta is computed from a cached cursor position that goes stale and
63
- flings the pointer to a screen edge. A mouse scale probe runs on the first
64
- click/move_mouse; if pointer ballistics are detected (enhance pointer precision,
65
- DPI mismatch) the probe reports it, since acceleration would break the 1:1
66
- assumption.
67
-
68
- Tool calls are serialized through a single queue: there is one physical cursor
69
- and keyboard, so parallel tool calls from the model (e.g. two `move_mouse` in
70
- one turn) run one after another instead of interleaving HID input. All results
71
- are reported in the coordinate space of the last screenshot, the same space the
72
- model emits.
46
+ Connects, takes a capture, and reports the display — the fastest way to catch the #1 first-run failure (relay not loaded).
47
+
48
+ ## Tools
49
+
50
+ | Tool | What it does |
51
+ | --- | --- |
52
+ | `screenshot` | Capture a display (cursor marked with a crosshair). All coordinates the model emits are pixels in the most recent screenshot. |
53
+ | `screenshot_window` | Capture one window by title substring (or the active window) — smaller, cheaper, monitor-proof. |
54
+ | `zoom` | Re-capture a region of the last screenshot at native resolution, for small text. Read-only. |
55
+ | `click` | Move to a point and click (`left`/`right`/`middle`, optional double). Landing position is verified and corrected before pressing. |
56
+ | `move_mouse` | Move without clicking, with the same verification. |
57
+ | `type` | Type text into the focused element. |
58
+ | `key` | Press a key or combo, e.g. `Enter`, `LCtrl+L`, `LAlt+Tab`. |
59
+ | `scroll` | Scroll the wheel at the cursor (positive = up). |
60
+ | `run_lua` | Run a Luau script on the connected machine and return its `return` value as JSON — the fast path for any deterministic sequence (launch apps, place windows, shell commands, pixel search). |
61
+ | `lua_docs` | Full Luau SDK type definitions for `run_lua`. |
62
+ | `list_displays` / `list_windows` / `focus_window` / `active_window` | Display and window enumeration and control. |
63
+ | `get_cursor` / `wait` / `calibrate` | Cursor readback, pauses, and the mouse scale probe. |
64
+
65
+ ## Configuration
66
+
67
+ | Env var | Default | Purpose |
68
+ | --- | --- | --- |
69
+ | `REBIND_URL` | `ws://127.0.0.1:19561` | Relay WebSocket URL. |
70
+ | `REBIND_TOKEN` | — | Required when the relay has an auth token set (the **Auth token** panel field on `remote.luau`, or `AUTH_TOKEN` on `remote_access.lua`). |
71
+ | `REBIND_AGENT_LOG` | off | Path to append one JSONL line per tool call (`{ts, tool, ok, latency_ms, note}`). No screenshot bytes, no user content. |
72
+
73
+ ## How it works
74
+
75
+ **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.
76
+
77
+ **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`.
78
+
79
+ **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.
80
+
81
+ **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.
73
82
 
74
83
  ## Develop
75
84
 
@@ -77,3 +86,7 @@ model emits.
77
86
  bun test packages/mcp-server/tests/
78
87
  bun run --cwd packages/mcp-server typecheck
79
88
  ```
89
+
90
+ ## License
91
+
92
+ MIT © [US Input Company](https://usinput.com)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rebind.gg/mcp-server",
3
- "version": "0.1.5",
3
+ "version": "0.1.6",
4
4
  "description": "MCP server exposing Rebind as computer-use tools: screenshot, verified click, type, key, scroll, and window control over the Remote Access protocol.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -47,7 +47,7 @@
47
47
  },
48
48
  "dependencies": {
49
49
  "@modelcontextprotocol/sdk": "^1.12.0",
50
- "@rebind.gg/client-ts": "0.2.0",
50
+ "@rebind.gg/client-ts": "0.2.1",
51
51
  "sharp": "^0.34.2",
52
52
  "zod": "^3.25.0"
53
53
  },
package/src/index.ts CHANGED
@@ -53,7 +53,7 @@ async function main() {
53
53
 
54
54
  const session = new Session(client);
55
55
 
56
- const server = new McpServer({ name: "rebind", version: "0.1.5" });
56
+ const server = new McpServer({ name: "rebind", version: "0.1.6" });
57
57
 
58
58
  // REBIND_AGENT_LOG=<path>: opt-in telemetry — one JSONL line per tool call
59
59
  // ({ts, tool, ok, latency_ms, note}). No screenshot bytes, no user content.