{
  "markdown": "<div align=\"center\">\n\n# 🦊 Camoufox MCP\n\n**Anti-detection browser automation for AI agents**\n\n[![npm version](https://img.shields.io/npm/v/camoufox-mcp.svg)](https://npmjs.org/package/camoufox-mcp)\n[![npm downloads](https://img.shields.io/npm/dm/camoufox-mcp.svg)](https://npmjs.org/package/camoufox-mcp)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Node.js](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen.svg)](https://nodejs.org/)\n\nMCP server for browser automation using [Camoufox](https://camoufox.com/) - an anti-detection Firefox browser.\n\n</div>\n\n## Installation\n\n```bash\nnpx camoufox-mcp\n```\n\n## Claude Desktop Configuration\n\nAdd to `claude_desktop_config.json`:\n\n**Basic:**\n```json\n{\n  \"mcpServers\": {\n    \"camoufox\": {\n      \"command\": \"npx\",\n      \"args\": [\"camoufox-mcp\"]\n    }\n  }\n}\n```\n\n**With Proxy (via env vars):**\n```json\n{\n  \"mcpServers\": {\n    \"camoufox\": {\n      \"command\": \"npx\",\n      \"args\": [\"camoufox-mcp\"],\n      \"env\": {\n        \"PROXY_SERVER\": \"http://1.2.3.4:8080\",\n        \"PROXY_USER\": \"username\",\n        \"PROXY_PASS\": \"password\"\n      }\n    }\n  }\n}\n```\n\nThen in `~/.config/camoufox-mcp/settings.json`:\n```json\n{\n  \"proxy\": {\n    \"enabled\": true,\n    \"server\": \"${PROXY_SERVER}\",\n    \"username\": \"${PROXY_USER}\",\n    \"password\": \"${PROXY_PASS}\",\n    \"geoip\": true\n  }\n}\n```\n\n## Why Camoufox MCP?\n\n| Feature | Camoufox MCP | Chrome DevTools MCP |\n|---------|--------------|---------------------|\n| **Anti-Detection** | | |\n| Bot detection bypass | ✅ Built-in | ❌ Detected |\n| Fingerprint randomization | ✅ | ❌ |\n| WebRTC leak protection | ✅ | ❌ |\n| Canvas fingerprint spoofing | ✅ | ❌ |\n| **Automation** | | |\n| Humanized cursor movement | ✅ Realistic paths | ❌ Instant jumps |\n| Click with human-like delays | ✅ | ❌ |\n| Proxy with GeoIP auto-config | ✅ Timezone/locale | ❌ Manual |\n| **JavaScript Evaluation** | | |\n| MainWorld eval (`__NUXT__`, `__NEXT_DATA__`) | ✅ | ✅ |\n| Isolated eval (async/await) | ✅ | ✅ |\n| **Session Management** | | |\n| Isolated browser sessions | ✅ Multiple contexts | ❌ Single context |\n| Pre-authenticated sessions | ✅ Cookie/localStorage injection | ❌ |\n| Session state export | ✅ Save to JSON | ❌ |\n| **Features** | | |\n| Cookie popup auto-dismiss | ✅ 50+ selectors | ❌ |\n| User action recording | ✅ | ❌ |\n| Network interception | ✅ | ✅ |\n| Console capture | ✅ | ✅ |\n| Performance tracing | ❌ | ✅ |\n| **Browser** | | |\n| Engine | Firefox (Gecko) | Chrome (Chromium) |\n| Auto-install | ✅ ~150MB | ✅ |\n\n## Tools\n\n### Session Management\n\nSessions provide isolated browser contexts — each session has its own cookies, localStorage, and cache. Use sessions to run multiple authenticated profiles simultaneously.\n\n| Tool | Description |\n|------|-------------|\n| `create_session` | Create a new isolated session, optionally pre-loading cookies/localStorage from a JSON file |\n| `list_sessions` | List all sessions with their page counts and metadata |\n| `save_session` | Export a session's cookies and localStorage to a JSON file |\n| `close_session` | Close a session and all its pages |\n| `list_context_files` | List available context files registered in settings |\n\n### Page Management\n\n| Tool | Description |\n|------|-------------|\n| `new_page` | Create a new page, optionally in a specific session |\n| `list_pages` | List all open pages with their session IDs |\n| `select_page` | Set a page as active |\n| `close_page` | Close a page |\n\n### Navigation & Interaction\n\n| Tool | Description |\n|------|-------------|\n| `navigate_page` | Navigate to URL, back, forward, or reload |\n| `click` | Click an element by UID |\n| `hover` | Hover over an element |\n| `fill` | Fill a form field |\n| `fill_form` | Fill multiple form fields at once |\n| `press_key` | Press a key or key combination |\n| `drag` | Drag an element to another |\n\n### Inspection\n\n| Tool | Description |\n|------|-------------|\n| `take_snapshot` | Text snapshot with interactive element UIDs |\n| `take_screenshot` | Screenshot of page or element |\n| `get_page_text` | Extract text content |\n| `evaluate_mainworld` | Run JS in page context (sync only) |\n| `evaluate_isolated` | Run JS in isolated context (async OK) |\n| `get_framework_state` | Extract Next.js/Nuxt.js state |\n\n### Context Injection\n\n| Tool | Description |\n|------|-------------|\n| `inject_context` | Inject cookies + localStorage from a JSON file into a session |\n\n### Monitoring\n\n| Tool | Description |\n|------|-------------|\n| `start_network_capture` / `stop_network_capture` | Capture network requests |\n| `get_network_logs` / `clear_network_logs` | View/clear captured requests |\n| `intercept_network` / `remove_intercept` | Block or modify requests |\n| `start_console_capture` / `stop_console_capture` | Capture console messages |\n| `get_console_logs` / `clear_console_logs` | View/clear console messages |\n| `start_recording` / `stop_recording` / `get_recording_status` | Record user interactions |\n\n### Utility\n\n| Tool | Description |\n|------|-------------|\n| `dismiss_popups` | Auto-dismiss cookie consent popups |\n| `wait_for` | Wait for text or selector |\n| `wait_for_navigation` | Wait for navigation to complete |\n| `reload_settings` | Reload settings from config |\n| `get_config_paths` | Show config file paths |\n| `init_user_config` | Initialize user config directory |\n\n## Sessions\n\nSessions enable running multiple authenticated profiles in parallel. Each session is an isolated browser context with its own cookies and localStorage.\n\n```\nBrowser (single Camoufox instance)\n  ├── Session \"github\" (cookies from github.json)\n  │     ├── Page: github.com\n  │     └── Page: github.com/repo\n  ├── Session \"linkedin\" (cookies from linkedin.json)\n  │     └── Page: linkedin.com/feed\n  └── Session \"default\" (no pre-loaded state)\n        └── Page: example.com\n```\n\n### Usage Examples\n\n**Create a session with pre-loaded authentication:**\n1. `create_session` with `contextPath: \"github-cookies.json\"` — returns a `sessionId`\n2. `new_page` with `url: \"https://github.com\"` and the `sessionId` — opens GitHub already logged in\n\n**Run two accounts simultaneously:**\n1. `create_session` with `contextPath: \"account1.json\"` — session A\n2. `create_session` with `contextPath: \"account2.json\"` — session B\n3. `new_page` in session A — logged in as account 1\n4. `new_page` in session B — logged in as account 2\n\n**Save session state for later:**\n1. Log in manually in a session\n2. `save_session` with `outputPath: \"my-session.json\"` — exports cookies + localStorage\n3. Next time, `create_session` with `contextPath: \"my-session.json\"` — restored\n\n### Context File Format\n\nContext files use [Playwright's storageState format](https://playwright.dev/docs/api/class-browsercontext#browser-context-storage-state):\n\n```json\n{\n  \"cookies\": [\n    {\n      \"name\": \"session_id\",\n      \"value\": \"abc123\",\n      \"domain\": \".example.com\",\n      \"path\": \"/\",\n      \"expires\": 1735689600,\n      \"httpOnly\": true,\n      \"secure\": true,\n      \"sameSite\": \"Lax\"\n    }\n  ],\n  \"origins\": [\n    {\n      \"origin\": \"https://example.com\",\n      \"localStorage\": [\n        { \"name\": \"token\", \"value\": \"xyz789\" }\n      ]\n    }\n  ]\n}\n```\n\n### Registering Context Files in Settings\n\nAdd 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`:\n\n```json\n{\n  \"contextPaths\": [\n    \"/path/to/github-cookies.json\",\n    \"/path/to/linkedin-cookies.json\"\n  ]\n}\n```\n\nThe agent can then call `list_context_files` to see what's available, and `create_session` with the desired `contextPath` to load it when needed.\n\n## Settings\n\nCreate `~/.config/camoufox-mcp/settings.json`:\n\n```json\n{\n  \"browser\": {\n    \"headless\": false,\n    \"viewport\": [1280, 1080],\n    \"timeout\": 30000,\n    \"humanize\": 0.5\n  },\n  \"proxy\": {\n    \"enabled\": true,\n    \"server\": \"http://proxy.example.com:8080\",\n    \"username\": \"user\",\n    \"password\": \"pass\",\n    \"geoip\": true\n  },\n  \"contextPaths\": []\n}\n```\n\n### Proxy Examples\n\n**HTTP/HTTPS Proxy:**\n```json\n{ \"proxy\": { \"enabled\": true, \"server\": \"http://1.2.3.4:8080\" } }\n```\n\n**SOCKS5 Proxy:**\n```json\n{ \"proxy\": { \"enabled\": true, \"server\": \"socks5://1.2.3.4:1080\" } }\n```\n\n**With Authentication (using env vars):**\n```json\n{\n  \"proxy\": {\n    \"enabled\": true,\n    \"server\": \"${PROXY_SERVER}\",\n    \"username\": \"${PROXY_USER}\",\n    \"password\": \"${PROXY_PASS}\",\n    \"geoip\": true\n  }\n}\n```\n\n> `geoip: true` auto-adjusts browser timezone/locale based on proxy IP location.\n\n## See More\n\n- [Camoufox](https://github.com/daijro/camoufox) - The anti-detection Firefox browser\n- [camoufox-js](https://github.com/AnyFetch/camoufox-js) - JavaScript/TypeScript bindings\n\n## License\n\nMIT\n",
  "bytes": 8763,
  "sha": "a6951c33b8f60a54c1d493e500d5a73ad16a0fe7b4341e10813f5f320359031c",
  "repo_slug": "baixianger/camoufox-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_baixianger_camoufox_mcp_f9b45a70/readme"
}