Skip to content

baixianger/camoufox-mcp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

13 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🦊 Camoufox MCP

Anti-detection browser automation for AI agents

npm version npm downloads License: MIT Node.js

MCP server for browser automation using Camoufox - an anti-detection Firefox browser.

Installation

npx camoufox-mcp

Claude 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 (__NUXT__, __NEXT_DATA__) βœ… βœ…
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_session Create a new isolated session, optionally pre-loading cookies/localStorage from a JSON file
list_sessions List all sessions with their page counts and metadata
save_session Export a session's cookies and localStorage to a JSON file
close_session Close a session and all its pages
list_context_files List available context files registered in settings

Page Management

Tool Description
new_page Create a new page, optionally in a specific session
list_pages List all open pages with their session IDs
select_page Set a page as active
close_page Close a page

Navigation & Interaction

Tool Description
navigate_page Navigate to URL, back, forward, or reload
click Click an element by UID
hover Hover over an element
fill Fill a form field
fill_form Fill multiple form fields at once
press_key Press a key or key combination
drag Drag an element to another

Inspection

Tool Description
take_snapshot Text snapshot with interactive element UIDs
take_screenshot Screenshot of page or element
get_page_text Extract text content
evaluate_mainworld Run JS in page context (sync only)
evaluate_isolated Run JS in isolated context (async OK)
get_framework_state Extract Next.js/Nuxt.js state

Context Injection

Tool Description
inject_context Inject cookies + localStorage from a JSON file into a session

Monitoring

Tool Description
start_network_capture / stop_network_capture Capture network requests
get_network_logs / clear_network_logs View/clear captured requests
intercept_network / remove_intercept Block or modify requests
start_console_capture / stop_console_capture Capture console messages
get_console_logs / clear_console_logs View/clear console messages
start_recording / stop_recording / get_recording_status Record user interactions

Utility

Tool Description
dismiss_popups Auto-dismiss cookie consent popups
wait_for Wait for text or selector
wait_for_navigation Wait for navigation to complete
reload_settings Reload settings from config
get_config_paths Show config file paths
init_user_config 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.com

Usage Examples

Create a session with pre-loaded authentication:

  1. create_session with contextPath: "github-cookies.json" β€” returns a sessionId
  2. new_page with url: "https://github.com" and the sessionId β€” opens GitHub already logged in

Run two accounts simultaneously:

  1. create_session with contextPath: "account1.json" β€” session A
  2. create_session with contextPath: "account2.json" β€” session B
  3. new_page in session A β€” logged in as account 1
  4. new_page in session B β€” logged in as account 2

Save session state for later:

  1. Log in manually in a session
  2. save_session with outputPath: "my-session.json" β€” exports cookies + localStorage
  3. Next time, create_session with contextPath: "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: true auto-adjusts browser timezone/locale based on proxy IP location.

See More

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors