@stemado/scout-mcp 1.0.0 → 1.1.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.
Files changed (3) hide show
  1. package/README.md +32 -32
  2. package/index.js +81 -81
  3. package/package.json +29 -29
package/README.md CHANGED
@@ -1,32 +1,32 @@
1
- # scout-mcp-server
2
-
3
- MCP server for browser automation with anti-detection. Scout pages, find elements, interact with websites, and monitor network traffic — from any AI client that supports the [Model Context Protocol](https://modelcontextprotocol.io/).
4
-
5
- Built on [botasaurus-driver](https://github.com/omkarcloud/botasaurus) for automatic fingerprint evasion and stealth browsing.
6
-
7
- ## Quick Start
8
-
9
- ```bash
10
- npx -y scout-mcp-server
11
- ```
12
-
13
- ## Configure Your AI Client
14
-
15
- Add to your MCP server configuration:
16
-
17
- ```json
18
- {
19
- "mcpServers": {
20
- "scout": {
21
- "command": "npx",
22
- "args": ["-y", "scout-mcp-server"]
23
- }
24
- }
25
- }
26
- ```
27
-
28
- Works with Claude Desktop, Cursor, Windsurf, Continue, and any MCP-compatible client.
29
-
30
- **Prerequisites:** Python 3.11+, Google Chrome, and either [uv](https://docs.astral.sh/uv/) (recommended) or [pipx](https://pipx.pypa.io/).
31
-
32
- For full documentation, see the [GitHub repository](https://github.com/stemado/scout-mcp).
1
+ # scout-mcp-server
2
+
3
+ MCP server for browser automation with anti-detection. Scout pages, find elements, interact with websites, and monitor network traffic — from any AI client that supports the [Model Context Protocol](https://modelcontextprotocol.io/).
4
+
5
+ Built on [botasaurus-driver](https://github.com/omkarcloud/botasaurus) for automatic fingerprint evasion and stealth browsing.
6
+
7
+ ## Quick Start
8
+
9
+ ```bash
10
+ npx -y scout-mcp-server
11
+ ```
12
+
13
+ ## Configure Your AI Client
14
+
15
+ Add to your MCP server configuration:
16
+
17
+ ```json
18
+ {
19
+ "mcpServers": {
20
+ "scout": {
21
+ "command": "npx",
22
+ "args": ["-y", "scout-mcp-server"]
23
+ }
24
+ }
25
+ }
26
+ ```
27
+
28
+ Works with Claude Desktop, Cursor, Windsurf, Continue, and any MCP-compatible client.
29
+
30
+ **Prerequisites:** Python 3.11+, Google Chrome, and either [uv](https://docs.astral.sh/uv/) (recommended) or [pipx](https://pipx.pypa.io/).
31
+
32
+ For full documentation, see the [GitHub repository](https://github.com/stemado/scout-mcp).
package/index.js CHANGED
@@ -1,81 +1,81 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- * scout-mcp-server npm launcher
5
- *
6
- * Thin wrapper that launches the Python MCP server.
7
- * Tries uvx first (zero-install), then pipx fallback.
8
- * All stdio is passed through for MCP transport.
9
- *
10
- * Windows compatibility: uses shell:true so Node can execute .cmd/.ps1
11
- * shims (uvx.cmd, pipx.cmd) that package managers install on Windows.
12
- *
13
- * Signal forwarding: SIGTERM/SIGINT are forwarded to the child process
14
- * so the Python server (and Chrome) shut down cleanly when the MCP
15
- * client disconnects.
16
- */
17
-
18
- const { spawn, execSync } = require("child_process");
19
-
20
- const IS_WIN = process.platform === "win32";
21
-
22
- function commandExists(cmd) {
23
- try {
24
- execSync(`${cmd} --version`, { stdio: "ignore", shell: true });
25
- return true;
26
- } catch {
27
- return false;
28
- }
29
- }
30
-
31
- function launch(command, args) {
32
- const child = spawn(command, args, {
33
- stdio: "inherit",
34
- shell: IS_WIN,
35
- windowsHide: true,
36
- });
37
-
38
- // Forward termination signals so the Python server shuts down cleanly.
39
- // Without this, killing the npm process orphans the Python process
40
- // (and any Chrome instances it launched).
41
- function forwardSignal(signal) {
42
- process.on(signal, () => {
43
- child.kill(signal);
44
- });
45
- }
46
- forwardSignal("SIGTERM");
47
- forwardSignal("SIGINT");
48
-
49
- child.on("error", (err) => {
50
- if (err.code === "ENOENT") {
51
- process.stderr.write(
52
- `Error: '${command}' not found. Install uv (https://docs.astral.sh/uv/) and Python 3.11+.\n`
53
- );
54
- process.exit(1);
55
- }
56
- process.stderr.write(`Error: ${err.message}\n`);
57
- process.exit(1);
58
- });
59
-
60
- child.on("exit", (code) => {
61
- process.exit(code ?? 1);
62
- });
63
- }
64
-
65
- // Strategy 1: uvx (zero-install Python runner — preferred)
66
- if (commandExists("uvx")) {
67
- launch("uvx", ["scout-mcp-server"]);
68
- }
69
- // Strategy 2: pipx
70
- else if (commandExists("pipx")) {
71
- launch("pipx", ["run", "scout-mcp-server"]);
72
- }
73
- // No supported launcher found
74
- else {
75
- process.stderr.write(
76
- "Error: Neither uvx nor pipx found.\n" +
77
- "Install uv (recommended): https://docs.astral.sh/uv/\n" +
78
- "Or install pipx: https://pipx.pypa.io/\n"
79
- );
80
- process.exit(1);
81
- }
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * scout-mcp-server npm launcher
5
+ *
6
+ * Thin wrapper that launches the Python MCP server.
7
+ * Tries uvx first (zero-install), then pipx fallback.
8
+ * All stdio is passed through for MCP transport.
9
+ *
10
+ * Windows compatibility: uses shell:true so Node can execute .cmd/.ps1
11
+ * shims (uvx.cmd, pipx.cmd) that package managers install on Windows.
12
+ *
13
+ * Signal forwarding: SIGTERM/SIGINT are forwarded to the child process
14
+ * so the Python server (and Chrome) shut down cleanly when the MCP
15
+ * client disconnects.
16
+ */
17
+
18
+ const { spawn, execSync } = require("child_process");
19
+
20
+ const IS_WIN = process.platform === "win32";
21
+
22
+ function commandExists(cmd) {
23
+ try {
24
+ execSync(`${cmd} --version`, { stdio: "ignore", shell: true });
25
+ return true;
26
+ } catch {
27
+ return false;
28
+ }
29
+ }
30
+
31
+ function launch(command, args) {
32
+ const child = spawn(command, args, {
33
+ stdio: "inherit",
34
+ shell: IS_WIN,
35
+ windowsHide: true,
36
+ });
37
+
38
+ // Forward termination signals so the Python server shuts down cleanly.
39
+ // Without this, killing the npm process orphans the Python process
40
+ // (and any Chrome instances it launched).
41
+ function forwardSignal(signal) {
42
+ process.on(signal, () => {
43
+ child.kill(signal);
44
+ });
45
+ }
46
+ forwardSignal("SIGTERM");
47
+ forwardSignal("SIGINT");
48
+
49
+ child.on("error", (err) => {
50
+ if (err.code === "ENOENT") {
51
+ process.stderr.write(
52
+ `Error: '${command}' not found. Install uv (https://docs.astral.sh/uv/) and Python 3.11+.\n`
53
+ );
54
+ process.exit(1);
55
+ }
56
+ process.stderr.write(`Error: ${err.message}\n`);
57
+ process.exit(1);
58
+ });
59
+
60
+ child.on("exit", (code) => {
61
+ process.exit(code ?? 1);
62
+ });
63
+ }
64
+
65
+ // Strategy 1: uvx (zero-install Python runner — preferred)
66
+ if (commandExists("uvx")) {
67
+ launch("uvx", ["scout-mcp-server"]);
68
+ }
69
+ // Strategy 2: pipx
70
+ else if (commandExists("pipx")) {
71
+ launch("pipx", ["run", "scout-mcp-server"]);
72
+ }
73
+ // No supported launcher found
74
+ else {
75
+ process.stderr.write(
76
+ "Error: Neither uvx nor pipx found.\n" +
77
+ "Install uv (recommended): https://docs.astral.sh/uv/\n" +
78
+ "Or install pipx: https://pipx.pypa.io/\n"
79
+ );
80
+ process.exit(1);
81
+ }
package/package.json CHANGED
@@ -1,29 +1,29 @@
1
- {
2
- "name": "@stemado/scout-mcp",
3
- "version": "1.0.0",
4
- "description": "MCP server for browser automation with anti-detection. Scout pages, find elements, interact with websites, and monitor network traffic.",
5
- "license": "MIT",
6
- "author": "sdoherty",
7
- "repository": {
8
- "type": "git",
9
- "url": "https://github.com/stemado/scout-mcp"
10
- },
11
- "keywords": [
12
- "mcp",
13
- "browser",
14
- "automation",
15
- "anti-detection",
16
- "model-context-protocol",
17
- "botasaurus"
18
- ],
19
- "bin": {
20
- "scout-mcp-server": "./index.js"
21
- },
22
- "files": [
23
- "index.js",
24
- "README.md"
25
- ],
26
- "engines": {
27
- "node": ">=18"
28
- }
29
- }
1
+ {
2
+ "name": "@stemado/scout-mcp",
3
+ "version": "1.1.0",
4
+ "description": "MCP server for browser automation with anti-detection. Scout pages, find elements, interact with websites, and monitor network traffic.",
5
+ "license": "MIT",
6
+ "author": "sdoherty",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/stemado/scout-mcp"
10
+ },
11
+ "keywords": [
12
+ "mcp",
13
+ "browser",
14
+ "automation",
15
+ "anti-detection",
16
+ "model-context-protocol",
17
+ "botasaurus"
18
+ ],
19
+ "bin": {
20
+ "scout-mcp-server": "./index.js"
21
+ },
22
+ "files": [
23
+ "index.js",
24
+ "README.md"
25
+ ],
26
+ "engines": {
27
+ "node": ">=18"
28
+ }
29
+ }