servers / mcp-camoufox

mcp-camoufox

communitystdiolocaldestructive capablehealthy

MCP server for stealth browser automation via Camoufox — 79 tools, npx install, anti-bot stealth


01Tools · 102

How to read this: tool names here are observed from a live tools/list handshake. The Risk label is a heuristic inferred from the tool name (write/destructive verbs), not from executing the tool — a conservative guess, not a verified capability. We never escalate risk from a description. Found one that's wrong? Tell us — we fix on report.

ToolRiskSide effectsApproval
go_back
Navigate back in history.
unknownunknownunknown
screenshot
Take a screenshot of the current page.
unknownunknownunknown
hover
Hover over element by ref ID.
unknownunknownunknown
uncheck
Uncheck a checkbox.
unknownunknownunknown
browser_launch
Launch Camoufox stealth browser and navigate to URL. Browser persists between calls. By default cookies/localStorage persist in ~/.camoufox-mcp/profile. Set fresh_profile=true to start with a clean temp profile (auto-cleaned on browser_close) — useful when switching between accounts on the same domain.
unknownunknownunknown
navigate
Navigate to a URL.
unknownunknownunknown
browser_close
Close the browser. Cookies are preserved in the persistent profile (~/.camoufox-mcp/profile). If the launch used fresh_profile=true, the temp profile is removed.
unknownunknownunknown
go_forward
Navigate forward in history.
unknownunknownunknown
click
Click element by ref ID from browser_snapshot. Auto JS-fallback for overlays.
unknownunknownunknown
fill
Fill input/textarea by ref ID. Clears existing content.
unknownunknownunknown
reset_profile
Delete the persistent profile (~/.camoufox-mcp/profile) entirely. Use to start fresh — cookies, localStorage, history all wiped. Browser must be closed first (call browser_close before this).
unknownunknownunknown
reload
Reload the current page.
unknownunknownunknown
click_text
Click element by visible text.
unknownunknownunknown
select_option
Select option from <select> dropdown.
unknownunknownunknown
browser_snapshot
Get visible interactive elements with ref IDs. Use refs with click/fill. Always call after navigation. On large pages (Outlook, dashboards) the response can be truncated — narrow with roles=["button","textbox"] or paginate with offset/limit. Refs stay stable regardless of filters (every visible element is still numbered).
readfalseunknown
click_role
Click element by ARIA role and name.
unknownunknownunknown
check
Check checkbox or radio button.
unknownunknownunknown
type_text
Type text char by char via keyboard.
unknownunknownunknown
wait_for_any_of
Race multiple wait conditions — returns the first that matches, so the agent can branch immediately without sequential probes. Each condition is {kind: 'selector'|'text'|'url_contains'|'title_contains', value: string}. Returns the index + kind + value of the winning condition (or 'timeout' if none matched). Ideal for post-login flows where the next page could be any of several (e.g. 'Stay signed in?', 'Skip for now', or the inbox directly).
readfalseunknown
get_html
Get HTML content from page or element.
readfalseunknown
press_key
Press key or combo (Enter, Escape, Control+a, etc.).
unknownunknownunknown
evaluate
Execute JavaScript in page context.
unknownunknownunknown
wait_for
Wait for element/text to appear or disappear.
unknownunknownunknown
get_url
Get current URL and title.
readfalseunknown
wait_for_navigation
Wait for page load to complete.
unknownunknownunknown
get_text
Get visible text from page or element.
readfalseunknown
tab_select
Switch to a tab by index, or by url_contains (first tab whose URL contains the substring).
unknownunknownunknown
tab_list
List all open tabs.
readfalseunknown
cookie_list
List cookies.
readfalseunknown
upload_file
Upload file to file input.
writetrueunknown
tab_new
Open new tab.
unknownunknownunknown
cookie_set
Set a cookie.
writetrueunknown
scroll
Scroll the page.
unknownunknownunknown
network_get
List captured network requests (newest first-capped). Each row shows an #id usable with network_get_detail.
readfalseunknown
tab_close
Close a tab by index (-1 = active), or by url_contains.
unknownunknownunknown
dialog_handle
Set handler for next alert/confirm/prompt.
unknownunknownunknown
console_get
Get captured console messages.
readfalseunknown
save_pdf
Save page as PDF.
unknownunknownunknown
navigate_and_snapshot
Navigate to URL then return snapshot — combined in one call.
unknownunknownunknown
get_links
Get all links on the page with URL and text.
readfalseunknown
sessionstorage_get
Get all sessionStorage data or a specific key.
readfalseunknown
cookie_delete
Delete cookies. Both empty = clear all.
destructivetruetrue
console_start
Start capturing console messages from all tabs.
unknownunknownunknown
network_get_detail
Full request + response detail (headers and text body) for one captured request. Requires network_start(capture_bodies=true) BEFORE the request fired. Identify the request by id (from network_get) or by url substring.
readfalseunknown
login_classic
Composite login for classic email→password forms (Google, Microsoft, generic SSO). Auto-detects the email field, clicks Next/Continue on multi-step forms, fills the password, submits, and optionally enters a TOTP 2FA code. Collapses the usual 5–8 fill/click/snapshot calls into one. Heuristic — if a form is unusual, fall back to individual fill/click tools. Returns the step log + a fresh snapshot.
readfalseunknown
query_selector_all
Query elements by CSS selector, return text/attributes of all matches.
readfalseunknown
localstorage_clear
Clear all localStorage.
unknownunknownunknown
network_start
Start capturing network requests. With capture_bodies=true also records request/response headers + text bodies (json/text/xml/form only, capped at body_limit bytes) so you can inspect API payloads via network_get_detail — no need to pivot to evaluate()+fetch().
readfalseunknown
batch_actions
Execute multiple actions in one call. Each action: {type, ref?, value?, text?, key?, url?}.
unknownunknownunknown
inspect_element
Get detailed info about an element (tag, attributes, bounding box, styles).
readfalseunknown
localstorage_get
Get all localStorage data or a specific key.
readfalseunknown
sessionstorage_set
Set a sessionStorage item.
writetrueunknown
drag_and_drop
Drag from one element to another.
destructivetruetrue
fill_form
Fill multiple form fields and optionally submit.
unknownunknownunknown
get_attribute
Get a specific attribute value from an element.
readfalseunknown
localstorage_set
Set a localStorage item.
writetrueunknown
mouse_click_xy
Click at exact x,y coordinates. steps>0 adds interpolated pre-movement (human-like).
unknownunknownunknown
mouse_move
Move mouse to x,y. steps>0 interpolates path (human-like).
writetrueunknown
frame_evaluate
Execute JavaScript inside a specific frame/iframe.
unknownunknownunknown
set_viewport_size
Set viewport width and height.
writetrueunknown
click_turnstile
Auto-solve Cloudflare Interactive Turnstile checkbox. Locates the widget via in-page selectors AND the Playwright frame API (handles closed shadow roots that document.querySelector misses), polls for render, skips if already solved, then does a humanized real-mouse click with retries + small nudge, verifying the cf-turnstile-response token after each attempt. Managed Challenge full-page interstitials still need mcp-stealth-chrome.
unknownunknownunknown
list_frames
List all frames/iframes in the page.
readfalseunknown
get_viewport_size
Get current viewport dimensions.
readfalseunknown
get_page_errors
Get JavaScript errors from the page.
readfalseunknown
extract_structured
Extract structured data from repeated elements (cards, rows, listings). Auto-deduplicates, filters empty items, extracts direct text only. Use detect_content_pattern first to find correct selectors.
readfalseunknown
back_and_snapshot
Navigate back + return snapshot.
unknownunknownunknown
find_by_label
Find input element by its label text (<label>). Returns ref.
readfalseunknown
page_stats
Page statistics: element count, size, load metrics. Use to decide extraction strategy.
readfalseunknown
wait_for_url
Wait for URL to match a pattern.
unknownunknownunknown
accessibility_snapshot
Get accessibility tree snapshot — compact view of page structure for LLM understanding.
readfalseunknown
export_har
Export network traffic as HAR file.
unknownunknownunknown
wait_for_response
Wait for a network response matching a URL pattern.
unknownunknownunknown
server_status
Health check — verify server, browser status, active tabs.
readfalseunknown
detect_content_pattern
Auto-detect repeated content patterns (cards, listings, rows) and suggest CSS selectors. Run this BEFORE extract_structured to find the right selectors.
readfalseunknown
wait_and_snapshot
Wait for selector/text then return snapshot. Combines wait_for + browser_snapshot in one call.
unknownunknownunknown
find_by_text
Find element by visible text — returns ref ID or null. Skip browser_snapshot if you know exact text.
readfalseunknown
cookie_import
Import cookies from JSON (from cookie_export). Restores session state.
unknownunknownunknown
inject_init_script
Inject a script that runs before every page load.
unknownunknownunknown
extract_table
Extract data from an HTML table as JSON array.
unknownunknownunknown
reload_and_snapshot
Reload page + return snapshot.
unknownunknownunknown
find_by_placeholder
Find input by placeholder text. Returns ref.
readfalseunknown
storage_state_save
Save cookies + localStorage to a JSON file. Reload via storage_state_load on a fresh browser to skip login/CF entirely.
unknownunknownunknown
scrape_page
Smart page scraper — auto-detect and extract main content, links, metadata. Strips nav/footer noise.
unknownunknownunknown
click_and_snapshot
Click element by ref + wait + return snapshot. Perfect for buttons that trigger navigation/dialog.
unknownunknownunknown
cookie_export
Export all cookies as JSON string. Use with cookie_import to transfer session.
unknownunknownunknown
storage_state_load
Load cookies + localStorage from a JSON file (created by storage_state_save). Bypass CF/login if session is fresh.
unknownunknownunknown
humanize_click
Click element with humanized mouse approach (3-step Bezier-like curve before click). Use for anti-bot pages.
unknownunknownunknown
mouse_replay
Replay last recorded mouse path with original timing.
unknownunknownunknown
auth_capture
Save current session as named auth state (e.g. logged-in user). Convenience wrapper: storage_state_save to ~/.camoufox-mcp/sessions/<name>.json
unknownunknownunknown
humanize_type
Type text with Gaussian-distributed delays between keystrokes (mean ~80ms, sigma ~30ms). Mimics human typing rhythm.
unknownunknownunknown
cookie_export_file
Export all cookies to a JSON file (Playwright format).
unknownunknownunknown
mouse_drift
Random mouse movements over a duration — builds up mouse history before action (CF/DataDome behavior analysis).
unknownunknownunknown
detect_anti_bot
Heuristic detection of anti-bot vendor on current page (Cloudflare, DataDome, Akamai, PerimeterX, Imperva).
unknownunknownunknown
click_and_wait
Click element then wait for navigation or selector. Atomic — fewer roundtrips than separate click + wait_for.
unknownunknownunknown
cookie_import_file
Import cookies from a JSON file (Playwright format).
unknownunknownunknown
mouse_record
Start recording mouse positions (call mouse_replay later). Returns recorder handle.
readfalseunknown
assert_element_visible
Assert element exists and is visible. Returns success/fail (no throw).
readfalseunknown
wait_for_network_idle
Wait until network is idle for N ms (no in-flight requests). Better than fixed timeouts for SPAs.
unknownunknownunknown
session_warmup
Visit innocuous public sites (Google, Wikipedia) to build browsing history before targeting protected site. Helps with CF/DataDome IP scoring.
unknownunknownunknown
assert_url_matches
Assert current URL matches pattern (substring or regex).
unknownunknownunknown
assert_text_present
Assert text is present anywhere on page (case-sensitive substring).
unknownunknownunknown
describe_page
Compact LLM-friendly page summary (title, heading, key buttons, forms). Cheaper than browser_snapshot for agent context. Also returns `intent` — a classified hint of what kind of page this is (login_email, login_password, otp_input, captcha, stay_signed_in, protect_account, error_page, consent, two_factor, account_disabled, content, unknown) — so the agent can branch with one read.
readfalseunknown

02Install & source
npx -y mcp-camoufox@latest
npx

05Provenance & freshness
sourcesGitHub repo search [p4]
last_checked2026-07-29 08:57Z
next_check2026-07-31 08:40Z
cadenceevery 48h
verifiedtools_list:passed handshake:passed metadata:passed
index_statusindex8 unique facts >= 5

06Badge

Add the “as seen on MCPExplorer” badge to your README. mcp-camoufox MCP — as seen on mcpexplorer.com

[![mcp-camoufox MCP — as seen on mcpexplorer.com](https://mcpexplorer.com/badge/mcp-camoufox.svg)](https://mcpexplorer.com/servers/mcp-camoufox)

Next step

This is one server. A loadout combines the right servers, governance, and proven plays for a whole job — assembled deliberately, not tool-dumped.

Explore loadouts →