mcpField
C
camoufox-mcp

camoufox-mcp

Local
github.com/baixiangerBrowser Automation7Updated 36w ago

About camoufox-mcp

camoufox-mcp is an MCP server for automating the Camoufox anti-detection Firefox browser. It gives AI agents browser interaction, isolated sessions, page inspection, and network and console monitoring tools.

Key features

  1. 01Navigate pages and interact with elements
  2. 02Manage isolated sessions and saved authentication state
  3. 03Capture snapshots, screenshots, and page text
  4. 04Evaluate JavaScript and extract framework state
  5. 05Monitor and intercept network requests

Use cases

  1. 01Automate browsing with Camoufox
  2. 02Run multiple authenticated browser profiles
  3. 03Inspect pages and capture network activity

MCP support

The MCP server exposes Camoufox browser automation tools to MCP clients, including session, page, interaction, inspection, and monitoring operations. It can be launched over stdio.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"baixianger-camoufox": {
"command": "npx",
"args": [
"-y",
"camoufox-mcp"
]
}
}
}
Run commandnpx -y camoufox-mcp

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npmcamoufox-mcp1.0.0

Tools

42

Saved tool list · updated 2w ago

This tool takes no parameters.

Details

From the project README

🦊 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?

FeatureCamoufox MCPChrome 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
EngineFirefox (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.

ToolDescription
create_sessionCreate a new isolated session, optionally pre-loading cookies/localStorage from a JSON file
list_sessionsList all sessions with their page counts and metadata
save_sessionExport a session's cookies and localStorage to a JSON file
close_sessionClose a session and all its pages
list_context_filesList available context files registered in settings
Page Management
ToolDescription
new_pageCreate a new page, optionally in a specific session
list_pagesList all open pages with their session IDs
select_pageSet a page as active
close_pageClose a page
Navigation & Interaction
ToolDescription
navigate_pageNavigate to URL, back, forward, or reload
clickClick an element by UID
hoverHover over an element
fillFill a form field
fill_formFill multiple form fields at once
press_keyPress a key or key combination
dragDrag an element to another
Inspection
ToolDescription
take_snapshotText snapshot with interactive element UIDs
take_screenshotScreenshot of page or element
get_page_textExtract text content
evaluate_mainworldRun JS in page context (sync only)
evaluate_isolatedRun JS in isolated context (async OK)
get_framework_stateExtract Next.js/Nuxt.js state
Context Injection
ToolDescription
inject_contextInject cookies + localStorage from a JSON file into a session
Monitoring
ToolDescription
start_network_capture / stop_network_captureCapture network requests
get_network_logs / clear_network_logsView/clear captured requests
intercept_network / remove_interceptBlock or modify requests
start_console_capture / stop_console_captureCapture console messages
get_console_logs / clear_console_logsView/clear console messages
start_recording / stop_recording / get_recording_statusRecord user interactions
Utility
ToolDescription
dismiss_popupsAuto-dismiss cookie consent popups
wait_forWait for text or selector
wait_for_navigationWait for navigation to complete
reload_settingsReload settings from config
get_config_pathsShow config file paths
init_user_configInitialize 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

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.