Stealth Browser MCP
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
f14dce3 · Nov 5, 2026Findings (8)
- highHigh. Something risky that needs a close look before you install.dependencies issueDetails are available to the maintainer after claiming this listing.
- highHigh. Something risky that needs a close look before you install.dependencies issueDetails are available to the maintainer after claiming this listing.
- highHigh. Something risky that needs a close look before you install.dependencies issueDetails are available to the maintainer after claiming this listing.
- highHigh. Something risky that needs a close look before you install.dependencies issueDetails are available to the maintainer after claiming this listing.
- mediumMedium. Worth checking, often a vulnerable dependency or a setup problem.python-multipart@0.0.9: 8 known vulnerabilitiesPYSEC-2026-1851, PYSEC-2026-1852, PYSEC-2026-3036, PYSEC-2026-3037, PYSEC-2026-3038 +3 more
requirements.txt - lowLow. Minor, or common in normal tools. Shown for information.python-dotenv@1.1.1: 1 known vulnerabilityPYSEC-2026-2270
requirements.txt - lowLow. Minor, or common in normal tools. Shown for information.idna@3.9.0: 1 known vulnerabilityPYSEC-2026-215
requirements.txt - lowLow. Minor, or common in normal tools. Shown for information.No manifest declaring network access and environment variables (agent.json)
Network activity
Tools exposed (101)
spawn_browserSpawn 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_instancesList all active browser instances. Returns: List[Dict[str, Any]]: List of browser instances with their current state.
close_instanceClose a browser instance. Args: instance_id (str): Browser instance ID. Returns: bool: True if closed successfully.
get_instance_stateGet detailed state of a browser instance. Args: instance_id (str): Browser instance ID. Returns: Optional[Dict[str, Any]]: Complete state information.
navigateNavigate 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_backNavigate back in history. Args: instance_id (str): Browser instance ID. Returns: bool: True if navigation was successful.
go_forwardNavigate forward in history. Args: instance_id (str): Browser instance ID. Returns: bool: True if navigation was successful.
reload_pageReload 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_elementsQuery 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_elementClick 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_textType 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_textPaste 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_keyPress 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_uploadUpload 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_optionSelect 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_stateGet 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_elementWait 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_pageScroll 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_scriptExecute 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_contentGet 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_screenshotTake 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_requestsList 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_detailsGet 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_detailsGet 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_contentGet 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_requestsSearch 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_dataExport 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_dataImport 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_filtersSet 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_filtersGet current network capture filters. Args: instance_id (str): Browser instance ID. Returns: Dict[str, List[str]]: Current filters with 'include' and 'exclude' lists.
modify_headersModify 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_cookiesGet 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_cookieSet 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_cookiesClear 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_viewGet 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_viewClear all debug logs and statistics with timeout protection. Returns: bool: True if cleared successfully.
export_debug_logsExport 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_statusGet current debug logger lock status for debugging hanging exports. Returns: Dict[str, Any]: Lock status information.
list_tabsList 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_tabSwitch 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_tabClose 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_tabGet information about the currently active tab. Args: instance_id (str): Browser instance ID. Returns: Dict[str, Any]: Active tab information.
new_tabOpen 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_stylesExtract 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_structureExtract 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_eventsExtract 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_animationsExtract 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_assetsExtract 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_cdpExtract 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_filesDiscover 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_completeMaster 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_reloadHot 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_statusCheck the status of loaded modules. Returns: str: Module status information.
validate_browser_environment_toolValidate browser environment and diagnose potential issues. Returns: Dict[str, Any]: Environment validation results with platform info and recommendations
clone_element_progressiveClone 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_stylesExpand 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_eventsExpand 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_childrenExpand 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_rulesExpand 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_elementsExpand 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_animationsExpand 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_elementsList all stored elements with their basic info. Returns: Dict[str, Any]: List of stored elements with metadata.
clear_stored_elementClear a specific stored element. Args: element_id (str): Element ID to clear. Returns: Dict[str, Any]: Success/error message.
clear_all_elementsClear all stored elements. Returns: Dict[str, Any]: Success message.
clone_element_to_fileClone 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_fileExtract 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_cdpExtract 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_fileExtract 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_fileExtract 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_fileExtract 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_fileExtract 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_fileExtract 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_filesList all element clone files saved to disk. Returns: List[Dict[str, Any]]: List of clone files with metadata and file information.
cleanup_clone_filesClean 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_commandsList all available CDP Runtime commands for function execution. Returns: List[str]: List of available CDP command names.
execute_cdp_commandExecute 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_documentInstall 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_contextsGet 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_functionsDiscover 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_methodsDiscover 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_functionCall 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_signatureInspect 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_scriptInject 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_functionCreate 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_sequenceExecute 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_bindingExpose 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_callsRead 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_callAnswer 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_bindingRemove 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_browserExecute 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_infoGet 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_hookCreate 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_hookCreate 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_hooksList 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_detailsGet 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_hookRemove a dynamic hook. Args: hook_id (str): Hook identifier to remove Returns: Dict[str, Any]: Removal status
get_hook_documentationGet comprehensive documentation for creating hook functions (AI learning). Returns: Dict[str, Any]: Documentation of request object structure and HookAction types
get_hook_examplesGet example hook functions for AI learning. Returns: Dict[str, Any]: Collection of example hook functions with explanations
get_hook_requirements_documentationGet documentation on hook requirements and matching criteria. Returns: Dict[str, Any]: Requirements documentation and best practices
get_hook_common_patternsGet common hook patterns and use cases. Returns: Dict[str, Any]: Common patterns like ad blocking, API proxying, etc.
validate_hook_functionValidate 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.
| Name | Stars | Licence | Last updated | Scan |
|---|---|---|---|---|
| Stealth Browser MCP (this page) vibheksoni | 3.3k | MIT | Oct 26, 2026 | Scanned, no flagged issues |
| Chrome Devtools MCP ChromeDevTools | 55k | Apache-2.0 | Nov 1, 2026 | Scanned, no flagged issues |
| Playwright MCP microsoft | 39k | Apache-2.0 | Oct 31, 2026 | Scanned, no flagged issues |
| MCP Chrome hangwin | 13k | MIT | Jan 6, 2026 | Scanned, no flagged issues |
| Browser Tools MCP AgentDeskAI | 7.3k | MIT | Oct 28, 2026 | Scanned, no flagged issues |
| MCP BrowserMCP | 7.3k | Apache-2.0 | Oct 30, 2026 | Scanned, no flagged issues |