io.github.baixianger/camoufox-mcp
NPM · CAMOUFOX-MCP · SCANNED SEP 20
Anti-detection browser automation with Camoufox - stealth Firefox for web scraping
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security89
- No malware found by supply-chain analysis.Pass
- CVE check failed: a known high-severity CVE affects adm-zip 0.5.18, reached via camoufox-js > adm-zip. A fixed version is available. View diagnostics → Fail
- No install/post-install scripts declared.Pass
- 60 of 184 dependencies flagged as unhealthy (2 deprecated). View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 211 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability70
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 2425 tokens (~57/item across 42 items; 42 tools + 0 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management77
- Stability observed for 23 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage98
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 94% of tool parameters carry a description.Partial
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "evaluate_mainworld" implies "execute" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 42 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the io.github.baixianger/camoufox-mcp server?
io.github.baixianger/camoufox-mcp runs locally as an npm package, launched with npx -y camoufox-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · camoufox-mcp
claude mcp add baixianger-camoufox-mcp -- npx -y camoufox-mcp
{
"mcpServers": {
"baixianger-camoufox-mcp": {
"command": "npx",
"args": [
"-y",
"camoufox-mcp"
]
}
}
} {
"servers": {
"baixianger-camoufox-mcp": {
"command": "npx",
"args": [
"-y",
"camoufox-mcp"
]
}
}
} codex mcp add baixianger-camoufox-mcp -- npx -y camoufox-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"baixianger-camoufox-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"camoufox-mcp"
],
"enabled": true
}
}
} openclaw mcp add baixianger-camoufox-mcp --command npx --arg -y --arg camoufox-mcp
mcp_servers:
baixianger-camoufox-mcp:
command: "npx"
args: ["-y", "camoufox-mcp"] {
"McpServers": {
"baixianger-camoufox-mcp": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"camoufox-mcp"
]
}
}
} assistant mcp add baixianger-camoufox-mcp -t stdio -c npx -a -y camoufox-mcp
{
"mcpServers": {
"baixianger-camoufox-mcp": {
"command": "npx",
"args": [
"-y",
"camoufox-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 −4
- Stability: pass → 0.77 functional
- 19 Sept 26 +1
- CVE-2026-77301 affects this package: high ▼ security
- Stability: 0.97 → pass security
- 17 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 16 Sept 26 +5
- Source repository: unverified → pass ▲ security
- 15 Sept 26 −4
- Provenance: pass → unverified ▼ security
- 13 Sept 26 −3
- Stability: pass → 0.80 functional
- 12 Sept 26 +1
- Stability: 0.97 → pass security
- 10 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed npm/camoufox-mcp@1.0.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Vulnerabilities 3 findings
| ID | CVE | Severity | Vector | Fix available |
|---|---|---|---|---|
| GHSA-7q85-xj36-vmfc | CVE-2026-77301 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H | yes |
| GHSA-vwc7-r8mq-g2x9 | CVE-2026-76845 | medium | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:N/I:H/A:N | no |
| GHSA-xcpc-8h2w-3j85 | CVE-2026-39244 | high | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H | yes |
Background: What a vulnerability scan can and cannot prove →
Dependencies 184 packages
| Packages resolved | 184 |
|---|---|
| Deprecated | 2 |
| Stale | 59 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
clear_console_logs ~31
Clear captured console logs
| Name | Type | Req | Description |
|---|---|---|---|
| pageId | string | – | Page ID (uses active page if not specified) |
No output schema declared.
No examples provided.
clear_network_logs ~31
Clear captured network logs
| Name | Type | Req | Description |
|---|---|---|---|
| pageId | string | – | Page ID (uses active page if not specified) |
No output schema declared.
No examples provided.
click ~80
Click an element by its UID from snapshot
| Name | Type | Req | Description |
|---|---|---|---|
| button | string | – | – |
| clickCount | number | – | 1 for single click, 2 for double |
| modifiers | array | – | Modifier keys to hold |
| pageId | string | – | Page ID (uses active page if not specified) |
| uid | string | yes | Element UID from snapshot |
No output schema declared.
No examples provided.
close_page ~29
Close a browser page/tab
| Name | Type | Req | Description |
|---|---|---|---|
| pageId | string | yes | The ID of the page to close |
No output schema declared.
No examples provided.
close_session ~30
Close a browser session and all its pages
| Name | Type | Req | Description |
|---|---|---|---|
| sessionId | string | yes | The session ID to close |
No output schema declared.
No examples provided.
create_session ~63
Create a new isolated browser session with its own cookies and localStorage. Optionally pre-load context from a JSON file.
| Name | Type | Req | Description |
|---|---|---|---|
| contextPath | string | – | Path to a browser context JSON file to pre-load |
| name | string | – | Human-readable name for the session |
No output schema declared.
No examples provided.
dismiss_popups ~57
Dismiss cookie consent popups and overlays
| Name | Type | Req | Description |
|---|---|---|---|
| customSelectors | array | – | Additional selectors to try |
| maxAttempts | number | – | Maximum attempts |
| pageId | string | – | Page ID (uses active page if not specified) |
No output schema declared.
No examples provided.
drag ~57
Drag an element to another element
| Name | Type | Req | Description |
|---|---|---|---|
| fromUid | string | yes | Element UID to drag from |
| pageId | string | – | Page ID (uses active page if not specified) |
| toUid | string | yes | Element UID to drag to |
No output schema declared.
No examples provided.
evaluate_isolated ~216
Execute JavaScript in an ISOLATED context (sandboxed, separate from page scripts). USE THIS TOOL WHEN YOU NEED TO: - Make async operations (fetch, setTimeout, Promises) - Query/manipulate the DOM without affecting page state - Run code that shouldn't interfere with page scripts - Perform async data extraction or waiting LIMITATIONS: - CANNOT access window globals (window.__NUXT__, etc. will be undefined) - CANNOT call functions defined by page scripts - Only has access to DOM and standard browser APIs EXAMPLES: - "await fetch('/api/data').then(r => r.json())" → Make API calls - "document.querySelectorAll('.item').length" → Count elements - "await new Promise(r => setTimeout(r, 1000))" → Wait/delay
| Name | Type | Req | Description |
|---|---|---|---|
| pageId | string | – | Page ID (uses active page if not specified) |
| script | string | yes | JavaScript code (async/await allowed). Returns the expression result. |
No output schema declared.
No examples provided.
evaluate_mainworld ~248
Execute JavaScript in the page's MAIN execution context (same as browser DevTools console). USE THIS TOOL WHEN YOU NEED TO: - Access window globals like window.__NUXT__, window.__NEXT_DATA__, window.__APP_STATE__ - Read framework hydration state (Next.js, Nuxt.js, Vue, React, etc.) - Access variables/functions defined by the page's own scripts - Interact with third-party libraries loaded by the page (jQuery, etc.) CRITICAL LIMITATIONS: - NO async/await support - scripts must be SYNCHRONOUS only - NO Promise, fetch(), setTimeout callbacks - Script will be REJECTED if it contains async patterns EXAMPLES: - "window.__NUXT__" → Returns Nuxt.js state - "window.__NEXT_DATA__" → Returns Next.js props - "typeof jQuery !== 'undefined' ? jQuery.fn.jquery : null" → Check jQuery version
| Name | Type | Req | Description |
|---|---|---|---|
| pageId | string | – | Page ID (uses active page if not specified) |
| script | string | yes | SYNCHRONOUS JavaScript expression. No async/await/Promise/fetch allowed. Returns the expression result. |
No output schema declared.
No examples provided.
fill ~61
Fill a form field (input, textarea, select) by its UID
| Name | Type | Req | Description |
|---|---|---|---|
| pageId | string | – | Page ID (uses active page if not specified) |
| uid | string | yes | Element UID from snapshot |
| value | string | yes | Value to fill in |
No output schema declared.
No examples provided.
fill_form ~44
Fill multiple form fields at once
| Name | Type | Req | Description |
|---|---|---|---|
| fields | array | yes | List of fields to fill |
| pageId | string | – | Page ID (uses active page if not specified) |
No output schema declared.
No examples provided.
get_config_paths ~23
Get all config file paths (user config, package default, active)
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_console_logs ~79
Get captured console messages
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Maximum entries to return |
| onlyErrors | boolean | – | Only return errors/warnings |
| pageId | string | – | Page ID (uses active page if not specified) |
| pattern | string | – | Filter by text pattern (regex) |
| types | array | – | Filter by message types |
No output schema declared.
No examples provided.
get_framework_state ~46
Extract Next.js/Nuxt.js hydration state from the page
| Name | Type | Req | Description |
|---|---|---|---|
| framework | string | – | – |
| pageId | string | – | Page ID (uses active page if not specified) |
No output schema declared.
No examples provided.
get_network_logs ~57
Get captured network request logs
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Maximum entries to return |
| pageId | string | – | Page ID (uses active page if not specified) |
| urlPattern | string | – | Filter by URL pattern (regex) |
No output schema declared.
No examples provided.
get_page_text ~46
Extract text content from the page
| Name | Type | Req | Description |
|---|---|---|---|
| pageId | string | – | Page ID (uses active page if not specified) |
| selector | string | – | CSS selector (defaults to body) |
No output schema declared.
No examples provided.
get_recording_status ~32
Get current recording status
| Name | Type | Req | Description |
|---|---|---|---|
| pageId | string | – | Page ID (uses active page if not specified) |
No output schema declared.
No examples provided.
hover ~43
Hover over an element by its UID
| Name | Type | Req | Description |
|---|---|---|---|
| pageId | string | – | Page ID (uses active page if not specified) |
| uid | string | yes | Element UID from snapshot |
No output schema declared.
No examples provided.
init_user_config ~27
Initialize user config directory (~/.config/camoufox-mcp) with default settings
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
inject_context ~110
Inject browser context (cookies + localStorage) from a JSON file into a session or page's context. The file should follow Playwright's storageState format with cookies[] and origins[].localStorage[].
| Name | Type | Req | Description |
|---|---|---|---|
| contextPath | string | yes | Path to a browser context JSON file (Playwright storageState format) |
| pageId | string | – | Page ID — context will be injected into the page's session |
| sessionId | string | – | Session ID to inject into (uses active session if not specified) |
No output schema declared.
No examples provided.
intercept_network ~73
Intercept and block/modify network requests
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Action to take |
| modifyResponse | object | – | Response modifications (for action="modify") |
| pageId | string | – | Page ID (uses active page if not specified) |
| urlPattern | string | yes | URL pattern to intercept (glob) |
No output schema declared.
No examples provided.
list_context_files ~30
List available context files registered in settings. Use create_session with a contextPath to load one on demand.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_pages ~16
List all open browser pages/tabs
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_sessions ~19
List all browser sessions with their page counts and metadata
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
navigate_page ~86
Navigate to a URL or go back/forward/reload
| Name | Type | Req | Description |
|---|---|---|---|
| pageId | string | – | Page ID (uses active page if not specified) |
| timeout | number | – | Timeout in milliseconds |
| type | string | – | Navigation type |
| url | string | – | URL to navigate to (required for type="url") |
| waitUntil | string | – | When to consider navigation complete |
No output schema declared.
No examples provided.
new_page ~68
Create a new browser page/tab, optionally navigating to a URL. Specify sessionId to create in a specific session.
| Name | Type | Req | Description |
|---|---|---|---|
| sessionId | string | – | Session ID to create the page in (uses active session if not specified) |
| url | string | – | URL to navigate to after creating the page |
No output schema declared.
No examples provided.
press_key ~55
Press a keyboard key or combination
| Name | Type | Req | Description |
|---|---|---|---|
| key | string | yes | Key to press (e.g., "Enter", "Tab", "Control+a") |
| pageId | string | – | Page ID (uses active page if not specified) |
No output schema declared.
No examples provided.
reload_settings ~27
Reload settings from config file
| Name | Type | Req | Description |
|---|---|---|---|
| configPath | string | – | Path to settings.json file |
No output schema declared.
No examples provided.
remove_intercept ~48
Remove network intercept rules
| Name | Type | Req | Description |
|---|---|---|---|
| pageId | string | – | Page ID (uses active page if not specified) |
| urlPattern | string | – | URL pattern to remove (omit to remove all) |
No output schema declared.
No examples provided.
save_session ~56
Export a session's cookies and localStorage to a JSON file (Playwright storageState format)
| Name | Type | Req | Description |
|---|---|---|---|
| outputPath | string | yes | File path to write the session state JSON |
| sessionId | string | yes | The session ID to save |
No output schema declared.
No examples provided.
select_page ~34
Set a page as the active page for subsequent operations
| Name | Type | Req | Description |
|---|---|---|---|
| pageId | string | yes | The ID of the page to select |
No output schema declared.
No examples provided.
start_console_capture ~43
Start capturing browser console messages
| Name | Type | Req | Description |
|---|---|---|---|
| pageId | string | – | Page ID (uses active page if not specified) |
| types | array | – | Filter by message types |
No output schema declared.
No examples provided.
start_network_capture ~53
Start capturing network requests
| Name | Type | Req | Description |
|---|---|---|---|
| pageId | string | – | Page ID (uses active page if not specified) |
| resourceTypes | array | – | Filter by resource types (document, xhr, fetch, script, etc.) |
No output schema declared.
No examples provided.
start_recording ~39
Start recording user interactions (clicks, scrolls, inputs)
| Name | Type | Req | Description |
|---|---|---|---|
| pageId | string | – | Page ID (uses active page if not specified) |
No output schema declared.
No examples provided.
stop_console_capture ~31
Stop capturing console messages
| Name | Type | Req | Description |
|---|---|---|---|
| pageId | string | – | Page ID (uses active page if not specified) |
No output schema declared.
No examples provided.
stop_network_capture ~31
Stop capturing network requests
| Name | Type | Req | Description |
|---|---|---|---|
| pageId | string | – | Page ID (uses active page if not specified) |
No output schema declared.
No examples provided.
stop_recording ~33
Stop recording and return captured actions
| Name | Type | Req | Description |
|---|---|---|---|
| pageId | string | – | Page ID (uses active page if not specified) |
No output schema declared.
No examples provided.
take_screenshot ~83
Take a screenshot of the page or a specific element
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | – |
| fullPage | boolean | – | Capture full scrollable page |
| pageId | string | – | Page ID (uses active page if not specified) |
| quality | number | – | Quality for JPEG/WebP |
| uid | string | – | Element UID to screenshot (from snapshot) |
No output schema declared.
No examples provided.
take_snapshot ~51
Take a text snapshot of the page with interactive element UIDs for targeting
| Name | Type | Req | Description |
|---|---|---|---|
| pageId | string | – | Page ID (uses active page if not specified) |
| verbose | boolean | – | Include all accessibility properties |
No output schema declared.
No examples provided.
wait_for ~76
Wait for text or selector to appear on the page
| Name | Type | Req | Description |
|---|---|---|---|
| pageId | string | – | Page ID (uses active page if not specified) |
| selector | string | – | CSS selector to wait for |
| state | string | – | – |
| text | string | – | Text to wait for |
| timeout | number | – | Timeout in milliseconds |
No output schema declared.
No examples provided.
wait_for_navigation ~63
Wait for page navigation to complete
| Name | Type | Req | Description |
|---|---|---|---|
| pageId | string | – | Page ID (uses active page if not specified) |
| timeout | number | – | Timeout in milliseconds |
| url | string | – | URL pattern to wait for |
| waitUntil | string | – | – |
No output schema declared.
No examples provided.
What is the io.github.baixianger/camoufox-mcp server?
io.github.baixianger/camoufox-mcp is listed in the public MCP registry as io.github.baixianger/camoufox-mcp. Anti-detection browser automation with Camoufox - stealth Firefox for web scraping. This page covers its npm package (camoufox-mcp).
Is the io.github.baixianger/camoufox-mcp server safe to use?
io.github.baixianger/camoufox-mcp scores 75 out of 100 on VerifyMCP. We recorded 3 known advisories against it as of 20 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.baixianger/camoufox-mcp server expose?
io.github.baixianger/camoufox-mcp exposes 42 tools: list_pages, new_page, select_page, close_page, navigate_page, and 37 more. Their descriptions and schemas cost roughly 2,425 tokens of context every time the server is loaded.
Is the io.github.baixianger/camoufox-mcp server still maintained?
io.github.baixianger/camoufox-mcp is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the io.github.baixianger/camoufox-mcp server under?
io.github.baixianger/camoufox-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.