mcp-camoufox 0.4.5 → 0.4.7
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 +36 -14
- package/dist/index.js +22 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -46,6 +46,12 @@ claude mcp add camoufox -- npx -y mcp-camoufox@latest
|
|
|
46
46
|
<details>
|
|
47
47
|
<summary><b>Claude Code</b></summary>
|
|
48
48
|
|
|
49
|
+
**Global** (available in all projects):
|
|
50
|
+
```bash
|
|
51
|
+
claude mcp add camoufox --scope user -- npx -y mcp-camoufox@latest
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
**Project only** (current project):
|
|
49
55
|
```bash
|
|
50
56
|
claude mcp add camoufox -- npx -y mcp-camoufox@latest
|
|
51
57
|
```
|
|
@@ -54,7 +60,7 @@ claude mcp add camoufox -- npx -y mcp-camoufox@latest
|
|
|
54
60
|
<details>
|
|
55
61
|
<summary><b>Claude Desktop</b></summary>
|
|
56
62
|
|
|
57
|
-
|
|
63
|
+
**Global** — add to config file:
|
|
58
64
|
- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
59
65
|
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
|
|
60
66
|
- **Linux:** `~/.config/Claude/claude_desktop_config.json`
|
|
@@ -69,21 +75,23 @@ Add to config file:
|
|
|
69
75
|
}
|
|
70
76
|
}
|
|
71
77
|
```
|
|
78
|
+
|
|
79
|
+
> Claude Desktop is always global — no project-level config.
|
|
72
80
|
</details>
|
|
73
81
|
|
|
74
82
|
<details>
|
|
75
83
|
<summary><b>Cursor</b></summary>
|
|
76
84
|
|
|
77
|
-
Preferences > Features > MCP
|
|
85
|
+
**Global** — Preferences > Features > MCP, or `~/.cursor/mcp.json`:
|
|
86
|
+
|
|
87
|
+
**Project** — `.cursor/mcp.json` in project root:
|
|
78
88
|
|
|
79
89
|
```json
|
|
80
90
|
{
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
"
|
|
84
|
-
|
|
85
|
-
"args": ["-y", "mcp-camoufox@latest"]
|
|
86
|
-
}
|
|
91
|
+
"mcpServers": {
|
|
92
|
+
"camoufox": {
|
|
93
|
+
"command": "npx",
|
|
94
|
+
"args": ["-y", "mcp-camoufox@latest"]
|
|
87
95
|
}
|
|
88
96
|
}
|
|
89
97
|
}
|
|
@@ -93,7 +101,9 @@ Preferences > Features > MCP:
|
|
|
93
101
|
<details>
|
|
94
102
|
<summary><b>Windsurf</b></summary>
|
|
95
103
|
|
|
96
|
-
|
|
104
|
+
**Global** — `~/.windsurf/mcp.json`:
|
|
105
|
+
|
|
106
|
+
**Project** — `.windsurf/mcp.json` in project root:
|
|
97
107
|
|
|
98
108
|
```json
|
|
99
109
|
{
|
|
@@ -108,7 +118,11 @@ Add to `~/.windsurf/mcp.json`:
|
|
|
108
118
|
</details>
|
|
109
119
|
|
|
110
120
|
<details>
|
|
111
|
-
<summary><b>VS Code (Continue / Cline)</b></summary>
|
|
121
|
+
<summary><b>VS Code (Continue / Cline / Kilo Code)</b></summary>
|
|
122
|
+
|
|
123
|
+
**Global** — VS Code settings or `~/.continue/config.json`:
|
|
124
|
+
|
|
125
|
+
**Project** — `.vscode/mcp.json` in project root:
|
|
112
126
|
|
|
113
127
|
```json
|
|
114
128
|
{
|
|
@@ -125,7 +139,9 @@ Add to `~/.windsurf/mcp.json`:
|
|
|
125
139
|
<details>
|
|
126
140
|
<summary><b>Factory (Droid)</b></summary>
|
|
127
141
|
|
|
128
|
-
|
|
142
|
+
**Global** — `~/.factory/mcp.json`:
|
|
143
|
+
|
|
144
|
+
**Project** — `.factory/mcp.json` in project root:
|
|
129
145
|
|
|
130
146
|
```json
|
|
131
147
|
{
|
|
@@ -149,7 +165,9 @@ droid mcp add camoufox "npx -y mcp-camoufox@latest"
|
|
|
149
165
|
<details>
|
|
150
166
|
<summary><b>OpenCode</b></summary>
|
|
151
167
|
|
|
152
|
-
|
|
168
|
+
**Global** — `~/.config/opencode/opencode.json`:
|
|
169
|
+
|
|
170
|
+
**Project** — `opencode.json` in project root:
|
|
153
171
|
|
|
154
172
|
```json
|
|
155
173
|
{
|
|
@@ -169,7 +187,9 @@ Add to `~/.config/opencode/opencode.json` (global) or `opencode.json` (project):
|
|
|
169
187
|
<details>
|
|
170
188
|
<summary><b>Trae (ByteDance)</b></summary>
|
|
171
189
|
|
|
172
|
-
|
|
190
|
+
**Global** — `~/.trae/mcp.json`:
|
|
191
|
+
|
|
192
|
+
**Project** — `.trae/mcp.json` in project root:
|
|
173
193
|
|
|
174
194
|
```json
|
|
175
195
|
{
|
|
@@ -188,7 +208,7 @@ Add to `~/.trae/mcp.json` (global) or `.trae/mcp.json` (project):
|
|
|
188
208
|
<details>
|
|
189
209
|
<summary><b>Antigravity (Google)</b></summary>
|
|
190
210
|
|
|
191
|
-
|
|
211
|
+
**Global** — `~/.gemini/antigravity/mcp_config.json`:
|
|
192
212
|
|
|
193
213
|
```json
|
|
194
214
|
{
|
|
@@ -202,6 +222,8 @@ Add to `~/.gemini/antigravity/mcp_config.json`:
|
|
|
202
222
|
```
|
|
203
223
|
|
|
204
224
|
Or via UI: Agent Panel > `...` > MCP Servers > Manage MCP Servers > View raw config.
|
|
225
|
+
|
|
226
|
+
> Antigravity is global only — no project-level MCP config.
|
|
205
227
|
</details>
|
|
206
228
|
|
|
207
229
|
### Requirements
|
package/dist/index.js
CHANGED
|
@@ -133,6 +133,28 @@ server.tool("browser_launch", "Launch Camoufox stealth browser and navigate to U
|
|
|
133
133
|
ensureDirs();
|
|
134
134
|
const w = width > 0 ? width : 1280;
|
|
135
135
|
const h = height > 0 ? height : 800;
|
|
136
|
+
// Auto-download Camoufox binary if not installed
|
|
137
|
+
try {
|
|
138
|
+
const { execSync } = await import("child_process");
|
|
139
|
+
const { existsSync, readdirSync } = await import("fs");
|
|
140
|
+
const { join: pathJoin } = await import("path");
|
|
141
|
+
// Check common cache locations
|
|
142
|
+
const homeDir = process.env.HOME || process.env.USERPROFILE || "";
|
|
143
|
+
const cacheLocations = [
|
|
144
|
+
pathJoin(homeDir, ".cache", "camoufox"),
|
|
145
|
+
pathJoin(homeDir, "Library", "Caches", "camoufox"),
|
|
146
|
+
pathJoin(homeDir, "AppData", "Local", "camoufox"),
|
|
147
|
+
];
|
|
148
|
+
const isInstalled = cacheLocations.some(dir => existsSync(dir) && readdirSync(dir).length > 2);
|
|
149
|
+
if (!isInstalled) {
|
|
150
|
+
console.error("[mcp-camoufox] Camoufox browser not found. Auto-downloading (~500MB, one-time)...");
|
|
151
|
+
execSync("npx camoufox-js fetch", { stdio: "inherit", timeout: 600000 });
|
|
152
|
+
console.error("[mcp-camoufox] Download complete.");
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
catch (e) {
|
|
156
|
+
console.error(`[mcp-camoufox] Auto-download check: ${e.message?.slice(0, 100)}`);
|
|
157
|
+
}
|
|
136
158
|
const ctx = await Camoufox({
|
|
137
159
|
headless,
|
|
138
160
|
humanize,
|
package/package.json
CHANGED