We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/redf0x1/camofox-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
server.json•11.1 KiB
{
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json",
"name": "camofox-mcp",
"description": "Anti-detection browser automation MCP server. 41 tools wrapping CamoFox REST API with stealth fingerprinting that passes bot detection.",
"repository": {
"url": "https://github.com/redf0x1/camofox-mcp",
"source": "github"
},
"version_detail": {
"version": "1.10.0",
"release_date": "2026-02-25",
"is_stable": true
},
"packages": [
{
"registry_name": "npm",
"name": "camofox-mcp",
"version": "1.10.0",
"runtime": "node",
"runtime_arguments": [],
"package_arguments": [],
"environment_variables": [
{
"name": "CAMOFOX_URL",
"description": "CamoFox server URL",
"required": false,
"default": "http://localhost:9377"
},
{
"name": "CAMOFOX_TIMEOUT",
"description": "Request timeout in ms",
"required": false,
"default": "30000"
},
{
"name": "CAMOFOX_API_KEY",
"description": "Optional API key for authentication",
"required": false
},
{
"name": "CAMOFOX_TRANSPORT",
"description": "Transport mode: stdio or http",
"required": false,
"default": "stdio"
},
{
"name": "CAMOFOX_HTTP_PORT",
"description": "HTTP server port for Streamable MCP transport",
"required": false,
"default": "3000"
},
{
"name": "CAMOFOX_HTTP_HOST",
"description": "HTTP server bind address",
"required": false,
"default": "127.0.0.1"
},
{
"name": "CAMOFOX_HTTP_RATE_LIMIT",
"description": "Maximum HTTP requests per minute",
"required": false,
"default": "60"
},
{
"name": "CAMOFOX_PROFILES_DIR",
"description": "Custom profiles directory for session persistence",
"required": false,
"default": "~/.camofox-mcp/profiles/"
}
]
}
],
"tools": [
{"name": "batch_click", "description": "Click multiple elements sequentially. Continues on error (clicks are independent). Returns per-click results."},
{"name": "camofox_close_session", "description": "Close all browser tabs for a user session. Use for complete cleanup when done with a browsing session.", "inputSchema": {"type": "object", "properties": {"tabId": {"type": "string", "description": "Any tab ID from the session to identify the user"}}, "required": ["tabId"], "additionalProperties": false}},
{"name": "camofox_evaluate_js", "description": "Execute JavaScript in the browser page context. Runs in isolated scope (invisible to page scripts — safe for anti-detection). Use for: extracting data not visible in accessibility snapshot, checking element properties, reading computed styles, manipulating DOM elements. Requires CAMOFOX_API_KEY to be configured."},
{"name": "camofox_hover", "description": "Hover over an element to trigger tooltips, dropdown menus, or hover states. Use ref from snapshot or CSS selector.", "inputSchema": {"type": "object", "properties": {"tabId": {"type": "string", "description": "Tab ID"}, "ref": {"type": "string", "description": "Element ref from snapshot (e.g. 'e5')"}, "selector": {"type": "string", "description": "CSS selector (e.g. '#menu-item', '.dropdown-trigger')"}}, "required": ["tabId"], "additionalProperties": false}},
{"name": "camofox_press_key", "description": "Press a keyboard key. Use after type_text to submit forms (Enter), navigate between elements (Tab), move through suggestions (ArrowDown/ArrowUp), or dismiss dialogs (Escape). Common keys: Enter, Tab, Escape, ArrowDown, ArrowUp, Backspace, Space."},
{"name": "camofox_scroll_element", "description": "Scroll a specific container element (modal dialog, scrollable div, sidebar). Use when page-level scroll doesn't reach content inside modals or overflow containers. Returns scroll position metadata to track progress."},
{"name": "camofox_scroll_element_and_snapshot", "description": "Scroll a container element AND take a snapshot. Combines scroll_element + snapshot in one call. Perfect for incrementally loading lazy content in modals (e.g. Facebook group post comments). Returns both scroll position and page snapshot."},
{"name": "camofox_wait_for", "description": "Wait for page to be fully ready (DOM loaded, network idle, framework hydration complete). Use after navigation or actions that trigger page changes.", "inputSchema": {"type": "object", "properties": {"tabId": {"type": "string", "description": "Tab ID"}, "timeout": {"type": "number", "description": "Timeout in ms (default: 10000)"}, "waitForNetwork": {"type": "boolean", "description": "Wait for network idle (default: true)"}}, "required": ["tabId"], "additionalProperties": false}},
{"name": "camofox_wait_for_text", "description": "Wait for specific text to appear on the page. Useful for waiting for search results, form submissions, or dynamic content loading.", "inputSchema": {"type": "object", "properties": {"tabId": {"type": "string", "description": "Tab ID"}, "text": {"type": "string", "description": "Text to wait for"}, "timeout": {"type": "number", "description": "Timeout in ms (default: 10000)"}}, "required": ["tabId", "text"], "additionalProperties": false}},
{"name": "click", "description": "Click an element. Provide either ref (from snapshot) or CSS selector. Use snapshot first to discover element refs."},
{"name": "close_tab", "description": "Close a browser tab and release resources. Always close tabs when done to free memory."},
{"name": "create_tab", "description": "Create a new browser tab with anti-detection fingerprinting. Each tab gets a unique fingerprint. Optionally provide a URL and userId for session isolation. Returns the tab ID for subsequent operations."},
{"name": "delete_download", "description": "Delete a downloaded file from disk and registry"},
{"name": "fill_form", "description": "Fill multiple form fields in one call. Provide an array of field entries, each with a ref or CSS selector and the text to type. Optionally specify a submit button to click after filling."},
{"name": "batch_download", "description": "Extract resources from a DOM container and download them all. Combines extract_resources + download in one call. Useful for downloading all images from a chat, all PDFs from a table, etc."},
{"name": "extract_resources", "description": "Extract resources (images, links, media, documents) from a specific DOM container. Use a CSS selector or element ref from snapshot to scope extraction to a particular section of the page. This is useful for extracting all images from a specific post, all links from a table, etc."},
{"name": "get_download", "description": "Get a downloaded file. Images are always returned as viewable images. Recommended for AI agents: set includeContent=true to get non-image file content as base64 inline (max 256KB). Otherwise returns metadata only (including contentUrl)."},
{"name": "get_links", "description": "Get all hyperlinks on page with URLs and text. Useful for navigation discovery and site mapping."},
{"name": "get_stats", "description": "Get session statistics: request counts, active tabs, uptime, performance metrics."},
{"name": "go_back", "description": "Navigate backward in browser history (Back button). Returns new page URL."},
{"name": "go_forward", "description": "Navigate forward in browser history (Forward button). Returns new page URL."},
{"name": "import_cookies", "description": "Import cookies for authenticated sessions. Provide cookies as JSON string array. Restores login sessions without re-auth. Requires userId."},
{"name": "list_presets", "description": "List all available geo presets supported by the CamoFox server. Presets include locale, timezone, and optional geolocation."},
{"name": "list_downloads", "description": "List downloaded files with optional filtering by tab, status, extension, MIME type, and size range. Each download includes contentUrl for direct file retrieval."},
{"name": "save_profile", "description": "Export cookies from an active tab and save them to a named session profile on disk."},
{"name": "load_profile", "description": "Load a named session profile from disk and import its cookies into a tab's browser session."},
{"name": "list_profiles", "description": "List saved session profiles with basic metadata."},
{"name": "delete_profile", "description": "Delete a saved session profile from disk."},
{"name": "list_tabs", "description": "List all open browser tabs with URLs and titles. Use to discover available tabs or verify tab state."},
{"name": "navigate", "description": "Navigate a tab to a URL. Waits for page load. Use create_tab first, then navigate. Returns final URL (may differ due to redirects)."},
{"name": "navigate_and_snapshot", "description": "Navigate to a URL and return the page snapshot. Combines navigate + wait + snapshot into one call."},
{"name": "refresh", "description": "Reload the current page. Useful when page state is stale or after changes."},
{"name": "screenshot", "description": "Take visual screenshot as base64 PNG. Use ONLY for visual verification (CSS, layout, proof). Prefer snapshot for most tasks — much more token-efficient."},
{"name": "scroll", "description": "Scroll page up or down by pixel amount. Use to reveal content below the fold or navigate long pages."},
{"name": "scroll_and_snapshot", "description": "Scroll the page and take a snapshot. Useful for revealing content below the fold."},
{"name": "server_status", "description": "Check CamoFox server health and browser connection. Call first to verify server is running. Returns version, browser status, and active tab count."},
{"name": "snapshot", "description": "Get accessibility tree snapshot — the PRIMARY way to read page content. Returns element refs, roles, names and values. Token-efficient. Always prefer over screenshot. Element refs are used with click and type_text."},
{"name": "resolve_blobs", "description": "Resolve blob: URLs to downloadable base64 data. Blob URLs are temporary browser objects (common in Telegram, WhatsApp, Discord) that cannot be downloaded directly. This tool converts them to base64 data URIs."},
{"name": "type_and_submit", "description": "Type text into a field and press a key (default: Enter). Useful for search boxes and single-field forms."},
{"name": "type_text", "description": "Type text into an input field. Provide either a ref (from snapshot) or a CSS selector. Use ref when available; use selector as fallback when snapshot doesn't assign refs (common with combobox/autocomplete inputs). Call snapshot first to find target element."},
{"name": "web_search", "description": "Search the web via 14 engines: google, youtube, amazon, bing, duckduckgo, reddit, github, stackoverflow, wikipedia, twitter, linkedin, facebook, instagram, tiktok. Call snapshot after to read results."}
],
"categories": ["browser-automation", "web-scraping"],
"tags": ["anti-detection", "stealth", "fingerprint", "camoufox", "playwright-alternative"]
}