Skip to content

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 21 Mar 22:47
· 110 commits to master since this release
d3e5e92

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 port
  • cdp_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 snapshot
  • cdp_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 UID
  • cdp_fill — type text into an input/textarea or select an option from a <select> element
  • cdp_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 key
  • cdp_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 URL
  • cdp_close_page — close a browser tab by index
  • cdp_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.