smooth-operator-mcp 3.2.0 → 3.3.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 +80 -82
- package/dist/smooth-operator.mjs +4548 -4635
- package/dist/smooth-operator.mjs.map +3 -3
- package/docs/STEALTH-GUIDE.md +29 -21
- package/docs/architecture.md +64 -0
- package/docs/config.md +54 -0
- package/docs/harnesses.md +1 -1
- package/docs/mcp-server.md +54 -36
- package/docs/security.md +58 -0
- package/docs/tools.md +90 -0
- package/package.json +10 -6
package/README.md
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
# SmoothOperator
|
|
2
2
|
|
|
3
|
-
Give your AI a real Chrome. SmoothOperator is a
|
|
3
|
+
Give your AI a real Chrome. SmoothOperator is a production MCP server for
|
|
4
|
+
secure browser control. Your harness supplies the reasoning; SmoothOperator
|
|
5
|
+
handles navigation, interaction, extraction, and browser lifecycle. No model
|
|
6
|
+
keys. No hidden planner.
|
|
4
7
|
|
|
5
|
-
## Install
|
|
6
|
-
|
|
7
|
-
Choose your harness, add SmoothOperator directly to it, and restart the harness.
|
|
8
|
+
## Install
|
|
8
9
|
|
|
9
10
|
**From npm** (`smooth-operator-mcp`):
|
|
10
|
-
|
|
11
|
+
|
|
12
|
+
```sh
|
|
11
13
|
npm install -g smooth-operator-mcp && smooth-operator install opencode
|
|
12
14
|
npm install -g smooth-operator-mcp && smooth-operator install claude-code
|
|
13
15
|
npm install -g smooth-operator-mcp && smooth-operator install copilot
|
|
@@ -17,90 +19,86 @@ npm install -g smooth-operator-mcp && smooth-operator install vscode
|
|
|
17
19
|
npm install -g smooth-operator-mcp && smooth-operator install cursor
|
|
18
20
|
npm install -g smooth-operator-mcp && smooth-operator install windsurf
|
|
19
21
|
npm install -g smooth-operator-mcp && smooth-operator install claude-desktop
|
|
20
|
-
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
The plain-npm name `smooth-operator` is an unrelated library. Do **not** run
|
|
25
|
+
`npm install -g smooth-operator`.
|
|
21
26
|
|
|
22
|
-
|
|
23
|
-
> Do NOT use `npm install -g smooth-operator`.
|
|
27
|
+
From GitHub:
|
|
24
28
|
|
|
25
|
-
|
|
26
|
-
~~~sh
|
|
29
|
+
```sh
|
|
27
30
|
npm install -g github:Gitshop77/Smooth-Operator && smooth-operator install opencode
|
|
28
|
-
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
The wizard asks exactly three questions: browser profile ownership, browser
|
|
34
|
+
display, and the Chromium executable. `smooth-operator install` without a
|
|
35
|
+
harness chooses one on a TTY (piped/CI prints usage). `--yes` applies
|
|
36
|
+
recommended defaults: `smooth-operator install opencode --yes`.
|
|
37
|
+
|
|
38
|
+
Managed mode owns one private persistent profile
|
|
39
|
+
(`~/.smooth-operator/browser`). Wizard Personal Chrome launches a dedicated
|
|
40
|
+
debugging profile on port `9222` and derives `browserUrl`; it does not take
|
|
41
|
+
over daily Chrome. Connect mode attaches to the configured `browserURL` /
|
|
42
|
+
`wsEndpoint`.
|
|
29
43
|
|
|
30
|
-
|
|
31
|
-
browser display, and the Chromium executable. Run `smooth-operator install`
|
|
32
|
-
without a harness to choose one interactively (TTY only; piped and CI runs
|
|
33
|
-
print usage and exit). `--yes` applies the recommended defaults, so give it a
|
|
34
|
-
target: `smooth-operator install opencode --yes`. Personal Chrome mode launches
|
|
35
|
-
a dedicated debugging profile on port `9222` and derives `browserUrl`
|
|
36
|
-
automatically. Managed mode owns one private persistent profile; connected mode
|
|
37
|
-
launches and attaches to a dedicated debugging profile and does not claim
|
|
38
|
-
ownership of an operator's daily browser.
|
|
44
|
+
Requires Node.js 22.23.2+ and an installed Chromium-based browser.
|
|
39
45
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
46
|
+
```sh
|
|
47
|
+
smooth-operator --help
|
|
48
|
+
smooth-operator doctor
|
|
49
|
+
```
|
|
43
50
|
|
|
44
|
-
|
|
51
|
+
After restart, ask the harness to run `server_health` and `browser_doctor`.
|
|
52
|
+
`server_health` reports `ok` when ready, `degraded` when recovery or the
|
|
53
|
+
profile lease is needed, and `shutting_down` during teardown. An idle lazy
|
|
54
|
+
browser is healthy.
|
|
45
55
|
|
|
46
|
-
|
|
47
|
-
|
|
56
|
+
Local check: `npm run verify` (lint, typecheck, coverage tests, knip, package
|
|
57
|
+
smoke/build). `npm test` and coverage exclude `tests/browser-live.test.ts`.
|
|
58
|
+
Live Chrome is only `npm run test:browser:live`.
|
|
48
59
|
|
|
49
60
|
## What it does
|
|
50
61
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
before JSON parsing. There is no arbitrary CDP or host-code tool; page
|
|
95
|
-
evaluation remains an explicit page capability.
|
|
96
|
-
|
|
97
|
-
## Why
|
|
98
|
-
|
|
99
|
-
- Zero setup — managed, headed, persistent browser by default
|
|
100
|
-
- Secure by default — domain and file policy, bounded outputs, redaction, and explicit safety boundaries
|
|
101
|
-
- Reliable — private profiles, stale-reference recovery, reconnect handling, and structured errors
|
|
102
|
-
- Flexible — stdio by default, Streamable HTTP when you need it, plus connect and disabled modes
|
|
103
|
-
|
|
104
|
-
For HTTP deployments, the configured MCP path also has a bounded readiness
|
|
105
|
-
endpoint at `<path>/healthz` (normally `/mcp/healthz`), subject to the same
|
|
106
|
-
HTTP authentication policy as the MCP endpoint.
|
|
62
|
+
The MCP registry exposes **57 public tools**. Each listed name does one job.
|
|
63
|
+
Navigate and interact; inspect with snapshots, accessibility, HTML, styles,
|
|
64
|
+
and bounded extraction; work across tabs, frames, popups, shadow DOM,
|
|
65
|
+
dialogs, cookies, storage, downloads, screenshots, and PDFs; search the web
|
|
66
|
+
through bounded DuckDuckGo retrieval; search a metadata-only network journal;
|
|
67
|
+
block page-scoped subresources; inspect elements without scripts, event
|
|
68
|
+
source, or form values; upload up to 20 files from allowed roots (50 MiB
|
|
69
|
+
each, 100 MiB aggregate). Cookie values are omitted from reads. Operations:
|
|
70
|
+
cookies `get`/`set`/`delete`; storage and resource-blocking `get`/`set`/`clear`;
|
|
71
|
+
network and console logs `enable`/`disable`/`read`/`clear`/`read_and_clear`;
|
|
72
|
+
dialogs `get_text`/`accept`/`dismiss`/`send_keys`.
|
|
73
|
+
|
|
74
|
+
Preferred loop: `browser_navigate` / `browser_snapshot` → one mutation →
|
|
75
|
+
verify. Element actions accept exactly one of `target`, `ref`
|
|
76
|
+
(`e5`/`ref:e5`), CSS `selector`, or zero-based `index`. `browser_click`,
|
|
77
|
+
`browser_move`, and `browser_press_and_hold` also accept
|
|
78
|
+
`coordinateX`/`coordinateY` (hold also start/end coordinates or a path).
|
|
79
|
+
Set `includeSnapshot: true` to combine a mutation with its trailing snapshot.
|
|
80
|
+
|
|
81
|
+
Canonical tools: `browser_tabs`, `browser_snapshot`, `browser_input`,
|
|
82
|
+
`browser_back`, `browser_close`, `browser_extract`, `browser_wait`,
|
|
83
|
+
`browser_network_log`, `browser_challenge`, `browser_batch`. Compatibility
|
|
84
|
+
aliases are not listed.
|
|
85
|
+
|
|
86
|
+
`browser_solve_challenge` returns fresh bounded evidence. The connected AI
|
|
87
|
+
uses ordinary browser actions until a fresh classification reports the
|
|
88
|
+
challenge **absent** or the attempt budget is exhausted. Human handoff
|
|
89
|
+
(`browser_wait_for_human`) is an explicit last option. There is no captcha
|
|
90
|
+
solver. Identity stays native: launch args do not fabricate UA,
|
|
91
|
+
platform, WebGL, canvas, client hints, or `navigator.webdriver`.
|
|
92
|
+
|
|
93
|
+
HTTP deployments expose `<path>/healthz` (normally `/mcp/healthz`) with the
|
|
94
|
+
same Host, Origin, and bearer policy as `/mcp`.
|
|
95
|
+
|
|
96
|
+
## Docs
|
|
97
|
+
|
|
98
|
+
- [Architecture](docs/architecture.md)
|
|
99
|
+
- [Security](docs/security.md)
|
|
100
|
+
- [Tools](docs/tools.md)
|
|
101
|
+
- [Config](docs/config.md)
|
|
102
|
+
- [Harnesses](docs/harnesses.md)
|
|
103
|
+
- [Browser compatibility](docs/STEALTH-GUIDE.md)
|
|
104
|
+
- [MCP server operations](docs/mcp-server.md)
|