Stealth Browser MCP

by vibheksoni• 3.3k•• Scanned•Claim this listing•Request removal
Browser Automationai agent toolsai toolsanthropicanti bot bypassautomation tools

Stealth browser automation for AI agents over MCP and the Chrome DevTools Protocol: navigation, network hooks, DOM extraction, and pixel-accurate UI cloning.

Stealth Browser MCP is an open-source mcp server by vibheksoni, written mainly in Python, with 3,309 GitHub stars and the MIT license. Its code was last updated Oct 26, 2026.

Scan summary: scanned Nov 5, 2026 at commit f14dce3. Seen able to run shell commands, run dynamic code, read environment and secrets, control a web browser. Scan policy

Scanned
Full scan at f14dce3 · Nov 5, 2026
Scanned Builds Boots No undeclared egress Reproducible
Static code scanpass
Secrets scanpass
Dependency audit79 known vulnerabilitiesfail
Manifestnonewarn
Buildpass
Boot & handshake101 toolspass
Network egresspass
Reproducible (×3)pass

Findings (8)

  • high
    dependencies issue
    Details are available to the maintainer after claiming this listing.
  • high
    dependencies issue
    Details are available to the maintainer after claiming this listing.
  • high
    dependencies issue
    Details are available to the maintainer after claiming this listing.
  • high
    dependencies issue
    Details are available to the maintainer after claiming this listing.
  • medium
    python-multipart@0.0.9: 8 known vulnerabilities
    PYSEC-2026-1851, PYSEC-2026-1852, PYSEC-2026-3036, PYSEC-2026-3037, PYSEC-2026-3038 +3 more
    requirements.txt
  • low
    python-dotenv@1.1.1: 1 known vulnerability
    PYSEC-2026-2270
    requirements.txt
  • low
    idna@3.9.0: 1 known vulnerability
    PYSEC-2026-215
    requirements.txt
  • low
    No manifest declaring network access and environment variables (agent.json)

Network activity

During install
files.pythonhosted.orgpypi.org
While running
No connections

Tools exposed (101)

  • spawn_browser

    Spawn a new browser instance. Args: headless (bool): Run in headless mode. user_agent (Optional[str]): Custom user agent string. viewport_width (int): Viewport width in pixels. viewport_height (int): Viewport height in pixels. proxy (Optional[str]): Proxy server URL. browser

  • list_instances

    List all active browser instances. Returns: List[Dict[str, Any]]: List of browser instances with their current state.

  • close_instance

    Close a browser instance. Args: instance_id (str): Browser instance ID. Returns: bool: True if closed successfully.

  • get_instance_state

    Get detailed state of a browser instance. Args: instance_id (str): Browser instance ID. Returns: Optional[Dict[str, Any]]: Complete state information.

  • navigate

    Navigate to a URL. Args: instance_id (str): Browser instance ID. url (str): URL to navigate to. wait_until (str): Wait condition - 'load', 'domcontentloaded', or 'networkidle'. timeout (int): Navigation timeout in milliseconds. referrer (Optional[str]): Referrer URL. Returns:

  • go_back

    Navigate back in history. Args: instance_id (str): Browser instance ID. Returns: bool: True if navigation was successful.

  • go_forward

    Navigate forward in history. Args: instance_id (str): Browser instance ID. Returns: bool: True if navigation was successful.

  • reload_page

    Reload the current page. Args: instance_id (str): Browser instance ID. ignore_cache (bool): Whether to ignore cache when reloading. Returns: bool: True if reload was successful.

  • query_elements

    Query DOM elements. Args: instance_id (str): Browser instance ID. selector (str): CSS selector or XPath (starts with '//'). text_filter (Optional[str]): Filter by text content. visible_only (bool): Only return visible elements. limit (Optional[Any]): Maximum number of elements t

  • click_element

    Click an element. Args: instance_id (str): Browser instance ID. selector (str): CSS selector or XPath. text_match (Optional[str]): Click element with matching text. timeout (int): Timeout in milliseconds. Returns: bool: True if clicked successfully.

  • type_text

    Type text into an input field with trusted keyboard events. Every character produces keydown, keypress, input, and keyup events. Args: instance_id (str): Browser instance ID. selector (str): CSS selector. text (str): Text to type. clear_first (bool): Clear fiel

  • paste_text

    Paste text instantly into an input field. Args: instance_id (str): Browser instance ID. selector (str): CSS selector or XPath. text (str): Text to paste. clear_first (bool): Clear field before pasting. Returns: bool: True if pasted successfully.

  • press_key

    Press a real key using trusted CDP key events. Sends Input.dispatchKeyEvent keyDown/keyUp pairs, so the page sees trusted events. Use this for control keys such as Enter, Tab, Escape, and the arrow keys in React-select, typeahead, and combobox widgets. Args: instance_id (str): Browser instance

  • file_upload

    Upload allowed local files to a <input type="file"> element via CDP DOM.setFileInputFiles. Resolves the actual file input even if the selector matches a wrapper element (Workday/Ashby/LinkedIn often hide the real input behind a styled button). Refuses multi-file upload when the input lacks the `mul

  • select_option

    Select an option from a dropdown. Args: instance_id (str): Browser instance ID. selector (str): CSS selector for the select element. value (Optional[str]): Option value attribute. text (Optional[str]): Option text content. index (Optional[Any]): Option index (0-based). Can be st

  • get_element_state

    Get complete state of an element. Args: instance_id (str): Browser instance ID. selector (str): CSS selector or XPath. Returns: Dict[str, Any]: Element state including attributes, style, position, etc.

  • wait_for_element

    Wait for an element to appear. Args: instance_id (str): Browser instance ID. selector (str): CSS selector or XPath. timeout (int): Timeout in milliseconds. visible (bool): Wait for element to be visible. text_content (Optional[str]): Wait for specific text content. Returns:

  • scroll_page

    Scroll the page. Args: instance_id (str): Browser instance ID. direction (str): 'down', 'up', 'left', 'right', 'top', or 'bottom'. amount (int): Pixels to scroll (ignored for 'top' and 'bottom'). smooth (bool): Use smooth scrolling. Returns: bool: True if scrolled successfully.

  • execute_script

    Execute JavaScript in page context. Args: instance_id (str): Browser instance ID. script (str): JavaScript code to execute. args (Optional[List[Any]]): Arguments to pass to the script. Returns: Dict[str, Any]: Script execution result.

  • get_page_content

    Get page HTML and text content. Args: instance_id (str): Browser instance ID. include_frames (bool): Include iframe information. Returns: Dict[str, Any]: Page content including HTML, text, and metadata.

  • take_screenshot

    Take a screenshot of the page. The image is returned as MCP image content with metadata. It is scaled down, keeping its aspect ratio, when it is wider than max_width, longer than 8000 pixels on a side, or too large to send inline. The metadata reports the original size and the scale used. Args:

  • list_network_requests

    List captured network requests. Args: instance_id (str): Browser instance ID. filter_type (Optional[str]): Filter by resource type (e.g., 'image', 'script', 'xhr'). Returns: Union[List[Dict[str, Any]], Dict[str, Any]]: List of network requests, or file metadata if response too large.

  • get_request_details

    Get detailed information about a network request. Args: request_id (str): Network request ID. Returns: Optional[Dict[str, Any]]: Request details including headers, cookies, and body.

  • get_response_details

    Get response details for a network request. Args: request_id (str): Network request ID. Returns: Optional[Dict[str, Any]]: Response details including status, headers, and metadata.

  • get_response_content

    Get response body content. Args: instance_id (str): Browser instance ID. request_id (str): Network request ID. Returns: Optional[str]: Response body as text (base64 encoded for binary).

  • search_network_requests

    Search network requests with advanced filters and pagination. Args: instance_id (str): Browser instance ID. url_pattern (Optional[str]): Filter by URL pattern (substring match). method (Optional[str]): Filter by HTTP method. status_code (Optional[int]): Filter by response status cod

  • export_network_data

    Export network data to JSON file. Args: instance_id (str): Browser instance ID. filepath (str): Path to save JSON file. Returns: bool: True if successful.

  • import_network_data

    Import network data from JSON file. Args: instance_id (str): Browser instance ID. filepath (str): Path to JSON file. Returns: bool: True if successful.

  • set_network_capture_filters

    Set resource type filters for network capture to reduce memory usage. Args: instance_id (str): Browser instance ID. include_types (Optional[List[str]]): Only capture these types (e.g., ['XHR', 'Fetch', 'Document']). exclude_types (Optional[List[str]]): Exclude these types (e.g., ['Image

  • get_network_capture_filters

    Get current network capture filters. Args: instance_id (str): Browser instance ID. Returns: Dict[str, List[str]]: Current filters with 'include' and 'exclude' lists.

  • modify_headers

    Modify request headers for future requests. Args: instance_id (str): Browser instance ID. headers (Dict[str, str]): Headers to add/modify. Returns: bool: True if modified successfully.

  • get_cookies

    Get cookies for current page or specific URLs. Args: instance_id (str): Browser instance ID. urls (Optional[List[str]]): Optional list of URLs to get cookies for. Returns: List[Dict[str, Any]]: List of cookies.

  • set_cookie

    Set a cookie. Args: instance_id (str): Browser instance ID. name (str): Cookie name. value (str): Cookie value. url (Optional[str]): The request-URI to associate with the cookie. domain (Optional[str]): Cookie domain. path (str): Cookie path. secure (bool): Secure flag.

  • clear_cookies

    Clear cookies. Args: instance_id (str): Browser instance ID. url (Optional[str]): Optional URL to clear cookies for (clears all if not specified). Returns: bool: True if cleared successfully.

  • get_debug_view

    Get comprehensive debug view with all logged errors and statistics. Args: max_errors (int): Maximum number of errors to include (default: 50). max_warnings (int): Maximum number of warnings to include (default: 50). max_info (int): Maximum number of info logs to include (default: 50).

  • clear_debug_view

    Clear all debug logs and statistics with timeout protection. Returns: bool: True if cleared successfully.

  • export_debug_logs

    Export debug logs to a file using the fastest available method with timeout protection. Args: filename (str): Name of the file to export to. max_errors (int): Maximum number of errors to export (default: 100). max_warnings (int): Maximum number of warnings to export (default: 100).

  • get_debug_lock_status

    Get current debug logger lock status for debugging hanging exports. Returns: Dict[str, Any]: Lock status information.

  • list_tabs

    List all tabs for a browser instance. Args: instance_id (str): Browser instance ID. Returns: List[Dict[str, str]]: List of tabs with their details.

  • switch_tab

    Switch to a specific tab by bringing it to front. Args: instance_id (str): Browser instance ID. tab_id (str): Target tab ID to switch to. Returns: bool: True if switched successfully.

  • close_tab

    Close a specific tab. Args: instance_id (str): Browser instance ID. tab_id (str): Tab ID to close. Returns: bool: True if closed successfully.

  • get_active_tab

    Get information about the currently active tab. Args: instance_id (str): Browser instance ID. Returns: Dict[str, Any]: Active tab information.

  • new_tab

    Open a new tab in the browser instance. Args: instance_id (str): Browser instance ID. url (str): URL to open in the new tab. Returns: Dict[str, Any]: New tab information.

  • extract_element_styles

    Extract complete styling information from an element. Args: instance_id (str): Browser instance ID. selector (str): CSS selector for the element. include_computed (bool): Include computed styles. include_css_rules (bool): Include matching CSS rules. include_pseudo (bool): Includ

  • extract_element_structure

    Extract complete HTML structure and DOM information. Args: instance_id (str): Browser instance ID. selector (str): CSS selector for the element. include_children (bool): Include child elements. include_attributes (bool): Include all attributes. include_data_attributes (bool): In

  • extract_element_events

    Extract complete event listener and JavaScript handler information. Args: instance_id (str): Browser instance ID. selector (str): CSS selector for the element. include_inline (bool): Include inline event handlers (onclick, etc.). include_listeners (bool): Include addEventListener at

  • extract_element_animations

    Extract CSS animations, transitions, and transforms. Args: instance_id (str): Browser instance ID. selector (str): CSS selector for the element. include_css_animations (bool): Include CSS @keyframes animations. include_transitions (bool): Include CSS transitions. include_transfo

  • extract_element_assets

    Extract all assets related to an element (images, fonts, etc.). Args: instance_id (str): Browser instance ID. selector (str): CSS selector for the element. include_images (bool): Include img src and related images. include_backgrounds (bool): Include background images. include_f

  • extract_element_styles_cdp

    Extract element styles using direct CDP calls (no JavaScript evaluation). This prevents hanging issues by using nodriver's native CDP methods. Args: instance_id (str): Browser instance ID selector (str): CSS selector for the element include_computed (bool): Include computed styles i

  • extract_related_files

    Discover and analyze related CSS/JS files for context. Args: instance_id (str): Browser instance ID. analyze_css (bool): Analyze linked CSS files. analyze_js (bool): Analyze linked JS files. follow_imports (bool): Follow @import and module imports (uses network). max_depth (int)

  • clone_element_complete

    Master function that extracts ALL element data using specialized functions. This is the ultimate element cloning tool that combines all extraction methods. Use this when you want complete element fidelity for recreation or analysis. Args: instance_id (str): Browser instance ID. selector (s

  • hot_reload

    Hot reload all modules without restarting the server. Reloading replaces the browser manager and network interceptor, so it is refused while browser instances are open to avoid orphaning them. Returns: str: Status message.

  • reload_status

    Check the status of loaded modules. Returns: str: Module status information.

  • validate_browser_environment_tool

    Validate browser environment and diagnose potential issues. Returns: Dict[str, Any]: Environment validation results with platform info and recommendations

  • clone_element_progressive

    Clone element progressively - returns lightweight base structure with element_id. Args: instance_id (str): Browser instance ID. selector (str): CSS selector for the element. include_children (bool): Whether to extract child elements. Returns: Dict[str, Any]: Base structure with ele

  • expand_styles

    Expand styles data for a stored element. Args: element_id (str): Element ID from clone_element_progressive(). categories (Optional[List[str]]): Style categories to include (layout, typography, colors, spacing, borders, backgrounds, effects, animation). properties (Optional[List[str]]):

  • expand_events

    Expand event listeners data for a stored element. Args: element_id (str): Element ID from clone_element_progressive(). event_types (Optional[List[str]]): Event types or sources to include (click, react, inline, addEventListener). Returns: Dict[str, Any]: Filtered event listeners data.

  • expand_children

    Expand children data for a stored element. Args: element_id (str): Element ID from clone_element_progressive(). depth_range (Optional[List]): [min_depth, max_depth] range to include. max_count (Optional[Any]): Maximum number of children to return. Returns: Dict[str, Any]: Filtered

  • expand_css_rules

    Expand CSS rules data for a stored element. Args: element_id (str): Element ID from clone_element_progressive(). source_types (Optional[List[str]]): CSS rule sources to include (inline, external stylesheet URLs). Returns: Dict[str, Any]: Filtered CSS rules data.

  • expand_pseudo_elements

    Expand pseudo-elements data for a stored element. Args: element_id (str): Element ID from clone_element_progressive(). Returns: Dict[str, Any]: Pseudo-elements data (::before, ::after, etc.).

  • expand_animations

    Expand animations and fonts data for a stored element. Args: element_id (str): Element ID from clone_element_progressive(). Returns: Dict[str, Any]: Animations, transitions, and fonts data.

  • list_stored_elements

    List all stored elements with their basic info. Returns: Dict[str, Any]: List of stored elements with metadata.

  • clear_stored_element

    Clear a specific stored element. Args: element_id (str): Element ID to clear. Returns: Dict[str, Any]: Success/error message.

  • clear_all_elements

    Clear all stored elements. Returns: Dict[str, Any]: Success message.

  • clone_element_to_file

    Clone element completely and save to file, returning file path instead of full data. This is ideal when you want complete element data but don't want to overwhelm the response with large JSON objects. The data is saved to a JSON file that can be read later. Args: instance_id (str): Browser ins

  • extract_complete_element_to_file

    Extract complete element using working comprehensive cloner and save to file. This uses the proven comprehensive extraction logic that returns large amounts of data, but saves it to a file instead of overwhelming the response. Args: instance_id (str): Browser instance ID. selector (str): C

  • extract_complete_element_cdp

    Extract complete element using native CDP methods for 100% accuracy. This uses Chrome DevTools Protocol's native methods to extract: - Complete computed styles via CSS.getComputedStyleForNode - Matched CSS rules via CSS.getMatchedStylesForNode - Event listeners via DOMDebugger.getEventListeners -

  • extract_element_styles_to_file

    Extract element styles and save to file, returning file path. Args: instance_id (str): Browser instance ID. selector (str): CSS selector for the element. include_computed (bool): Include computed styles. include_css_rules (bool): Include matching CSS rules. include_pseudo (bool)

  • extract_element_structure_to_file

    Extract element structure and save to file, returning file path. Args: instance_id (str): Browser instance ID. selector (str): CSS selector for the element. include_children (bool): Include child elements. include_attributes (bool): Include all attributes. include_data_attribute

  • extract_element_events_to_file

    Extract element events and save to file, returning file path. Args: instance_id (str): Browser instance ID. selector (str): CSS selector for the element. include_inline (bool): Include inline event handlers. include_listeners (bool): Include addEventListener handlers. include_fr

  • extract_element_animations_to_file

    Extract element animations and save to file, returning file path. Args: instance_id (str): Browser instance ID. selector (str): CSS selector for the element. include_css_animations (bool): Include CSS animations. include_transitions (bool): Include CSS transitions. include_trans

  • extract_element_assets_to_file

    Extract element assets and save to file, returning file path. Args: instance_id (str): Browser instance ID. selector (str): CSS selector for the element. include_images (bool): Include images. include_backgrounds (bool): Include background images. include_fonts (bool): Include f

  • list_clone_files

    List all element clone files saved to disk. Returns: List[Dict[str, Any]]: List of clone files with metadata and file information.

  • cleanup_clone_files

    Clean up old clone files to save disk space. Args: max_age_hours (int): Maximum age in hours for files to keep. Returns: Dict[str, int]: Number of files deleted.

  • list_cdp_commands

    List all available CDP Runtime commands for function execution. Returns: List[str]: List of available CDP command names.

  • execute_cdp_command

    Execute any CDP Runtime command with given parameters. Args: instance_id (str): Browser instance ID. command (str): CDP command name (e.g., 'evaluate', 'callFunctionOn'). params (Dict[str, Any], optional): Command parameters as a dictionary. IMPORTANT: Use snake_case paramet

  • add_script_to_evaluate_on_new_document

    Install JavaScript that runs before page scripts on each new document. Args: instance_id (str): Browser instance ID. source (str): JavaScript source to evaluate before page scripts. world_name (Optional[str]): Isolated world name, or None for the main world. include_command_line_api

  • get_execution_contexts

    Get all available JavaScript execution contexts. Args: instance_id (str): Browser instance ID. Returns: List[Dict[str, Any]]: List of execution contexts with their details.

  • discover_global_functions

    Discover all global JavaScript functions available in the page. Args: instance_id (str): Browser instance ID. context_id (str, optional): Optional execution context ID. Returns: List[Dict[str, Any]]: List of discovered functions with their details.

  • discover_object_methods

    Discover methods of a specific JavaScript object. Args: instance_id (str): Browser instance ID. object_path (str): Path to the object (e.g., 'document', 'window.localStorage'). Returns: List[Dict[str, Any]]: List of discovered methods.

  • call_javascript_function

    Call a JavaScript function with arguments. Args: instance_id (str): Browser instance ID. function_path (str): Full path to the function (e.g., 'document.getElementById'). args (List[Any], optional): List of arguments to pass to the function. Returns: Dict[str, Any]: Function call r

  • inspect_function_signature

    Inspect a JavaScript function's signature and details. Args: instance_id (str): Browser instance ID. function_path (str): Full path to the function. Returns: Dict[str, Any]: Function signature and details.

  • inject_and_execute_script

    Inject and execute custom JavaScript code. Args: instance_id (str): Browser instance ID. script_code (str): JavaScript code to execute. context_id (str, optional): Optional execution context ID. Returns: Dict[str, Any]: Script execution result.

  • create_persistent_function

    Create a persistent JavaScript function that survives page reloads. Args: instance_id (str): Browser instance ID. function_name (str): Name for the function. function_code (str): JavaScript function code. Returns: Dict[str, Any]: Function creation result.

  • execute_function_sequence

    Execute a sequence of JavaScript function calls. Args: instance_id (str): Browser instance ID. function_calls (List[Dict[str, Any]]): List of function calls, each with 'function_path', 'args', and optional 'context_id'. Returns: List[Dict[str, Any]]: List of function call results.

  • create_page_binding

    Expose window.<binding_name>(...args) so page JavaScript can call back to you. Each call returns a Promise in the page and is queued here. Read calls with get_page_binding_calls and answer them with resolve_page_binding_call, or set auto_resolve to answer every call immediately with auto_response.

  • get_page_binding_calls

    Read calls made by page JavaScript to page bindings. Pending calls stay queued until resolved. Auto-resolved calls are returned once and then removed. Args: instance_id (str): Browser instance ID. binding_name (Optional[str]): Only return calls to this binding. wait_seconds (float): Wa

  • resolve_page_binding_call

    Answer a pending page binding call. Args: instance_id (str): Browser instance ID. call_id (str): Call ID from get_page_binding_calls. result (Optional[Any]): JSON value the page Promise resolves with. error (Optional[str]): Reject the page Promise with this message instead. Returns

  • remove_page_binding

    Remove a page binding from every tab and reject its pending calls. Args: instance_id (str): Browser instance ID. binding_name (str): Binding to remove. Returns: Dict[str, Any]: Removal result.

  • execute_python_in_browser

    Execute Python code by translating it to JavaScript. Args: instance_id (str): Browser instance ID. python_code (str): Python code to translate and execute. Returns: Dict[str, Any]: Execution result.

  • get_function_executor_info

    Get information about the CDP function executor state. Args: instance_id (str, optional): Optional browser instance ID for specific info. Returns: Dict[str, Any]: Function executor state and capabilities.

  • create_dynamic_hook

    Create a new dynamic hook with AI-generated Python function. This is the new powerful hook system that allows AI to write custom Python functions that process network requests in real-time with no pending state. Args: name (str): Human-readable hook name requirements (Dict[str, Any]): Matc

  • create_simple_dynamic_hook

    Create a simple dynamic hook using predefined templates (easier for AI). Args: name (str): Hook name url_pattern (str): URL pattern to match action (str): Action type - 'block', 'redirect', 'add_headers', or 'log' target_url (Optional[str]): Target URL for redirect action custom

  • list_dynamic_hooks

    List all dynamic hooks. Args: instance_id (Optional[str]): Optional filter by browser instance Returns: Dict[str, Any]: List of hooks with details and statistics

  • get_dynamic_hook_details

    Get detailed information about a specific dynamic hook. Args: hook_id (str): Hook identifier Returns: Dict[str, Any]: Detailed hook information including function code

  • remove_dynamic_hook

    Remove a dynamic hook. Args: hook_id (str): Hook identifier to remove Returns: Dict[str, Any]: Removal status

  • get_hook_documentation

    Get comprehensive documentation for creating hook functions (AI learning). Returns: Dict[str, Any]: Documentation of request object structure and HookAction types

  • get_hook_examples

    Get example hook functions for AI learning. Returns: Dict[str, Any]: Collection of example hook functions with explanations

  • get_hook_requirements_documentation

    Get documentation on hook requirements and matching criteria. Returns: Dict[str, Any]: Requirements documentation and best practices

  • get_hook_common_patterns

    Get common hook patterns and use cases. Returns: Dict[str, Any]: Common patterns like ad blocking, API proxying, etc.

  • validate_hook_function

    Validate hook function code for common issues before creating. Args: function_code (str): Python function code to validate Returns: Dict[str, Any]: Validation results with issues and warnings

Automated result for the commit shown. See our scan policy. View the scan log

Maintainers can claim the listing to rescan, or dispute a result.

Stealth Browser MCP alternatives

View more →

Similar mcp servers in Browser Automation, ranked by GitHub stars. Compare licence, recent activity and scan status before you choose.

NameStarsLicenceLast updatedScan
Stealth Browser MCP (this page)
vibheksoni
3.3kMITOct 26, 2026Scanned, no flagged issues
Chrome Devtools MCP
ChromeDevTools
55kApache-2.0Nov 1, 2026Scanned, no flagged issues
Playwright MCP
microsoft
39kApache-2.0Oct 31, 2026Scanned, no flagged issues
MCP Chrome
hangwin
13kMITJan 6, 2026Scanned, no flagged issues
Browser Tools MCP
AgentDeskAI
7.3kMITOct 28, 2026Scanned, no flagged issues
MCP
BrowserMCP
7.3kApache-2.0Oct 30, 2026Scanned, no flagged issues