Camoufox MCP is an anti-detection browser automation server for AI agents, using a Firefox-based browser with fingerprint spoofing, WebRTC leak protection, canvas fingerprint spoofing, and human-like behavior simulation.
Anti-Detection & Humanization
Bypasses bot detection with fingerprint randomization and canvas/WebRTC spoofing
Realistic cursor movements, human-like click delays, and natural interaction patterns
Proxy support (HTTP/HTTPS/SOCKS5) with GeoIP auto-configuration for timezone/locale
Session Management
Create isolated browser sessions with separate cookies, localStorage, and cache
Pre-load authentication from JSON context files; export/import session states
Run multiple authenticated profiles simultaneously
Page Management
Create, list, select, and close browser pages/tabs
Navigate to URLs, go back/forward, reload, and wait for navigation events
Interaction
Click (left/right/middle, single/double, modifier keys), hover, drag elements
Fill form fields individually or in bulk; press keyboard keys/combinations
Auto-dismiss cookie consent popups (50+ common selectors)
Inspection & Snapshots
Take text snapshots with interactive element UIDs for targeting
Capture screenshots (full page or specific elements; PNG, JPEG, WebP)
Extract plain text from pages or specific CSS selectors
JavaScript Evaluation
evaluate_mainworld: Synchronous JS in the page's main world (accesswindow.__NUXT__,window.__NEXT_DATA__, etc.)evaluate_isolated: Async JS in a sandboxed context (supportsfetch,await, Promises)Extract Next.js/Nuxt.js hydration/framework state
Network Monitoring & Interception
Start/stop capturing network requests filtered by resource type or URL pattern
View/clear network logs; intercept requests to block or modify responses (status, headers, body)
Console Monitoring
Start/stop capturing browser console messages filtered by type or pattern
View/clear console logs with error-only filtering
User Interaction Recording
Start/stop recording user interactions (clicks, scrolls, inputs) and retrieve captured actions
Configuration & Utilities
Wait for specific text or CSS selectors to appear/disappear
Reload settings from config file; manage config file paths and user config directory
Automates the Firefox browser with advanced anti-detection features, including fingerprint randomization, WebRTC leak protection, and humanized cursor movements.
Automates the Firefox browser with advanced anti-detection features, including fingerprint randomization, WebRTC leak protection, and humanized cursor movements.
Enables the evaluation of Nuxt.js application state, such as __NUXT__ variables, during browser automation for enhanced data extraction.
Provides built-in WebRTC leak protection to maintain anonymity and prevent IP address exposure during automated browsing.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Camoufox MCPSearch for flight prices on a travel site and bypass bot detection"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
🦊 Camoufox MCP
Anti-detection browser automation for AI agents
MCP server for browser automation using Camoufox - an anti-detection Firefox browser.
Installation
npx camoufox-mcpClaude Desktop Configuration
Add to claude_desktop_config.json:
Basic:
{
"mcpServers": {
"camoufox": {
"command": "npx",
"args": ["camoufox-mcp"]
}
}
}With Proxy (via env vars):
{
"mcpServers": {
"camoufox": {
"command": "npx",
"args": ["camoufox-mcp"],
"env": {
"PROXY_SERVER": "http://1.2.3.4:8080",
"PROXY_USER": "username",
"PROXY_PASS": "password"
}
}
}
}Then in ~/.config/camoufox-mcp/settings.json:
{
"proxy": {
"enabled": true,
"server": "${PROXY_SERVER}",
"username": "${PROXY_USER}",
"password": "${PROXY_PASS}",
"geoip": true
}
}Why Camoufox MCP?
Feature | Camoufox MCP | Chrome DevTools MCP |
Anti-Detection | ||
Bot detection bypass | ✅ Built-in | ❌ Detected |
Fingerprint randomization | ✅ | ❌ |
WebRTC leak protection | ✅ | ❌ |
Canvas fingerprint spoofing | ✅ | ❌ |
Automation | ||
Humanized cursor movement | ✅ Realistic paths | ❌ Instant jumps |
Click with human-like delays | ✅ | ❌ |
Proxy with GeoIP auto-config | ✅ Timezone/locale | ❌ Manual |
JavaScript Evaluation | ||
MainWorld eval ( | ✅ | ✅ |
Isolated eval (async/await) | ✅ | ✅ |
Session Management | ||
Isolated browser sessions | ✅ Multiple contexts | ❌ Single context |
Pre-authenticated sessions | ✅ Cookie/localStorage injection | ❌ |
Session state export | ✅ Save to JSON | ❌ |
Features | ||
Cookie popup auto-dismiss | ✅ 50+ selectors | ❌ |
User action recording | ✅ | ❌ |
Network interception | ✅ | ✅ |
Console capture | ✅ | ✅ |
Performance tracing | ❌ | ✅ |
Browser | ||
Engine | Firefox (Gecko) | Chrome (Chromium) |
Auto-install | ✅ ~150MB | ✅ |
Tools
Session Management
Sessions provide isolated browser contexts — each session has its own cookies, localStorage, and cache. Use sessions to run multiple authenticated profiles simultaneously.
Tool | Description |
| Create a new isolated session, optionally pre-loading cookies/localStorage from a JSON file |
| List all sessions with their page counts and metadata |
| Export a session's cookies and localStorage to a JSON file |
| Close a session and all its pages |
| List available context files registered in settings |
Page Management
Tool | Description |
| Create a new page, optionally in a specific session |
| List all open pages with their session IDs |
| Set a page as active |
| Close a page |
Navigation & Interaction
Tool | Description |
| Navigate to URL, back, forward, or reload |
| Click an element by UID |
| Hover over an element |
| Fill a form field |
| Fill multiple form fields at once |
| Press a key or key combination |
| Drag an element to another |
Inspection
Tool | Description |
| Text snapshot with interactive element UIDs |
| Screenshot of page or element |
| Extract text content |
| Run JS in page context (sync only) |
| Run JS in isolated context (async OK) |
| Extract Next.js/Nuxt.js state |
Context Injection
Tool | Description |
| Inject cookies + localStorage from a JSON file into a session |
Monitoring
Tool | Description |
| Capture network requests |
| View/clear captured requests |
| Block or modify requests |
| Capture console messages |
| View/clear console messages |
| Record user interactions |
Utility
Tool | Description |
| Auto-dismiss cookie consent popups |
| Wait for text or selector |
| Wait for navigation to complete |
| Reload settings from config |
| Show config file paths |
| Initialize user config directory |
Sessions
Sessions enable running multiple authenticated profiles in parallel. Each session is an isolated browser context with its own cookies and localStorage.
Browser (single Camoufox instance)
├── Session "github" (cookies from github.json)
│ ├── Page: github.com
│ └── Page: github.com/repo
├── Session "linkedin" (cookies from linkedin.json)
│ └── Page: linkedin.com/feed
└── Session "default" (no pre-loaded state)
└── Page: example.comUsage Examples
Create a session with pre-loaded authentication:
create_sessionwithcontextPath: "github-cookies.json"— returns asessionIdnew_pagewithurl: "https://github.com"and thesessionId— opens GitHub already logged in
Run two accounts simultaneously:
create_sessionwithcontextPath: "account1.json"— session Acreate_sessionwithcontextPath: "account2.json"— session Bnew_pagein session A — logged in as account 1new_pagein session B — logged in as account 2
Save session state for later:
Log in manually in a session
save_sessionwithoutputPath: "my-session.json"— exports cookies + localStorageNext time,
create_sessionwithcontextPath: "my-session.json"— restored
Context File Format
Context files use Playwright's storageState format:
{
"cookies": [
{
"name": "session_id",
"value": "abc123",
"domain": ".example.com",
"path": "/",
"expires": 1735689600,
"httpOnly": true,
"secure": true,
"sameSite": "Lax"
}
],
"origins": [
{
"origin": "https://example.com",
"localStorage": [
{ "name": "token", "value": "xyz789" }
]
}
]
}Registering Context Files in Settings
Add context file paths to settings.json to make them discoverable via list_context_files. Sessions are created lazily on demand — no memory is used until the agent calls create_session:
{
"contextPaths": [
"/path/to/github-cookies.json",
"/path/to/linkedin-cookies.json"
]
}The agent can then call list_context_files to see what's available, and create_session with the desired contextPath to load it when needed.
Settings
Create ~/.config/camoufox-mcp/settings.json:
{
"browser": {
"headless": false,
"viewport": [1280, 1080],
"timeout": 30000,
"humanize": 0.5
},
"proxy": {
"enabled": true,
"server": "http://proxy.example.com:8080",
"username": "user",
"password": "pass",
"geoip": true
},
"contextPaths": []
}Proxy Examples
HTTP/HTTPS Proxy:
{ "proxy": { "enabled": true, "server": "http://1.2.3.4:8080" } }SOCKS5 Proxy:
{ "proxy": { "enabled": true, "server": "socks5://1.2.3.4:1080" } }With Authentication (using env vars):
{
"proxy": {
"enabled": true,
"server": "${PROXY_SERVER}",
"username": "${PROXY_USER}",
"password": "${PROXY_PASS}",
"geoip": true
}
}
geoip: trueauto-adjusts browser timezone/locale based on proxy IP location.
See More
Camoufox - The anti-detection Firefox browser
camoufox-js - JavaScript/TypeScript bindings
License
MIT