chrome-bridge-mcp 1.29.1 → 1.29.2
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/README.md +5 -0
- package/package.json +1 -1
- package/server/protocol.js +1 -1
- package/server/ws-manager.js +9 -1
package/README.md
CHANGED
|
@@ -332,6 +332,11 @@ its own Chromium with `extension/`) · `npm run measure` (schema cost) ·
|
|
|
332
332
|
`npm run bench:latency` (milliseconds per tool, launches its own Chromium,
|
|
333
333
|
writes `docs/PERFORMANCE.md`).
|
|
334
334
|
|
|
335
|
+
## Related projects
|
|
336
|
+
|
|
337
|
+
- [agent-webbridge](https://github.com/jeet-dhandha/agent-webbridge) — drives several Chrome profiles at once, with parallel tabs
|
|
338
|
+
- [awb-recipes](https://github.com/jeet-dhandha/awb-recipes) — community-maintained, dated per-site recipes for automating logged-in websites
|
|
339
|
+
|
|
335
340
|
## License
|
|
336
341
|
|
|
337
342
|
MIT
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "chrome-bridge-mcp",
|
|
3
3
|
"mcpName": "io.github.frsorrentino/chrome-bridge",
|
|
4
|
-
"version": "1.29.
|
|
4
|
+
"version": "1.29.2",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Chrome Bridge by frsorrentino: MCP server that lets Claude Code borrow a tab from your own logged-in Chrome and hand it back — logins, 2FA and CAPTCHAs stay with you (handoff). 66 tools; 2.8-4.3× cheaper and up to 9.3× fewer turns than Claude in Chrome, measured; ChromeOS included.",
|
|
7
7
|
"main": "server/index.js",
|
package/server/protocol.js
CHANGED
package/server/ws-manager.js
CHANGED
|
@@ -257,7 +257,7 @@ export class WSManager {
|
|
|
257
257
|
/**
|
|
258
258
|
* Ogni connessione DEVE identificarsi col primo messaggio:
|
|
259
259
|
* - { type: 'ext_init', token? } → estensione Chrome (Origin chrome-extension:// obbligatorio)
|
|
260
|
-
* - { type: 'relay_init' } → relay client (solo loopback)
|
|
260
|
+
* - { type: 'relay_init' } → relay client (solo loopback, senza Origin)
|
|
261
261
|
* Connessioni mute o non valide vengono terminate.
|
|
262
262
|
*/
|
|
263
263
|
_handleNewConnection(ws, req) {
|
|
@@ -292,6 +292,14 @@ export class WSManager {
|
|
|
292
292
|
ws.terminate();
|
|
293
293
|
return;
|
|
294
294
|
}
|
|
295
|
+
// I relay legittimi (server e CLI, ws di Node) non mandano Origin; un
|
|
296
|
+
// browser lo manda sempre. Senza questo controllo una pagina web
|
|
297
|
+
// aperta sullo stesso computer diventava un relay e pilotava Chrome.
|
|
298
|
+
if (origin) {
|
|
299
|
+
console.error(`[chrome-bridge] relay_init with origin "${origin}" — rejected`);
|
|
300
|
+
ws.terminate();
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
295
303
|
// Il token proteggeva solo ext_init: un relay locale non autenticato
|
|
296
304
|
// aggirava interamente il segreto condiviso.
|
|
297
305
|
if (this.token && msg.token !== this.token) {
|