Browser automation stops at the webview; here a click can be followed straight into the invoke call it triggered and the response that came back, with ipc_monitor recording the traffic and read_logs covering console, logcat and system output alongside it. Two practical notes: nothing works until the bridge plugin is compiled into your app, so this is for apps you own rather than ones you merely run, and the element picker is the fastest way to settle what "this button" refers to — the user clicks it and the tool returns the metadata and a screenshot.
A UI automation and debugging channel into your own Tauri v2 application. A Rust bridge plugin runs inside the app, the server connects to it over a WebSocket, and several apps can be connected at once, each on its own port.
- driver_session starts and stops the connection to a running app; every later call can name an appIdentifier and a windowId when more than one is open
- Elements found by CSS selector, XPath, or text content — the strategy is an argument rather than three different tools
- webview_interact covers click, double-click, long-press, scroll, swipe and focus, by selector or by coordinates
- webview_keyboard types text or sends key events with modifiers, and webview_wait_for blocks on a selector, some text, or an IPC event with a timeout
- webview_screenshot captures the visible viewport with format, quality and max width, straight to a file path
- webview_dom_snapshot returns a structured snapshot, including an accessibility-tree view meant to be read by a model rather than a browser
- webview_select_element puts an element picker in the app so the user clicks the thing they mean, and webview_get_pointed_element retrieves what they Alt+Shift+Clicked earlier
- webview_get_styles returns computed CSS for the properties you ask about, and webview_execute_js runs JavaScript with access to window.__TAURI__
- ipc_execute_command invokes Rust backend commands, ipc_monitor and ipc_get_captured record and return the invoke calls and responses, and ipc_emit_event fires a Tauri event to exercise a handler
- ipc_get_backend_state reports app metadata, Tauri version and environment — the quickest confirmation that you are attached to the app you meant
- read_logs pulls console, Android logcat, iOS simulator or desktop system logs, filtered and bounded by lines or time
- manage_window lists windows with labels, titles, URLs and state, and resizes them; list_devices covers Android emulators and iOS simulators for mobile builds
A Tauri v2 app you can modify: the MCP Bridge plugin has to be added to it — Cargo.toml plus plugin registration — before anything connects, and get_setup_instructions returns those steps on demand. Node.js 20+ with npm, Rust and Cargo, and the Tauri CLI; Xcode or the Android SDK only for mobile targets. No account or key — the connection is a local WebSocket, default port 9223. It runs as npx @hypothesi/tauri-mcp-server, and the same tools are available from a terminal through the separate @hypothesi/tauri-mcp-cli package. MIT.
One command — npx -y @hypothesi/tauri-mcp-server
