AgentStack
MCP unreviewed MIT Self-run

Mcp Camoufox

mcp-robithyusuf-mcp-camoufox · by RobithYusuf

MCP server for stealth browser automation via Camoufox — 79 tools, npx install, anti-bot stealth

No reviews yet
0 installs
22 views
0.0% view→install

Install

$ agentstack add mcp-robithyusuf-mcp-camoufox

Open-source listing — not yet scanned by AgentStack. Follow the source repository for install instructions.

Security review

⚠ Flagged

1 finding(s); flagged for manual review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures
  • high Destructive filesystem operation.

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Reliability & compatibility

Not yet reviewed
0 installs to date
no reviews yet
1mo ago

Declared compatibility

Claude CodeClaude DesktopCursorWindsurf

Compatibility is declared by the source manifest. End-to-end runtime verification is coming — see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps — measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Mcp Camoufox? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

MCP Camoufox

[](https://www.npmjs.com/package/mcp-camoufox) [](https://www.npmjs.com/package/mcp-camoufox) [](https://opensource.org/licenses/MIT) [](https://nodejs.org)

The most feature-rich stealth browser MCP server. 102 tools for full browser control powered by Camoufox — a Firefox fork with C++ level anti-detection that bypasses Cloudflare, bot detection, and anti-automation.

> One command. No Python. No manual setup. Everything auto-installs.

claude mcp add camoufox -- npx -y mcp-camoufox@latest

What Can It Do?

  • Login to Google, ChatGPT, GitHub — without getting blocked
  • Fill forms, click buttons, type text, upload files
  • Manage cookies, localStorage, sessions across visits
  • Take screenshots, export PDFs, capture network traffic
  • Work with multiple tabs, iframes, dialogs
  • Execute JavaScript, inspect elements, scroll pages
  • Scrape structured data (job listings, products) with auto-detected selectors
  • All while being undetectable by anti-bot systems

Comparison

| MCP Server | Tools | Stealth | npx Install | Persistent Session | |------------|-------|---------|-------------|--------------------| | Chrome DevTools MCP | 30+ | No | Built-in | Yes | | whit3rabbit/camoufox-mcp | 1 | Yes | Yes | No | | redf0x1/camofox-mcp | 45 | Yes | No (clone) | Yes | | Sekinal/camoufox-mcp | 49 | Yes | No (clone) | Yes | | Playwright CLI | 60+ | No | Yes | Yes | | mcp-camoufox | 102 | Yes | Yes | Yes |

Proven on Real Sites

| Site | Challenge | Result | |------|-----------|--------| | 2captcha.com/demo/cloudflare-turnstile | Cloudflare Turnstile widget | ✅ "Success!" via click_turnstile() tool ([proof](docs/images/turnstile.jpg)) | | bot.sannysoft.com | Firefox fingerprint tests | ✅ All green ([proof](docs/images/sannysoft.jpg)) | | browserscan.net/bot-detection | WebDriver/UA/CDP/Navigator | ✅ All categories "Normal" ([proof](docs/images/browserscan.jpg)) |

🎯 Cloudflare Turnstile → Success via click_turnstile()

click_turnstile() auto-detects the widget via 6 selector fallback (iframe[src*=challenges.cloudflare.com], [data-sitekey], .cf-turnstile, …), computes checkbox position (offset_x=30 from widget left), and clicks with a 3-step Bezier-like approach — combined with Camoufox's native humanize + disable_coop for cross-origin iframe click.

Scope: works on Interactive Turnstile (visible iframe widget). Managed Challenge interstitials ("Just a moment...") render the widget in shadow DOM — not supported here; use sister project mcp-stealth-chrome (Chrome+CDP) for those. Real-world bypass success also depends on IP reputation and browser fingerprint — code alone doesn't guarantee it.

🧪 bot.sannysoft.com → Firefox Fingerprint Pass

User Agent reports Firefox/135.0, WebDriver missing, WebDriver Advanced passed, Permissions prompt, Plugins length 5 passed, Languages en-US,en, WebGL Intel HD Graphics — all green. ("Chrome: missing" is expected — Camoufox spoofs Firefox, not Chrome.)

🔍 browserscan.net/bot-detection → All Categories Normal

WebDriver, User-Agent, CDP, Navigator — every detection category returns "Normal". Camoufox's C++-level Firefox patches leave zero automation signals.

Setup

Claude Code

Global (available in all projects):

claude mcp add camoufox --scope user -- npx -y mcp-camoufox@latest

Project only (current project):

claude mcp add camoufox -- npx -y mcp-camoufox@latest

Claude Desktop

Global — add to config file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "camoufox": {
      "command": "npx",
      "args": ["-y", "mcp-camoufox@latest"]
    }
  }
}

> Claude Desktop is always global — no project-level config.

Cursor

Global — Preferences > Features > MCP, or ~/.cursor/mcp.json:

Project.cursor/mcp.json in project root:

{
  "mcpServers": {
    "camoufox": {
      "command": "npx",
      "args": ["-y", "mcp-camoufox@latest"]
    }
  }
}

Windsurf

Global~/.windsurf/mcp.json:

Project.windsurf/mcp.json in project root:

{
  "servers": {
    "camoufox": {
      "command": "npx",
      "args": ["-y", "mcp-camoufox@latest"]
    }
  }
}

VS Code (Continue / Cline / Kilo Code)

Global — VS Code settings or ~/.continue/config.json:

Project.vscode/mcp.json in project root:

{
  "mcpServers": {
    "camoufox": {
      "command": "npx",
      "args": ["-y", "mcp-camoufox@latest"]
    }
  }
}

Factory (Droid)

Global~/.factory/mcp.json:

Project.factory/mcp.json in project root:

{
  "mcpServers": {
    "camoufox": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "mcp-camoufox@latest"],
      "disabled": false
    }
  }
}

Or via CLI:

droid mcp add camoufox "npx -y mcp-camoufox@latest"

OpenCode

Global~/.config/opencode/opencode.json:

Projectopencode.json in project root:

{
  "mcp": {
    "camoufox": {
      "type": "local",
      "command": ["npx", "-y", "mcp-camoufox@latest"],
      "enabled": true
    }
  }
}

> Note: OpenCode uses "type": "local" (not "stdio") and command as a single array.

Trae (ByteDance)

Global~/.trae/mcp.json:

Project.trae/mcp.json in project root:

{
  "mcpServers": [
    {
      "name": "camoufox",
      "command": ["npx", "-y", "mcp-camoufox@latest"]
    }
  ]
}

> Note: Trae uses an array format for mcpServers, not an object.

Antigravity (Google)

Global~/.gemini/antigravity/mcp_config.json:

{
  "mcpServers": {
    "camoufox": {
      "command": "npx",
      "args": ["-y", "mcp-camoufox@latest"]
    }
  }
}

Or via UI: Agent Panel > ... > MCP Servers > Manage MCP Servers > View raw config.

> Antigravity is global only — no project-level MCP config.

Requirements

| Requirement | Version | Check | |-------------|---------|-------| | Node.js | 18+ | node --version |

That's all. Camoufox browser binary (~80MB) downloads automatically on first launch.

All 102 Tools

Browser Lifecycle (2)

| Tool | Description | |------|-------------| | browser_launch | Launch stealth browser. Options: url, headless, humanize, geoip, locale, width, height | | browser_close | Close browser. Cookies preserved in profile. |

Navigation (4)

| Tool | Description | |------|-------------| | navigate | Go to URL. Options: wait_until (domcontentloaded/load/networkidle), timeout | | go_back | Back in history | | go_forward | Forward in history | | reload | Reload page |

DOM & Content (6)

| Tool | Description | |------|-------------| | browser_snapshot | Get interactive elements with ref IDs. Call after every navigation. On large pages narrow with roles=["button","textbox"] or paginate with offset/limit — refs stay stable. | | screenshot | Capture viewport or full page. Options: name, full_page | | get_text | Text from page or selector (max 5000 chars) | | get_html | HTML from page or selector (max 10000 chars) | | get_url | Current URL + title | | save_pdf | Export page as PDF |

Element Interaction (9)

| Tool | Description | |------|-------------| | click | Click by ref ID. Auto JS-fallback for overlays. Options: button, dblclick | | click_text | Click by visible text. Options: exact | | click_role | Click by ARIA role + name | | hover | Hover over element | | fill | Fill input/textarea (clears first) | | select_option | Select from dropdown | | check / uncheck | Toggle checkbox/radio | | upload_file | Upload file to input |

Keyboard (2)

| Tool | Description | |------|-------------| | type_text | Type char by char. Options: delay. For OTP, masked inputs, date pickers. | | press_key | Key or combo: Enter, Escape, Tab, Control+a, Meta+c |

Mouse XY (4)

| Tool | Description | |------|-------------| | mouse_click_xy | Click at exact coordinates. Optional steps (0=instant, 15-30=human-like pre-movement) | | mouse_move | Move cursor to coordinates. Optional steps for interpolated path | | click_turnstile | Auto-find + humanized click on Cloudflare Turnstile widget. Params: offset_x (default 30), offset_y, wait_render_ms. Works on Interactive Turnstile (visible iframe widget). Not for Managed Challenge interstitials. | | drag_and_drop | Drag between two elements |

Wait (4)

| Tool | Description | |------|-------------| | wait_for | Wait for selector or text (visible/hidden/attached/detached) | | wait_for_navigation | Wait for page load | | wait_for_url | Wait for URL pattern match | | wait_for_response | Wait for network response pattern |

Tabs (4)

| Tool | Description | |------|-------------| | tab_list | List all tabs. Pages the site opens itself (window.open / target=_blank, e.g. OAuth popups) are auto-tracked and appear here too. | | tab_new | Open new tab | | tab_select | Switch tab by index or url_contains (first tab whose URL matches) | | tab_close | Close tab by index (-1 = active) or url_contains |

Cookies (3)

| Tool | Description | |------|-------------| | cookie_list | List cookies. Options: domain filter | | cookie_set | Set cookie | | cookie_delete | Delete by name/domain. Empty = clear all. |

Local Storage (3)

| Tool | Description | |------|-------------| | localstorage_get | Get all or specific key | | localstorage_set | Set key-value | | localstorage_clear | Clear all |

Session Storage (2)

| Tool | Description | |------|-------------| | sessionstorage_get | Get all or specific key | | sessionstorage_set | Set key-value |

JavaScript (2)

| Tool | Description | |------|-------------| | evaluate | Run JS in page context | | inject_init_script | Inject script that runs on every page load |

Element Inspection (4)

| Tool | Description | |------|-------------| | inspect_element | Full element info: tag, attributes, box, styles | | get_attribute | Get specific attribute | | query_selector_all | Query multiple elements by CSS selector | | get_links | Get all links with URL + text. Options: filter |

Frames (2)

| Tool | Description | |------|-------------| | list_frames | List all frames/iframes | | frame_evaluate | Run JS inside a frame |

Batch Operations (4)

| Tool | Description | |------|-------------| | batch_actions | Multiple actions in one call (click, fill, type, press, wait) | | fill_form | Fill multiple fields + optional submit | | login_classic | Composite login for email→password forms (Google/Microsoft/generic). Auto email→Next→password→submit, optional TOTP 2FA (totp_secret or totp_code). Collapses 5–8 calls into one. | | navigate_and_snapshot | Navigate + snapshot in one call |

Viewport (2)

| Tool | Description | |------|-------------| | get_viewport_size | Get width x height | | set_viewport_size | Set dimensions |

Scroll (1)

| Tool | Description | |------|-------------| | scroll | Scroll up/down/left/right by pixel amount |

Dialog (1)

| Tool | Description | |------|-------------| | dialog_handle | Pre-set accept/dismiss for next alert/confirm/prompt |

Accessibility (1)

| Tool | Description | |------|-------------| | accessibility_snapshot | Accessibility tree for LLM understanding |

Console & Network (5)

| Tool | Description | |------|-------------| | console_start / console_get | Capture and retrieve browser console messages. Capture spans all tabs and follows newly opened tabs/popups (re-calling console_start resets cleanly — no listener stacking). | | network_start / network_get | Capture network requests across all tabs (follows tab switches + popups). network_start(capture_bodies=true) also records request/response headers + text bodies. network_get(filter=...) narrows by URL substring; each row shows an #id. | | network_get_detail | Full request + response (headers + text body) for one captured request by #id or url substring. Needs capture_bodies=true. Replaces the evaluate()+fetch() workaround for inspecting API payloads. |

Compound (reduce round-trips) (4)

| Tool | Description | |------|-------------| | wait_and_snapshot | Wait for selector/text + return snapshot in one call | | back_and_snapshot | Navigate back + return snapshot | | reload_and_snapshot | Reload page + return snapshot | | click_and_snapshot | Click + wait + return snapshot. Perfect for buttons that trigger navigation. |

Smart Selectors (skip snapshot) (3)

| Tool | Description | |------|-------------| | find_by_text | Find element by visible text, returns ref. Skip browser_snapshot when you know exact text. | | find_by_label | Find input by label text, returns ref. | | find_by_placeholder | Find input by placeholder, returns ref. |

Session Portability (5)

| Tool | Description | |------|-------------| | cookie_export | Export all cookies as JSON (for transfer) | | cookie_import | Import cookies from JSON (restore session) | | storage_state_save | Save cookies + localStorage + sessionStorage to JSON file. Reload to skip login/CF. | | storage_state_load | Restore session from JSON (cookies + storage). Use navigate_to param to apply localStorage. | | auth_capture | Convenience: save current session to ~/.camoufox-mcp/sessions/.json |

Humanize / Anti-Bot (4)

| Tool | Description | |------|-------------| | humanize_click | 3-step Bezier mouse approach + small jitter before click. Use for CF/DataDome pages. | | humanize_type | Gaussian-distributed keystroke delays (mean 80ms, sigma 30ms). Mimics human rhythm. | | mouse_drift | Random mouse movements over duration — builds mouse history before action. | | mouse_record / mouse_replay | Capture human mouse path then replay (anti-bot gold). |

Session Warmup & Detection (2)

| Tool | Description | |------|-------------| | session_warmup | Visit Google/Wikipedia (random) before targeting protected site. Helps IP scoring. | | detect_anti_bot | Heuristic detection of CF/DataDome/Akamai/PerimeterX/Imperva/reCAPTCHA/hCaptcha. |

Assertions (3)

| Tool | Description | |------|-------------| | assert_element_visible | PASS/FAIL — element exists and is visible | | assert_text_present | PASS/FAIL — text substring on page | | assert_url_matches | PASS/FAIL — URL matches pattern (substring or regex) |

Workflow Helpers (3)

| Tool | Description | |------|-------------| | click_and_wait | Click + wait for navigation/selector atomically (fewer roundtrips) | | wait_for_network_idle | Wait until no in-flight requests for N ms (better than fixed timeouts for SPAs) | | describe_page | Compact LLM-friendly summary (title, h1, buttons, links, forms) — cheaper than browser_snapshot |

Scraping & Extraction (4)

| Tool | Description | |------|-------------| | detect_content_pattern | Auto-detect repeated content (cards, listings) and suggest CSS selectors. Run this before extract_structured. | | extract_structured | Extract data from repeated elements as clean JSON. Auto-deduplicates, filters empties, direct_text_only prevents field mixing. | | extract_table | Extract HTML table as JSON array with auto-detected headers | | scrape_page | Smart scraper: auto-extract main content (strips nav/footer), links, meta, headings. Smart truncation at paragraph boundary. |

Debug (4)

| Tool | Description | |------|-------------| | server_status | Health check: browser status, tabs, URL

Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.