@raultov/browser-control-mcp 0.3.0-beta.3 → 0.3.2-beta.3
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 +57 -0
- package/README.md +11 -8
- package/npm-shrinkwrap.json +2 -2
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,63 @@ from a copy of its code: entries describe the differences from that release.
|
|
|
10
10
|
|
|
11
11
|
## [Unreleased]
|
|
12
12
|
|
|
13
|
+
## [0.3.2-beta.3] - 2026-10-25
|
|
14
|
+
|
|
15
|
+
Public **BETA**. Replies up to 256 MB no longer drop the browser connection
|
|
16
|
+
(new `cdp-lite` and `bidi-lite` releases).
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- Replies up to 256 MB no longer drop the connection: built with `cdp-lite`
|
|
21
|
+
0.3.1 and `bidi-lite` 0.1.4, which accept WebSocket messages up to 256 MiB
|
|
22
|
+
(the WebSocket library's default closed the connection on a frame over
|
|
23
|
+
16 MiB, e.g. an `evaluate_js` string of 20 MB). The lost-connection error
|
|
24
|
+
now names the 256 MB limit.
|
|
25
|
+
|
|
26
|
+
## [0.3.1-beta.3] - 2026-10-25
|
|
27
|
+
|
|
28
|
+
Public **BETA**. Size limits: large pages, results, scripts, logs and
|
|
29
|
+
screenshots no longer flood the agent or drop the browser connection, and
|
|
30
|
+
Chrome reconnects by itself when a reply over 16 MB drops it. Some replies
|
|
31
|
+
change (cut texts end with a `[cut: ...]` or `[Truncated: ...]` note,
|
|
32
|
+
`evaluate_js` may say `truncated: true`, `inspect_dom` positions are
|
|
33
|
+
characters).
|
|
34
|
+
|
|
35
|
+
### Fixed
|
|
36
|
+
|
|
37
|
+
- `capture_screenshot` with `full_page` captures at most 16 384 CSS pixels
|
|
38
|
+
per side, from the top left, and then adds a text note naming the
|
|
39
|
+
document's size (a 30 000 px page came back whole).
|
|
40
|
+
- Observation buffers keep a bounded copy of each item: a console message
|
|
41
|
+
keeps 10 000 characters, a WebSocket payload 64 000 (`payload_len` is
|
|
42
|
+
the whole length), custom event params over 64 000 characters of JSON
|
|
43
|
+
become `{"truncated": true, "characters": N}`, and `get_network_logs`
|
|
44
|
+
shows at most 64 000 characters of a request or response body. Each cut
|
|
45
|
+
text ends with `… [cut: the first N of M characters]`. Chrome no longer
|
|
46
|
+
fetches a response body whose `Content-Length` is over 2 MB (Firefox
|
|
47
|
+
keeps none larger). Two 3 MB console messages made a 6 MB reply.
|
|
48
|
+
- `search_scripts` previews a long line (minified code) as the match with
|
|
49
|
+
100 characters on each side, `…` where it was cut: one hit in a 1.6 MB
|
|
50
|
+
one-line script returned the whole line.
|
|
51
|
+
- `evaluate_js` returns at most 100 000 characters of `value`: a longer
|
|
52
|
+
string is cut, and an object or array whose JSON form is longer is
|
|
53
|
+
measured in the page and only described ("too large to return (N
|
|
54
|
+
characters of JSON)"), so it never crosses the connection; the reply
|
|
55
|
+
says `"truncated": true`. A 3-million-element array used to time out on
|
|
56
|
+
Firefox and a 20 MB object to drop the connection. A string result over
|
|
57
|
+
16 MB still drops it (the next call reconnects).
|
|
58
|
+
- `inspect_dom` searches and cuts in the page, so a large document no
|
|
59
|
+
longer crosses the connection (a 20 MB page used to drop it on Chrome).
|
|
60
|
+
Without `query` it returns at most 100 000 characters, after a
|
|
61
|
+
`[Truncated: ...]` note naming the total; `before`/`after` are capped at
|
|
62
|
+
10 000. Positions are characters (they were bytes). On Chrome an
|
|
63
|
+
exception in the page is an error (it was an empty success).
|
|
64
|
+
- A reply over 16 MB (a huge `evaluate_js` result, a 20 MB page in
|
|
65
|
+
`inspect_dom`) makes the browser close the DevTools connection. Chrome
|
|
66
|
+
then answered `CDP Error: Connection lost` to every later call until
|
|
67
|
+
`restart_browser`; now the next call reconnects by itself (tab ids are
|
|
68
|
+
re-assigned). The failing call explains what happened on both browsers.
|
|
69
|
+
|
|
13
70
|
## [0.3.0-beta.3] - 2026-10-25
|
|
14
71
|
|
|
15
72
|
Public **BETA**. Result of a tool-by-tool audit on real Chrome and Firefox:
|
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.
|
|
14
|
+
> **Status: BETA (0.3.2-beta.3).** 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
|
|
@@ -49,15 +49,15 @@ see the note.
|
|
|
49
49
|
| `navigate` | ✓ | ✓ | |
|
|
50
50
|
| `reload` | ✓ | ✓ | |
|
|
51
51
|
| `scroll` | ✓ | ✓ | reports the window positions before and after |
|
|
52
|
-
| `inspect_dom` | ✓ | ✓ | |
|
|
53
|
-
| `capture_screenshot` | ✓ | ✓ | |
|
|
52
|
+
| `inspect_dom` | ✓ | ✓ | at most 100 000 characters without `query` (cut in the page) |
|
|
53
|
+
| `capture_screenshot` | ✓ | ✓ | `full_page` at most 16 384 px per side (a text note says when cut) |
|
|
54
54
|
| `click_element` | ✓ | ✓ | scrolls the element into view; fails without clicking when it is hidden or covered |
|
|
55
55
|
| `fill_input` | ✓ | ✓ | picks `<select>` options; fails without typing on elements that cannot take the text; Chrome inserts the text, Firefox types keys |
|
|
56
56
|
| `handle_dialog` | ✓ | ✓ | accepts or dismisses the open `alert` / `confirm` / `prompt` / `beforeunload` dialog |
|
|
57
|
-
| `evaluate_js` | ✓ | ✓ | |
|
|
58
|
-
| `get_console_logs` | ✓ | ✓ | Firefox: page errors, CSS warnings and platform messages need the debugger port |
|
|
59
|
-
| `get_network_logs` | ✓ | ✓ | Firefox: WebSocket frames need the debugger port |
|
|
60
|
-
| `get_custom_events` | ✓ | partial | Firefox: events of the modules subscribed with `send_bidi_command` |
|
|
57
|
+
| `evaluate_js` | ✓ | ✓ | `value` at most 100 000 characters (`truncated: true`) |
|
|
58
|
+
| `get_console_logs` | ✓ | ✓ | a message keeps at most 10 000 characters; Firefox: page errors, CSS warnings and platform messages need the debugger port |
|
|
59
|
+
| `get_network_logs` | ✓ | ✓ | bodies at most 64 000 characters, none over 2 MB; a WebSocket payload keeps 64 000 (`payload_len` is the whole); Firefox: WebSocket frames need the debugger port |
|
|
60
|
+
| `get_custom_events` | ✓ | partial | params over 64 000 characters of JSON are replaced by `{truncated, characters}`; Firefox: events of the modules subscribed with `send_bidi_command` |
|
|
61
61
|
| `get_performance_metrics` | ✓ | partial | Firefox: `Nodes`, `Frames`, `Resources`, `TransferSize` from the Web Performance APIs (no Performance domain), plus a note |
|
|
62
62
|
| `profile_page_performance` | ✓ | partial | Firefox: FCP, LCP, DCL and Load from the Web Performance APIs; no trace, so `total_blocking_time_ms` and `top_long_tasks` are `null` |
|
|
63
63
|
| `set_breakpoint` | ✓ | partial | Firefox: by URL only (no `script_id` / `script_hash`) |
|
|
@@ -65,7 +65,7 @@ see the note.
|
|
|
65
65
|
| `resume` | ✓ | ✓ | |
|
|
66
66
|
| `step_over` | ✓ | ✓ | |
|
|
67
67
|
| `evaluate_on_call_frame` | ✓ | ✓ | |
|
|
68
|
-
| `search_scripts` | ✓ | ✓ | |
|
|
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
70
|
| `enable_proxy_auth` | ✓ | partial | needs `--proxy-server`; untested on Firefox against a real proxy |
|
|
71
71
|
| `send_cdp_command` | ✓ | ✗ | raw Chrome DevTools Protocol |
|
|
@@ -292,6 +292,9 @@ claude mcp add browser-control-mcp -- npx -y @raultov/browser-control-mcp
|
|
|
292
292
|
by their source, Firefox only as `function`). A thrown exception or a
|
|
293
293
|
rejected promise fails with what was thrown and its 1-based line and
|
|
294
294
|
column, e.g. `ReferenceError: x is not defined (line 1, column 1)`.
|
|
295
|
+
A `value` over 100 000 characters is not returned whole: a string keeps
|
|
296
|
+
its first 100 000, an object or array is measured in the page and only
|
|
297
|
+
described; the reply then carries `"truncated": true`.
|
|
295
298
|
- **Per-tab state.** Console logs, network traffic, breakpoints and custom
|
|
296
299
|
events are kept per tab, in bounded buffers. A tab's console buffer (last
|
|
297
300
|
1000 messages) is cleared when the tab moves to another site (registrable
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"hasInstallScript": true,
|
|
20
20
|
"license": "MIT",
|
|
21
21
|
"name": "@raultov/browser-control-mcp",
|
|
22
|
-
"version": "0.3.
|
|
22
|
+
"version": "0.3.2-beta.3"
|
|
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.
|
|
51
|
+
"version": "0.3.2-beta.3"
|
|
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.
|
|
3
|
+
"https://github.com/raultov/browser-control-mcp/releases/download/v0.3.2-beta.3"
|
|
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.
|
|
95
|
+
"version": "0.3.2-beta.3",
|
|
96
96
|
"volta": {
|
|
97
97
|
"node": "18.14.1",
|
|
98
98
|
"npm": "9.5.0"
|