@raultov/browser-control-mcp 0.3.1-beta.3 → 0.3.4-beta.4

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.
package/CHANGELOG.md CHANGED
@@ -10,6 +10,75 @@ from a copy of its code: entries describe the differences from that release.
10
10
 
11
11
  ## [Unreleased]
12
12
 
13
+ ## [0.3.4-beta.4] - 2026-10-27
14
+
15
+ Public **BETA**. The same server as 0.3.3-beta.4, which was published on
16
+ crates.io but without binaries, npm package or Homebrew formula: its
17
+ release notes made GitHub skip the builds. See 0.3.3-beta.4 below for the
18
+ changes.
19
+
20
+ ### Fixed
21
+
22
+ - The release notes no longer quote a URL with credentials, which GitHub
23
+ treats as a secret; `make check` now refuses one in this file.
24
+
25
+ ## [0.3.3-beta.4] - 2026-10-27
26
+
27
+ Public **BETA**. Tools that reported success for something that did not
28
+ happen now say what happened, and proxy credentials are handled more
29
+ safely. Some replies change: an unknown tool argument is an error,
30
+ `navigate`/`reload` add `status`, a download URL fails, and
31
+ `restart_browser`/`stop_browser` on an attached Chrome refuse or only
32
+ disconnect.
33
+
34
+ ### Fixed
35
+
36
+ - `open_instance` without `headless` follows the server's `--headless` flag.
37
+ It always opened a window, even on a server started with `--headless`
38
+ (where there may be no display, as in the Docker image).
39
+ - Credentials written in a proxy URL (a user and password before the host,
40
+ from `--proxy-server`, `open_instance`'s `proxy` or `restart_browser`)
41
+ no longer reach the browser: Chrome got them on its command line, readable
42
+ by any local user with `ps` (and ignored them), and Firefox refused to
43
+ launch. `enable_proxy_auth` now falls back to the credentials of
44
+ `--proxy-server`.
45
+ - `enable_proxy_auth` with wrong credentials no longer loops: a request the
46
+ proxy challenges again after two answers is cancelled. Firefox re-raised
47
+ the same request forever (about 50 challenges a second, each carrying the
48
+ password); Chrome retried tens of times. On Firefox, calling the tool
49
+ again also removes the previous intercept (each call added one more).
50
+ - On Chrome, an instance attached to a browser that was already running on
51
+ its port (not launched by the server) no longer reports a restart or stop
52
+ that did not happen. `restart_browser` (and a `copy_cookies` relaunch)
53
+ fails saying the server cannot relaunch it, and nothing is changed;
54
+ `stop_browser` disconnects and says the browser keeps running. Both said
55
+ "successfully" while the same process kept running without the presets.
56
+ - `navigate` and `reload` report the document's HTTP status (`"status":
57
+ 404`), and an error status (400 and up) adds a note. A 404 used to look
58
+ like any success, and an error with an empty body failed on Chrome
59
+ (`ERR_HTTP_RESPONSE_CODE_FAILURE`) but succeeded on Firefox: it is now a
60
+ success with its status on both.
61
+ - `navigate` to a URL the browser downloads fails with `Navigation failed:
62
+ the URL is a download...` on both browsers. Firefox answered "Navigated
63
+ to" the previous page; Chrome failed with `net::ERR_ABORTED`.
64
+ - A tool call with an argument the tool does not have now fails before
65
+ anything runs, naming the argument it was probably meant to be (`tabId`
66
+ answers "did you mean `tab_id`?"). Unknown arguments were ignored, so a
67
+ `tabId` typo ran on the active tab.
68
+
69
+ ## [0.3.2-beta.3] - 2026-10-25
70
+
71
+ Public **BETA**. Replies up to 256 MB no longer drop the browser connection
72
+ (new `cdp-lite` and `bidi-lite` releases).
73
+
74
+ ### Fixed
75
+
76
+ - Replies up to 256 MB no longer drop the connection: built with `cdp-lite`
77
+ 0.3.1 and `bidi-lite` 0.1.4, which accept WebSocket messages up to 256 MiB
78
+ (the WebSocket library's default closed the connection on a frame over
79
+ 16 MiB, e.g. an `evaluate_js` string of 20 MB). The lost-connection error
80
+ now names the 256 MB limit.
81
+
13
82
  ## [0.3.1-beta.3] - 2026-10-25
14
83
 
15
84
  Public **BETA**. Size limits: large pages, results, scripts, logs and
package/README.md CHANGED
@@ -11,7 +11,7 @@ It is the successor of
11
11
  from a copy of its code) and complements Playwright MCP or
12
12
  chrome-devtools-mcp with runtime JavaScript debugging on both browsers.
13
13
 
14
- > **Status: BETA (0.3.1-beta.3).** This version contains known bugs and differences
14
+ > **Status: BETA (0.3.4-beta.4).** This version contains known bugs and differences
15
15
  > between Chrome and Firefox (see [Limitations and TODO](#limitations-and-todo))
16
16
  > and parts that have not been verified (see [Untested](#untested)). Tool
17
17
  > replies may change in incompatible ways before 1.0. Please report problems
@@ -40,8 +40,8 @@ see the note.
40
40
  | `open_instance` | ✓ | partial | `features`, `copy_cookies` and `source_profile` are Chrome only |
41
41
  | `close_instance` | ✓ | ✓ | |
42
42
  | `list_instances` | ✓ | ✓ | each instance reports its `browser` and `capabilities` |
43
- | `restart_browser` | ✓ | ✓ | was `restart_chrome` |
44
- | `stop_browser` | ✓ | ✓ | was `stop_chrome`; on an attached Firefox it ends the session, the browser keeps running |
43
+ | `restart_browser` | ✓ | ✓ | was `restart_chrome`; refused on a Chrome already running on the port (attached, not launched by the server) |
44
+ | `stop_browser` | ✓ | ✓ | was `stop_chrome`; on an attached Chrome or Firefox it only disconnects (Firefox: ends the session), the browser keeps running and the reply says so |
45
45
  | `open_tab` | ✓ | ✓ | |
46
46
  | `close_tab` | ✓ | ✓ | |
47
47
  | `list_tabs` | ✓ | ✓ | |
@@ -67,7 +67,7 @@ see the note.
67
67
  | `evaluate_on_call_frame` | ✓ | ✓ | |
68
68
  | `search_scripts` | ✓ | ✓ | a long line's preview is 100 characters on each side of the match |
69
69
  | `pause_on_load` | ✓ | ✗ | TODO on Firefox, see [Limitations and TODO](#limitations-and-todo) |
70
- | `enable_proxy_auth` | ✓ | partial | needs `--proxy-server`; untested on Firefox against a real proxy |
70
+ | `enable_proxy_auth` | ✓ | partial | needs `--proxy-server`; a request the proxy rejects twice is cancelled; untested on Firefox against a real proxy |
71
71
  | `send_cdp_command` | ✓ | ✗ | raw Chrome DevTools Protocol |
72
72
  | `send_bidi_command` | ✗ | ✓ | raw WebDriver BiDi; refuses `session.new`, `session.end`, `browser.close` |
73
73
  | `send_rdp_request` | ✗ | ✓ | raw Firefox RDP request to an actor (`thread`, `console`, `root` shortcuts) |
@@ -273,13 +273,19 @@ claude mcp add browser-control-mcp -- npx -y @raultov/browser-control-mcp
273
273
  lazily, on the first tool that needs them, with an ephemeral profile.
274
274
  - **Tabs.** `open_tab`, `list_tabs`, `switch_tab`, `close_tab`. Every tool
275
275
  takes `instance_id` and `tab_id`; without them it targets the default
276
- instance and its active tab.
276
+ instance and its active tab. An argument a tool does not have fails the
277
+ call before anything runs (a `tabId` typo answers "did you mean
278
+ `tab_id`?"), so a typo never falls back to the active tab.
277
279
  - **Same replies on both browsers.** `navigate` and `reload` answer once the
278
280
  page fired `load` (at most 30 s, else with a note): a first line
279
281
  (`Navigated to <final URL>.` / `Page reloaded.`), then
280
282
  `{"url": "<final URL, after redirects>", "tab_id": "tab-N", "browser": {...}}`,
281
283
  where `browser` holds the protocol's ids (CDP `frameId`/`loaderId`, BiDi
282
- `navigation`). `open_tab` answers `{tab_id, target_id, url, label}` with the
284
+ `navigation`), plus `"status"`, the document's HTTP status, for http(s)
285
+ pages (an error status, 400 and up, also adds a note; an error page with
286
+ an empty body is reported the same way on both browsers). A URL the
287
+ browser downloads fails with `Navigation failed: the URL is a
288
+ download...`. `open_tab` answers `{tab_id, target_id, url, label}` with the
283
289
  final URL. A network error (unknown host, refused connection...) fails with
284
290
  `Navigation failed: <browser's code> (<url>)`, e.g.
285
291
  `net::ERR_NAME_NOT_RESOLVED` on Chrome and `NS_ERROR_UNKNOWN_HOST` on
@@ -316,7 +322,7 @@ claude mcp add browser-control-mcp -- npx -y @raultov/browser-control-mcp
316
322
  | --- | --- | --- | --- |
317
323
  | `--browser <chrome\|firefox>` | `chrome` | browser of the default instance | browser of the default instance |
318
324
  | `--local` | off | navigation limited to local addresses | same |
319
- | `--headless` | off | headless Chrome | headless Firefox |
325
+ | `--headless` | off | headless Chrome (also the default of `open_instance`'s `headless`) | headless Firefox (same) |
320
326
  | `--window-size <W>x<H>` | `1920x1080` | window of launched Chrome (`--window-size`) | window of launched Firefox (`--width`/`--height`) |
321
327
  | `--host <HOST>` | `127.0.0.1` | debugging host | debugging host |
322
328
  | `--port <PORT>` | `9222` | debugging port of the default instance | ignored (use `--firefox-port`) |
@@ -333,6 +339,11 @@ claude mcp add browser-control-mcp -- npx -y @raultov/browser-control-mcp
333
339
  | `--firefox-rdp-port <PORT>` | none | — | debugger port of the attached Firefox (needs `--firefox-port`) |
334
340
  | `--no-firefox-debugger` | off | — | launch Firefox without its debugger port (no debugger tools) |
335
341
 
342
+ Credentials written in a proxy URL (`http://user:pass@host:port`) never reach
343
+ the browser's command line; `enable_proxy_auth` uses those of `--proxy-server`
344
+ when neither its arguments nor `--proxy-username`/`--proxy-password` give
345
+ them.
346
+
336
347
  `--proxy` and `--webmcp` are aliases. To attach to your own Firefox, start it
337
348
  with `--remote-debugging-port <port>` (and `--start-debugger-server ws:<rdp>`
338
349
  plus `devtools.debugger.remote-enabled` and `devtools.chrome.enabled` for the
@@ -423,7 +434,7 @@ incompatible:
423
434
 
424
435
  | Tool | 0.1.x | 0.2.0 |
425
436
  | --- | --- | --- |
426
- | `navigate`, `reload` | Chrome: raw `Page.navigate` reply (`frameId`, `loaderId`, `errorText`) without waiting, `{}` on reload; Firefox: `{navigation, url}` | `{url, tab_id, browser, notes?}` after `load`; `url` is the final URL; protocol ids under `browser` |
437
+ | `navigate`, `reload` | Chrome: raw `Page.navigate` reply (`frameId`, `loaderId`, `errorText`) without waiting, `{}` on reload; Firefox: `{navigation, url}` | `{url, tab_id, browser, status?, notes?}` after `load`; `url` is the final URL; protocol ids under `browser`; `status` is the document's HTTP status |
427
438
  | `navigate`, `open_tab` to an unreachable host | Chrome: success (`errorText` inside, or a `chrome-error://` tab) | error `Navigation failed: <code> (<url>)`; `open_tab` names the tab, which stays open |
428
439
  | `evaluate_js` | Chrome: `{"result": {type, value, ...}}`; Firefox: the bare value | `{value, type, subtype?, description?}` |
429
440
  | `set_breakpoint` | Chrome: CDP id (`1:3:0:http://…`) and `locations`; Firefox: `{breakpointId, url, lineNumber, columnNumber}` | `{breakpoint_id: "bp-N", url, line_number, column_number, resolved}` |
@@ -500,7 +511,7 @@ incompatible:
500
511
 
501
512
  ```sh
502
513
  make check # fmt, clippy -D warnings, tests, docs, duplication, packaging, version
503
- make e2e # E2E smoke against real, visible Chrome and Firefox (Linux, macOS)
514
+ make e2e # E2E smoke against real Chrome and Firefox, headless (E2E_VISIBLE=1 shows them; Linux, macOS)
504
515
  make check-all # both
505
516
  ```
506
517
 
@@ -19,7 +19,7 @@
19
19
  "hasInstallScript": true,
20
20
  "license": "MIT",
21
21
  "name": "@raultov/browser-control-mcp",
22
- "version": "0.3.1-beta.3"
22
+ "version": "0.3.4-beta.4"
23
23
  },
24
24
  "node_modules/detect-libc": {
25
25
  "engines": {
@@ -48,5 +48,5 @@
48
48
  }
49
49
  },
50
50
  "requires": true,
51
- "version": "0.3.1-beta.3"
51
+ "version": "0.3.4-beta.4"
52
52
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "artifactDownloadUrls": [
3
- "https://github.com/raultov/browser-control-mcp/releases/download/v0.3.1-beta.3"
3
+ "https://github.com/raultov/browser-control-mcp/releases/download/v0.3.4-beta.4"
4
4
  ],
5
5
  "author": "raultov <raultov@protonmail.com>",
6
6
  "bin": {
@@ -92,7 +92,7 @@
92
92
  "zipExt": ".tar.xz"
93
93
  }
94
94
  },
95
- "version": "0.3.1-beta.3",
95
+ "version": "0.3.4-beta.4",
96
96
  "volta": {
97
97
  "node": "18.14.1",
98
98
  "npm": "9.5.0"