v0.7.0
Chrome DevTools Protocol support
native-devtools-mcp now supports the Chrome DevTools Protocol (CDP) — the same protocol that powers Puppeteer, Playwright, and chrome-devtools-mcp. Connect to any Chrome, Chromium, or Electron app and automate it with 16 new tools, all from a single native binary with zero Node.js dependencies.
This means you can now automate Chrome browsers and Electron apps (Signal, Discord, VS Code, Slack) with DOM-level precision — clicking elements by accessibility UID, filling forms, navigating pages, and evaluating JavaScript — alongside the existing native desktop and Android automation.
16 new cdp_* tools
cdp_connect/cdp_disconnect— connect to a running Chrome/Electron instance on a given portcdp_take_snapshot— accessibility tree snapshot of the browser page (element UIDs, roles, names)cdp_evaluate_script— evaluate JavaScript in the page, with optional element references from the snapshotcdp_click— click a DOM element by UID (scroll-into-view, more reliable than screen coordinates for web content)cdp_hover— hover over a DOM element by UIDcdp_fill— type text into an input/textarea or select an option from a<select>elementcdp_press_key— press a key or key combination (e.g.,Enter,Control+A,Control+Shift+R)cdp_type_text— character-by-character keyboard input into a focused element, with optional submit keycdp_handle_dialog— accept or dismiss JavaScript dialogs (alert, confirm, prompt)cdp_navigate— navigate to a URL, or go back/forward/reload (configurable timeout, handles slow-loading pages)cdp_new_page— create a new browser tab and navigate to a URLcdp_close_page— close a browser tab by indexcdp_wait_for— wait for any of multiple texts to appear on the page (lightweight JS polling with timeout)cdp_list_pages/cdp_select_page— tab management
cdp_click, cdp_hover, cdp_fill, and cdp_press_key support include_snapshot to return a fresh snapshot with the action result, saving a round-trip.
Getting started
# Launch Chrome with remote debugging
launch_app(app_name="Google Chrome", args=["--remote-debugging-port=9222", "--user-data-dir=/tmp/chrome-profile"])
# Connect and automate
cdp_connect(port=9222)
cdp_navigate(url="https://example.com")
cdp_take_snapshot()
cdp_fill(uid="10", value="search query")
cdp_press_key(key="Enter")Chrome 136+ requires --user-data-dir alongside --remote-debugging-port. Electron apps only need --remote-debugging-port.
Accessibility tree snapshot
New take_ax_snapshot tool that serializes the full macOS Accessibility (AX) tree into a structured text format with unique element IDs, roles, and names. Works for any app without requiring a debug port.