@comecaramelos/dsh-chrome-mcp 0.0.1 → 1.0.0
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 +22 -78
- package/assets/dsh-chrome-mcp-social.png +0 -0
- package/assets/icon.svg +71 -0
- package/assets/prelaunch-windows-chrome.html +277 -0
- package/lib/client.js +1433 -568
- package/lib/client.js.map +7 -0
- package/lib/host/apply.d.ts +3 -0
- package/lib/host/apply.d.ts.map +1 -0
- package/lib/host/apply.js +31 -0
- package/lib/host/apply.js.map +1 -0
- package/lib/host/bridge.d.ts +65 -0
- package/lib/host/bridge.d.ts.map +1 -0
- package/lib/host/bridge.js +176 -0
- package/lib/host/bridge.js.map +1 -0
- package/lib/host/catalog.d.ts +31 -0
- package/lib/host/catalog.d.ts.map +1 -0
- package/lib/host/catalog.js +92 -0
- package/lib/host/catalog.js.map +1 -0
- package/lib/host/constants.d.ts +229 -0
- package/lib/host/constants.d.ts.map +1 -0
- package/lib/host/constants.js +242 -0
- package/lib/host/constants.js.map +1 -0
- package/lib/host/controller/bridge-run.d.ts +38 -0
- package/lib/host/controller/bridge-run.d.ts.map +1 -0
- package/lib/host/controller/bridge-run.js +69 -0
- package/lib/host/controller/bridge-run.js.map +1 -0
- package/lib/host/controller/captures.d.ts +22 -0
- package/lib/host/controller/captures.d.ts.map +1 -0
- package/lib/host/controller/captures.js +60 -0
- package/lib/host/controller/captures.js.map +1 -0
- package/lib/host/controller/commits.d.ts +4 -0
- package/lib/host/controller/commits.d.ts.map +1 -0
- package/lib/host/controller/commits.js +75 -0
- package/lib/host/controller/commits.js.map +1 -0
- package/lib/host/controller/controller.d.ts +40 -0
- package/lib/host/controller/controller.d.ts.map +1 -0
- package/lib/host/controller/controller.js +167 -0
- package/lib/host/controller/controller.js.map +1 -0
- package/lib/host/controller/index.d.ts +26 -0
- package/lib/host/controller/index.d.ts.map +1 -0
- package/lib/host/controller/index.js +25 -0
- package/lib/host/controller/index.js.map +1 -0
- package/lib/host/controller/notes.d.ts +26 -0
- package/lib/host/controller/notes.d.ts.map +1 -0
- package/lib/host/controller/notes.js +49 -0
- package/lib/host/controller/notes.js.map +1 -0
- package/lib/host/controller/persist.d.ts +9 -0
- package/lib/host/controller/persist.d.ts.map +1 -0
- package/lib/host/controller/persist.js +51 -0
- package/lib/host/controller/persist.js.map +1 -0
- package/lib/host/controller/runs.d.ts +56 -0
- package/lib/host/controller/runs.d.ts.map +1 -0
- package/lib/host/controller/runs.js +211 -0
- package/lib/host/controller/runs.js.map +1 -0
- package/lib/host/controller/state.d.ts +70 -0
- package/lib/host/controller/state.d.ts.map +1 -0
- package/lib/host/controller/state.js +2 -0
- package/lib/host/controller/state.js.map +1 -0
- package/lib/host/controller/windows-run.d.ts +9 -0
- package/lib/host/controller/windows-run.d.ts.map +1 -0
- package/lib/host/controller/windows-run.js +78 -0
- package/lib/host/controller/windows-run.js.map +1 -0
- package/lib/host/discovery/candidates.d.ts +37 -0
- package/lib/host/discovery/candidates.d.ts.map +1 -0
- package/lib/host/discovery/candidates.js +56 -0
- package/lib/host/discovery/candidates.js.map +1 -0
- package/lib/host/discovery/index.d.ts +18 -0
- package/lib/host/discovery/index.d.ts.map +1 -0
- package/lib/host/discovery/index.js +18 -0
- package/lib/host/discovery/index.js.map +1 -0
- package/lib/host/discovery/probe.d.ts +18 -0
- package/lib/host/discovery/probe.d.ts.map +1 -0
- package/lib/host/discovery/probe.js +97 -0
- package/lib/host/discovery/probe.js.map +1 -0
- package/lib/host/discovery/scan.d.ts +67 -0
- package/lib/host/discovery/scan.d.ts.map +1 -0
- package/lib/host/discovery/scan.js +169 -0
- package/lib/host/discovery/scan.js.map +1 -0
- package/lib/host/flags.d.ts +42 -0
- package/lib/host/flags.d.ts.map +1 -0
- package/lib/host/flags.js +118 -0
- package/lib/host/flags.js.map +1 -0
- package/lib/host/platform.d.ts +38 -0
- package/lib/host/platform.d.ts.map +1 -0
- package/lib/host/platform.js +64 -0
- package/lib/host/platform.js.map +1 -0
- package/lib/host/plugin-meta.d.ts +12 -0
- package/lib/host/plugin-meta.d.ts.map +1 -0
- package/lib/host/plugin-meta.js +12 -0
- package/lib/host/plugin-meta.js.map +1 -0
- package/lib/host/schema.d.ts +307 -0
- package/lib/host/schema.d.ts.map +1 -0
- package/lib/host/schema.js +171 -0
- package/lib/host/schema.js.map +1 -0
- package/lib/host/settings.d.ts +9 -0
- package/lib/host/settings.d.ts.map +1 -0
- package/lib/host/settings.js +70 -0
- package/lib/host/settings.js.map +1 -0
- package/lib/host/status.d.ts +28 -0
- package/lib/host/status.d.ts.map +1 -0
- package/lib/host/status.js +60 -0
- package/lib/host/status.js.map +1 -0
- package/lib/host/tool.d.ts +59 -0
- package/lib/host/tool.d.ts.map +1 -0
- package/lib/host/tool.js +51 -0
- package/lib/host/tool.js.map +1 -0
- package/lib/host/types/config.d.ts +47 -0
- package/lib/host/types/config.d.ts.map +1 -0
- package/lib/host/types/config.js +2 -0
- package/lib/host/types/config.js.map +1 -0
- package/lib/host/types/executable.d.ts +30 -0
- package/lib/host/types/executable.d.ts.map +1 -0
- package/lib/host/types/executable.js +9 -0
- package/lib/host/types/executable.js.map +1 -0
- package/lib/host/types/index.d.ts +23 -0
- package/lib/host/types/index.d.ts.map +1 -0
- package/lib/host/types/index.js +2 -0
- package/lib/host/types/index.js.map +1 -0
- package/lib/host/types/plugin.d.ts +38 -0
- package/lib/host/types/plugin.d.ts.map +1 -0
- package/lib/host/types/plugin.js +10 -0
- package/lib/host/types/plugin.js.map +1 -0
- package/lib/host/types/settings.d.ts +127 -0
- package/lib/host/types/settings.d.ts.map +1 -0
- package/lib/host/types/settings.js +2 -0
- package/lib/host/types/settings.js.map +1 -0
- package/lib/host/types/stderr.d.ts +53 -0
- package/lib/host/types/stderr.d.ts.map +1 -0
- package/lib/host/types/stderr.js +9 -0
- package/lib/host/types/stderr.js.map +1 -0
- package/lib/host/types/windows.d.ts +39 -0
- package/lib/host/types/windows.d.ts.map +1 -0
- package/lib/host/types/windows.js +9 -0
- package/lib/host/types/windows.js.map +1 -0
- package/lib/host/values.d.ts +89 -0
- package/lib/host/values.d.ts.map +1 -0
- package/lib/host/values.js +212 -0
- package/lib/host/values.js.map +1 -0
- package/lib/host/windows/connect-flags.d.ts +16 -0
- package/lib/host/windows/connect-flags.d.ts.map +1 -0
- package/lib/host/windows/connect-flags.js +67 -0
- package/lib/host/windows/connect-flags.js.map +1 -0
- package/lib/host/windows/index.d.ts +31 -0
- package/lib/host/windows/index.d.ts.map +1 -0
- package/lib/host/windows/index.js +30 -0
- package/lib/host/windows/index.js.map +1 -0
- package/lib/host/windows/landing.d.ts +47 -0
- package/lib/host/windows/landing.d.ts.map +1 -0
- package/lib/host/windows/landing.js +174 -0
- package/lib/host/windows/landing.js.map +1 -0
- package/lib/host/windows/link.d.ts +11 -0
- package/lib/host/windows/link.d.ts.map +1 -0
- package/lib/host/windows/link.js +52 -0
- package/lib/host/windows/link.js.map +1 -0
- package/lib/host/windows/paths.d.ts +43 -0
- package/lib/host/windows/paths.d.ts.map +1 -0
- package/lib/host/windows/paths.js +121 -0
- package/lib/host/windows/paths.js.map +1 -0
- package/lib/host/windows/run.d.ts +74 -0
- package/lib/host/windows/run.d.ts.map +1 -0
- package/lib/host/windows/run.js +210 -0
- package/lib/host/windows/run.js.map +1 -0
- package/lib/host/windows/spawn.d.ts +22 -0
- package/lib/host/windows/spawn.d.ts.map +1 -0
- package/lib/host/windows/spawn.js +73 -0
- package/lib/host/windows/spawn.js.map +1 -0
- package/lib/index.d.ts +86 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +72 -625
- package/lib/index.js.map +1 -0
- package/package.json +26 -4
package/README.md
CHANGED
|
@@ -1,78 +1,47 @@
|
|
|
1
1
|
# @comecaramelos/dsh-chrome-mcp
|
|
2
2
|
|
|
3
|
-
DSH
|
|
4
|
-
([`chrome-devtools-mcp`](https://github.com/ChromeDevTools/chrome-devtools-mcp),
|
|
5
|
-
launched as `npx -y chrome-devtools-mcp@latest [extraFlags]`) as an MCP
|
|
6
|
-
server, with an **extra-flags editor in the Web GUI** — instead of hardcoding
|
|
7
|
-
`extraFlags` in the config row.
|
|
8
|
-
|
|
9
|
-
Architecture notes, hard constraints and internals: see `AGENTS.md`.
|
|
10
|
-
|
|
11
|
-
## Prerequisite: Google Chrome must be installed
|
|
12
|
-
|
|
13
|
-
The upstream server does **not** download Chrome — it drives the Google Chrome
|
|
14
|
-
already installed on the machine (<https://www.google.com/chrome/?platform=linux>).
|
|
15
|
-
The standard system locations are auto-discovered; pin a non-standard install
|
|
16
|
-
with `chromePath` (one executable) or `chromePaths` (candidate list). When
|
|
17
|
-
nothing is found, the card's status dot turns red with "Chrome executable not
|
|
18
|
-
found".
|
|
19
|
-
|
|
20
|
-
**WSL users:** install the Chrome for **Linux inside the distro** — the
|
|
21
|
-
Windows-side `chrome.exe` cannot be driven across the WSL boundary (see
|
|
22
|
-
"Running under WSL").
|
|
3
|
+
Connects DSH to [Chrome DevTools MCP](https://github.com/ChromeDevTools/chrome-devtools-mcp), including Windows Chrome from WSL.
|
|
23
4
|
|
|
24
5
|
## Install
|
|
25
6
|
|
|
26
|
-
|
|
7
|
+
[Google Chrome](https://www.google.com/chrome/) must be installed: the MCP server does not download it.
|
|
27
8
|
|
|
28
9
|
```sh
|
|
29
10
|
dsh plugin --profile web add @comecaramelos/dsh-chrome-mcp
|
|
30
11
|
```
|
|
31
12
|
|
|
32
|
-
|
|
33
|
-
the bridge row for you (bundle layers apply before the profile's own
|
|
34
|
-
`cordis.patch.yml`, and a later row with the same `id` wins):
|
|
13
|
+
The plugin includes `--no-usage-statistics` and `--no-performance-crux` by default. Use the executable picker to select a browser found on your host.
|
|
35
14
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
name: '@comecaramelos/dsh-chrome-mcp'
|
|
40
|
-
config:
|
|
41
|
-
serverName: chrome
|
|
42
|
-
```
|
|
15
|
+
## Windows Chrome from WSL
|
|
16
|
+
|
|
17
|
+
Requirements:
|
|
43
18
|
|
|
44
|
-
The
|
|
45
|
-
`--no-usage-statistics`, `--no-performance-crux`). Set `chromePath` /
|
|
46
|
-
`chromePaths` on the row only if the automatic discovery is not enough — the
|
|
47
|
-
Settings card edits `extraFlags` live.
|
|
48
|
-
|
|
49
|
-
Overriding the bundle row: keep your own row in
|
|
50
|
-
`$DSH_HOME/profiles/web/cordis.patch.yml` with `id: mcp-chrome`. It replaces
|
|
51
|
-
the bundle row completely (full-config replacement, no deep merge) — e.g.
|
|
52
|
-
switching a machine-wide bridge to connect mode:
|
|
53
|
-
|
|
54
|
-
```yaml
|
|
55
|
-
- id: mcp-chrome
|
|
56
|
-
name: '@comecaramelos/dsh-chrome-mcp'
|
|
57
|
-
config:
|
|
58
|
-
serverName: chrome
|
|
59
|
-
extraFlags: ['--browserUrl=http://127.0.0.1:9222']
|
|
19
|
+
The user only needs to add the following line to `.wslconfig`:
|
|
60
20
|
```
|
|
21
|
+
networkingMode=mirrored
|
|
22
|
+
```
|
|
23
|
+
The required Chrome flags are managed by the **Flags WSL** button.
|
|
24
|
+
|
|
25
|
+
A windows executable activates the connect-mode bridge. The executable selector displays `connect mode` instead of probing a local executable.
|
|
26
|
+
|
|
27
|
+
The bridge uses the first available port and gets a dedicated profile (`.chrome-<port>`).
|
|
61
28
|
|
|
62
|
-
|
|
63
|
-
|
|
29
|
+
## Manual installation
|
|
30
|
+
|
|
31
|
+
Replace `/path/to/dsh-chrome-mcp` with your local checkout:
|
|
64
32
|
|
|
65
33
|
```sh
|
|
66
34
|
mkdir -p ~/.dsh/profiles/web/node_modules/@comecaramelos
|
|
67
35
|
ln -s /path/to/dsh-chrome-mcp ~/.dsh/profiles/web/node_modules/@comecaramelos/dsh-chrome-mcp
|
|
68
36
|
```
|
|
69
37
|
|
|
70
|
-
|
|
71
|
-
(`~/.dsh/profiles/web/package.json`) alongside the other bundles — this is
|
|
72
|
-
exactly what `dsh plugin add` records:
|
|
38
|
+
Add the dependency and bundle to `~/.dsh/profiles/web/package.json`, preserving existing entries:
|
|
73
39
|
|
|
74
40
|
```json
|
|
75
41
|
{
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"@comecaramelos/dsh-chrome-mcp": "link:/path/to/dsh-chrome-mcp"
|
|
44
|
+
},
|
|
76
45
|
"dsh": {
|
|
77
46
|
"profile": {
|
|
78
47
|
"bundles": [
|
|
@@ -85,31 +54,6 @@ exactly what `dsh plugin add` records:
|
|
|
85
54
|
}
|
|
86
55
|
```
|
|
87
56
|
|
|
88
|
-
Do **not** add a `dependencies` entry for the checkout here: a `file:` spec
|
|
89
|
-
makes the Windows-side pnpm re-link the package and fail with `
|
|
90
|
-
ERR_PNPM_PACKAGE_MANAGER_SYMLINK_FAILED`. With only the bundle entry, the
|
|
91
|
-
`mcp-chrome` row above applies unchanged.
|
|
92
|
-
|
|
93
|
-
## Why this over the default config
|
|
94
|
-
|
|
95
|
-
- **Extra-flags editor in Settings** — one flag per line, saved per user;
|
|
96
|
-
invalid entries are rejected by the host and shown on the card. Defaults:
|
|
97
|
-
`--no-usage-statistics`, `--no-performance-crux`.
|
|
98
|
-
- **Hot reconnect** — saving flags re-launches the bridge in place; no
|
|
99
|
-
restart needed.
|
|
100
|
-
- **Status dot** — the card's single error surface: a red dot whose tooltip
|
|
101
|
-
holds the full last error (missing executable, bridge connection failure,
|
|
102
|
-
failed browser tool call). It clears itself once the bridge is healthy
|
|
103
|
-
again, and lights up on a Chrome-less machine at startup without any user
|
|
104
|
-
action.
|
|
105
|
-
- **Chrome version + Re-check** — the last discovered version line, plus a
|
|
106
|
-
button to re-run the executable probe / discovery.
|
|
107
|
-
- **Configuration guide** — the upstream docs message with its link:
|
|
108
|
-
[configuration](https://github.com/ChromeDevTools/chrome-devtools-mcp/blob/main/docs/configuration.md).
|
|
109
|
-
- **Flags precedence**: UI selection > `DSH_CHROME_MCP_FLAGS` env var >
|
|
110
|
-
row config `extraFlags` > defaults. Seed a machine default via env,
|
|
111
|
-
switch per-run from the UI.
|
|
112
|
-
|
|
113
57
|
---
|
|
114
58
|
|
|
115
|
-
[
|
|
59
|
+
[Contributing](CONTRIBUTING.md) · [License](LICENSE.md)
|
|
Binary file
|
package/assets/icon.svg
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg"
|
|
2
|
+
viewBox="0 0 410 393"
|
|
3
|
+
fill="none"
|
|
4
|
+
role="img"
|
|
5
|
+
aria-labelledby="title">
|
|
6
|
+
<title id="title">DeepSeek Chromium</title>
|
|
7
|
+
|
|
8
|
+
<style>
|
|
9
|
+
.head { fill: #1D5CCC; }
|
|
10
|
+
.body, .core { fill: #3B8EF8; }
|
|
11
|
+
.belly { fill: #86C7FA; }
|
|
12
|
+
|
|
13
|
+
@media (prefers-color-scheme: dark) {
|
|
14
|
+
.head { fill: #427CE0; }
|
|
15
|
+
.body, .core { fill: #579FFF; }
|
|
16
|
+
.belly { fill: #9DD4FF; }
|
|
17
|
+
}
|
|
18
|
+
</style>
|
|
19
|
+
|
|
20
|
+
<defs>
|
|
21
|
+
<mask id="eye-cutout"
|
|
22
|
+
maskUnits="userSpaceOnUse"
|
|
23
|
+
x="0" y="0" width="410" height="393">
|
|
24
|
+
<rect width="410" height="393" fill="white"/>
|
|
25
|
+
<circle cx="62" cy="224" r="10.7" fill="black"/>
|
|
26
|
+
</mask>
|
|
27
|
+
</defs>
|
|
28
|
+
|
|
29
|
+
<!-- Cabeza y segmento superior -->
|
|
30
|
+
<path class="head"
|
|
31
|
+
mask="url(#eye-cutout)"
|
|
32
|
+
d="M16 231
|
|
33
|
+
C12 219 28 187 53 163
|
|
34
|
+
C82 135 116 115 147 109
|
|
35
|
+
C189 101 219 115 259 152
|
|
36
|
+
C229 154 189 158 162 168
|
|
37
|
+
C135 178 118 195 112 217
|
|
38
|
+
C106 238 112 260 125 276
|
|
39
|
+
C88 272 48 258 20 238
|
|
40
|
+
C17 236 16 234 16 231Z"/>
|
|
41
|
+
|
|
42
|
+
<!-- Cuerpo y cola -->
|
|
43
|
+
<path class="body"
|
|
44
|
+
d="M184 174
|
|
45
|
+
C211 165 239 166 260 161
|
|
46
|
+
C294 154 315 137 321 115
|
|
47
|
+
C323 108 321 107 314 105
|
|
48
|
+
C282 96 263 68 260 38
|
|
49
|
+
C259 34 260 33 264 36
|
|
50
|
+
C282 48 303 39 320 54
|
|
51
|
+
C325 57 329 61 332 65
|
|
52
|
+
C343 36 374 45 391 24
|
|
53
|
+
C393 21 395 21 395 27
|
|
54
|
+
C402 63 387 89 359 104
|
|
55
|
+
C353 107 351 109 353 117
|
|
56
|
+
C364 202 317 305 239 337
|
|
57
|
+
C222 344 204 348 188 351
|
|
58
|
+
C213 320 231 282 233 246
|
|
59
|
+
C236 211 217 184 184 174Z"/>
|
|
60
|
+
|
|
61
|
+
<!-- Segmento inferior -->
|
|
62
|
+
<path class="belly"
|
|
63
|
+
d="M19 248
|
|
64
|
+
C54 269 92 281 127 284
|
|
65
|
+
C154 302 186 300 213 277
|
|
66
|
+
C204 305 189 333 171 353
|
|
67
|
+
C104 355 41 318 19 248Z"/>
|
|
68
|
+
|
|
69
|
+
<!-- Núcleo circular -->
|
|
70
|
+
<circle class="core" cx="171" cy="235" r="49"/>
|
|
71
|
+
</svg>
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20410%20393%22%20fill=%22none%22%20role=%22img%22%20aria-labelledby=%22title%22%3E%3Ctitle%20id=%22title%22%3EDeepSeek%20Chromium%3C/title%3E%3Cstyle%3E.head%20%7B%20fill:%20%231D5CCC;%20%7D%20.body,%20.core%20%7B%20fill:%20%233B8EF8;%20%7D%20.belly%20%7B%20fill:%20%2386C7FA;%20%7D%20%40media%20%28prefers-color-scheme:%20dark%29%20%7B%20.head%20%7B%20fill:%20%23427CE0;%20%7D%20.body,%20.core%20%7B%20fill:%20%23579FFF;%20%7D%20.belly%20%7B%20fill:%20%239DD4FF;%20%7D%20%7D%3C/style%3E%3Cdefs%3E%3Cmask%20id=%22eye-cutout%22%20maskUnits=%22userSpaceOnUse%22%20x=%220%22%20y=%220%22%20width=%22410%22%20height=%22393%22%3E%3Crect%20width=%22410%22%20height=%22393%22%20fill=%22white%22/%3E%3Ccircle%20cx=%2262%22%20cy=%22224%22%20r=%2210.7%22%20fill=%22black%22/%3E%3C/mask%3E%3C/defs%3E%3C%21--%20Cabeza%20y%20segmento%20superior%20--%3E%3Cpath%20class=%22head%22%20mask=%22url%28%23eye-cutout%29%22%20d=%22M16%20231%20C12%20219%2028%20187%2053%20163%20C82%20135%20116%20115%20147%20109%20C189%20101%20219%20115%20259%20152%20C229%20154%20189%20158%20162%20168%20C135%20178%20118%20195%20112%20217%20C106%20238%20112%20260%20125%20276%20C88%20272%2048%20258%2020%20238%20C17%20236%2016%20234%2016%20231Z%22/%3E%3C%21--%20Cuerpo%20y%20cola%20--%3E%3Cpath%20class=%22body%22%20d=%22M184%20174%20C211%20165%20239%20166%20260%20161%20C294%20154%20315%20137%20321%20115%20C323%20108%20321%20107%20314%20105%20C282%2096%20263%2068%20260%2038%20C259%2034%20260%2033%20264%2036%20C282%2048%20303%2039%20320%2054%20C325%2057%20329%2061%20332%2065%20C343%2036%20374%2045%20391%2024%20C393%2021%20395%2021%20395%2027%20C402%2063%20387%2089%20359%20104%20C353%20107%20351%20109%20353%20117%20C364%20202%20317%20305%20239%20337%20C222%20344%20204%20348%20188%20351%20C213%20320%20231%20282%20233%20246%20C236%20211%20217%20184%20184%20174Z%22/%3E%3C%21--%20Segmento%20inferior%20--%3E%3Cpath%20class=%22belly%22%20d=%22M19%20248%20C54%20269%2092%20281%20127%20284%20C154%20302%20186%20300%20213%20277%20C204%20305%20189%20333%20171%20353%20C104%20355%2041%20318%2019%20248Z%22/%3E%3C%21--%20N%C3%BAcleo%20circular%20--%3E%3Ccircle%20class=%22core%22%20cx=%22171%22%20cy=%22235%22%20r=%2249%22/%3E%3C/svg%3E" />
|
|
7
|
+
<title>DSH Chrome MCP bridge</title>
|
|
8
|
+
<style>
|
|
9
|
+
:root {
|
|
10
|
+
color-scheme: light dark;
|
|
11
|
+
--bg: #f5f6f8;
|
|
12
|
+
--card: #ffffff;
|
|
13
|
+
--ink: #1f2328;
|
|
14
|
+
--muted: #5b6572;
|
|
15
|
+
--line: #d7dbe1;
|
|
16
|
+
--accent: #2f6f4f;
|
|
17
|
+
--code: #f2f4f6;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@media (prefers-color-scheme: dark) {
|
|
21
|
+
:root {
|
|
22
|
+
--bg: #16191d;
|
|
23
|
+
--card: #1f2328;
|
|
24
|
+
--ink: #e8eaed;
|
|
25
|
+
--muted: #a8b1bd;
|
|
26
|
+
--line: #343a41;
|
|
27
|
+
--accent: #6fd39a;
|
|
28
|
+
--code: #272c32;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
* {
|
|
33
|
+
box-sizing: border-box;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
body {
|
|
37
|
+
margin: 0;
|
|
38
|
+
padding: 2rem 1rem;
|
|
39
|
+
background: var(--bg);
|
|
40
|
+
color: var(--ink);
|
|
41
|
+
font-family: system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, sans-serif;
|
|
42
|
+
font-size: 15px;
|
|
43
|
+
line-height: 1.55;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
main {
|
|
47
|
+
max-width: 46rem;
|
|
48
|
+
margin: 0 auto;
|
|
49
|
+
padding: 2rem;
|
|
50
|
+
background: var(--card);
|
|
51
|
+
border: 1px solid var(--line);
|
|
52
|
+
border-radius: 12px;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
header {
|
|
56
|
+
display: flex;
|
|
57
|
+
align-items: flex-start;
|
|
58
|
+
gap: 1rem;
|
|
59
|
+
margin-bottom: 1.5rem;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.mark {
|
|
63
|
+
flex: none;
|
|
64
|
+
display: grid;
|
|
65
|
+
place-items: center;
|
|
66
|
+
width: 3rem;
|
|
67
|
+
height: 3rem;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.mark svg {
|
|
71
|
+
display: block;
|
|
72
|
+
width: 100%;
|
|
73
|
+
height: 100%;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
h1 {
|
|
77
|
+
margin: 0 0 0.35rem;
|
|
78
|
+
font-size: 1.4rem;
|
|
79
|
+
line-height: 1.25;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
h2 {
|
|
83
|
+
margin: 1.75rem 0 0.5rem;
|
|
84
|
+
font-size: 1rem;
|
|
85
|
+
letter-spacing: 0.01em;
|
|
86
|
+
text-transform: uppercase;
|
|
87
|
+
color: var(--muted);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
p {
|
|
91
|
+
margin: 0 0 0.9rem;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
p.lede {
|
|
95
|
+
margin: 0;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.notice {
|
|
99
|
+
margin: 1.5rem 0;
|
|
100
|
+
padding: 0.75rem 1rem;
|
|
101
|
+
border-left: 3px solid var(--accent);
|
|
102
|
+
border-radius: 0 8px 8px 0;
|
|
103
|
+
background: var(--code);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.notice:last-child {
|
|
107
|
+
margin-bottom: 0;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
ul {
|
|
111
|
+
margin: 0 0 1rem;
|
|
112
|
+
padding-left: 1.15rem;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
li {
|
|
116
|
+
margin-bottom: 0.4rem;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
dl {
|
|
120
|
+
display: grid;
|
|
121
|
+
gap: 1rem;
|
|
122
|
+
margin: 0 0 1.5rem;
|
|
123
|
+
padding: 1rem 1.15rem;
|
|
124
|
+
background: var(--code);
|
|
125
|
+
border-radius: 8px;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
dt {
|
|
129
|
+
color: var(--muted);
|
|
130
|
+
font-size: 0.85rem;
|
|
131
|
+
margin-bottom: 0.15rem;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
dd {
|
|
135
|
+
margin: 0;
|
|
136
|
+
overflow-wrap: anywhere;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
code {
|
|
140
|
+
padding: 0.1rem 0.3rem;
|
|
141
|
+
background: var(--code);
|
|
142
|
+
border-radius: 4px;
|
|
143
|
+
font-family: ui-monospace, SFMono-Regular, "Cascadia Mono", Consolas, monospace;
|
|
144
|
+
font-size: 0.88em;
|
|
145
|
+
overflow-wrap: anywhere;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
dd code {
|
|
149
|
+
background: transparent;
|
|
150
|
+
padding: 0;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
a {
|
|
154
|
+
color: var(--accent);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
footer {
|
|
158
|
+
margin-top: 1.75rem;
|
|
159
|
+
padding-top: 1rem;
|
|
160
|
+
border-top: 1px solid var(--line);
|
|
161
|
+
color: var(--muted);
|
|
162
|
+
font-size: 0.85rem;
|
|
163
|
+
}
|
|
164
|
+
</style>
|
|
165
|
+
</head>
|
|
166
|
+
<body>
|
|
167
|
+
<main>
|
|
168
|
+
<header>
|
|
169
|
+
<span class="mark" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 410 393" fill="none">
|
|
170
|
+
<style>
|
|
171
|
+
.head { fill: #1d5ccc; }
|
|
172
|
+
.body, .core { fill: #3b8ef8; }
|
|
173
|
+
.belly { fill: #86c7fa; }
|
|
174
|
+
|
|
175
|
+
@media (prefers-color-scheme: dark) {
|
|
176
|
+
.head { fill: #427ce0; }
|
|
177
|
+
.body, .core { fill: #579fff; }
|
|
178
|
+
.belly { fill: #9dd4ff; }
|
|
179
|
+
}
|
|
180
|
+
</style>
|
|
181
|
+
<defs>
|
|
182
|
+
<mask id="eye-cutout" maskUnits="userSpaceOnUse" x="0" y="0" width="410" height="393">
|
|
183
|
+
<rect width="410" height="393" fill="white" />
|
|
184
|
+
<circle cx="62" cy="224" r="10.7" fill="black" />
|
|
185
|
+
</mask>
|
|
186
|
+
</defs>
|
|
187
|
+
<!-- Cabeza y segmento superior -->
|
|
188
|
+
<path class="head" mask="url(#eye-cutout)" d="M16 231
|
|
189
|
+
C12 219 28 187 53 163
|
|
190
|
+
C82 135 116 115 147 109
|
|
191
|
+
C189 101 219 115 259 152
|
|
192
|
+
C229 154 189 158 162 168
|
|
193
|
+
C135 178 118 195 112 217
|
|
194
|
+
C106 238 112 260 125 276
|
|
195
|
+
C88 272 48 258 20 238
|
|
196
|
+
C17 236 16 234 16 231Z" />
|
|
197
|
+
<!-- Cuerpo y cola -->
|
|
198
|
+
<path class="body" d="M184 174
|
|
199
|
+
C211 165 239 166 260 161
|
|
200
|
+
C294 154 315 137 321 115
|
|
201
|
+
C323 108 321 107 314 105
|
|
202
|
+
C282 96 263 68 260 38
|
|
203
|
+
C259 34 260 33 264 36
|
|
204
|
+
C282 48 303 39 320 54
|
|
205
|
+
C325 57 329 61 332 65
|
|
206
|
+
C343 36 374 45 391 24
|
|
207
|
+
C393 21 395 21 395 27
|
|
208
|
+
C402 63 387 89 359 104
|
|
209
|
+
C353 107 351 109 353 117
|
|
210
|
+
C364 202 317 305 239 337
|
|
211
|
+
C222 344 204 348 188 351
|
|
212
|
+
C213 320 231 282 233 246
|
|
213
|
+
C236 211 217 184 184 174Z" />
|
|
214
|
+
<!-- Segmento inferior -->
|
|
215
|
+
<path class="belly" d="M19 248
|
|
216
|
+
C54 269 92 281 127 284
|
|
217
|
+
C154 302 186 300 213 277
|
|
218
|
+
C204 305 189 333 171 353
|
|
219
|
+
C104 355 41 318 19 248Z" />
|
|
220
|
+
<!-- Núcleo circular -->
|
|
221
|
+
<circle class="core" cx="171" cy="235" r="49" />
|
|
222
|
+
</svg></span>
|
|
223
|
+
<div>
|
|
224
|
+
<h1>This Chrome window is driven by DSH</h1>
|
|
225
|
+
<p class="lede">
|
|
226
|
+
This Chrome window was opened by the
|
|
227
|
+
<a href="https://github.com/ComeCaramelos/dsh-chrome-mcp"><code>@comecaramelos/dsh-chrome-mcp</code></a>
|
|
228
|
+
plugin from DSH, to allow the connection from WSL.
|
|
229
|
+
</p>
|
|
230
|
+
</div>
|
|
231
|
+
</header>
|
|
232
|
+
|
|
233
|
+
<p class="notice" role="note">
|
|
234
|
+
<strong>Keep this window open.</strong> It is not a browsing session you started — closing it drops the debugging
|
|
235
|
+
session, and the agent has to open a new one. The plugin never closes it: closing it is yours to do.
|
|
236
|
+
</p>
|
|
237
|
+
|
|
238
|
+
<h2>Why this window exists</h2>
|
|
239
|
+
<p>
|
|
240
|
+
A plugin running inside DSH on WSL started this browser on the Windows side so an agent can drive it over the
|
|
241
|
+
DevTools debugging protocol. The bridge cannot launch the browser itself: a Windows <code>chrome.exe</code> started
|
|
242
|
+
across the WSL interop boundary cannot carry its debugging pipes, so the only working Windows path is to open the
|
|
243
|
+
window here and have the bridge connect to it.
|
|
244
|
+
</p>
|
|
245
|
+
<p>
|
|
246
|
+
Nothing is browsed, submitted or uploaded on its own — every action comes from a tool call.
|
|
247
|
+
</p>
|
|
248
|
+
|
|
249
|
+
<h2>Session details</h2>
|
|
250
|
+
<dl>
|
|
251
|
+
<div>
|
|
252
|
+
<dt>Connect address</dt>
|
|
253
|
+
<dd><code>{{URL}}</code></dd>
|
|
254
|
+
</div>
|
|
255
|
+
<div>
|
|
256
|
+
<dt>Profile directory</dt>
|
|
257
|
+
<dd><code>{{PROFILE}}</code></dd>
|
|
258
|
+
</div>
|
|
259
|
+
<div>
|
|
260
|
+
<dt>Plugin</dt>
|
|
261
|
+
<dd>
|
|
262
|
+
<a href="https://github.com/ComeCaramelos/dsh-chrome-mcp"><code>@comecaramelos/dsh-chrome-mcp</code></a>
|
|
263
|
+
</dd>
|
|
264
|
+
</div>
|
|
265
|
+
</dl>
|
|
266
|
+
<p>
|
|
267
|
+
The profile directory is a dedicated one created for this run, not your own browser profile: no bookmarks, cookies,
|
|
268
|
+
extensions or history of yours are read by it, and nothing is written to your own profile by this run.
|
|
269
|
+
</p>
|
|
270
|
+
|
|
271
|
+
<footer>
|
|
272
|
+
Opened by <code>@comecaramelos/dsh-chrome-mcp</code> on port {{PORT}} — the plugin never closes this window, so
|
|
273
|
+
closing it is yours to do.
|
|
274
|
+
</footer>
|
|
275
|
+
</main>
|
|
276
|
+
</body>
|
|
277
|
+
</html>
|