From tauri-mcp-cli
Manages Tauri v2 apps via CLI: starts/recovers driver sessions, automates webviews, captures UI state/screenshots, executes JS, debugs IPC, handles mobile/remote devices. Use for terminal control of Tauri apps.
How this skill is triggered — by the user, by Claude, or both
Slash command
/tauri-mcp-cli:tauri-mcp-cliThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Use this skill for the entire CLI workflow. The package intentionally ships a single bundled skill so agents do not need to pick between overlapping domain-specific skills.
Use this skill for the entire CLI workflow. The package intentionally ships a single bundled skill so agents do not need to pick between overlapping domain-specific skills.
cargo tauri dev.tauri-plugin-mcp-bridge plugin is installed and registered.src-tauri/tauri.conf.json sets withGlobalTauri: true.Start or verify a driver session before calling almost any other tool:
tauri-mcp driver-session start --port 9223
tauri-mcp driver-session status --json
driver-session start can succeed even when no app is reachable, so always check connected: true in the status output.
# Start a session
tauri-mcp driver-session start --port 9223
# Run one or more commands in separate shell invocations
tauri-mcp webview-screenshot --file before.png
tauri-mcp webview-interact --action click --selector "#submit-btn"
tauri-mcp webview-screenshot --file after.png
# End the session
tauri-mcp driver-session stop
The CLI uses MCPorter keep-alive mode, so the background daemon preserves session state across separate tauri-mcp ... commands.
Use daemon commands only when the background process itself is unhealthy:
tauri-mcp daemon status
tauri-mcp daemon restart
tauri-mcp driver-session start --port 9223
# Click or focus an element
tauri-mcp webview-interact --action click --selector "#submit-btn"
tauri-mcp webview-interact --action focus --selector "#search"
# Type into a field
tauri-mcp webview-keyboard --action type --selector "#email" --text "[email protected]"
# Wait before interacting with async UI
tauri-mcp webview-wait-for --type selector --value "#success-msg" --timeout 5000
tauri-mcp webview-interact --action click --selector "#success-msg"
# Keyboard shortcuts and scrolling
tauri-mcp webview-keyboard --action press --key "s" --modifiers '["Control"]'
tauri-mcp webview-interact --action scroll --selector ".content" --scroll-y 300
All CLI flags are kebab-case, not camelCase. For example, use --window-id, not --windowId.
# Screenshots always write files to disk
tauri-mcp webview-screenshot --file shot.png
tauri-mcp webview-screenshot --format jpeg --quality 80 --file shot.jpg
tauri-mcp webview-screenshot --json
# Run JavaScript in the webview
tauri-mcp webview-execute-js --script "document.title"
tauri-mcp webview-execute-js --script "(() => { return document.querySelectorAll('li').length; })()"
# Find elements and inspect styles
tauri-mcp webview-find-element --selector "#hero"
tauri-mcp webview-get-styles --selector "#hero" --properties '["color","font-size"]'
# Read logs and inspect windows
tauri-mcp read-logs --source console --filter "error" --lines 100
tauri-mcp manage-window --action list --json
If content is off-screen, scroll it into view before taking a screenshot. The CLI does not return base64 image data on stdout.
# Verify the bridge plugin is active
tauri-mcp driver-session status --json
# Run backend commands
tauri-mcp ipc-execute-command --command "greet" --args '{"name":"World"}'
tauri-mcp ipc-get-backend-state --json
# Capture IPC traffic around an interaction
tauri-mcp ipc-monitor --action stop
tauri-mcp ipc-monitor --action start
tauri-mcp webview-interact --action click --selector "#refresh"
tauri-mcp ipc-get-captured --json
tauri-mcp ipc-monitor --action stop
# Emit synthetic events
tauri-mcp ipc-emit-event --event-name "user-action" --payload '{"action":"button-clicked"}'
If driver-session status --json returns identifier: null, treat that as a missing or inactive bridge plugin.
# List targets
tauri-mcp list-devices --json
# Android emulator or iOS simulator
tauri-mcp driver-session start --port 9223
# Real Android device
adb reverse tcp:9223 tcp:9223
tauri-mcp driver-session start --port 9223
# Real iOS device or direct network connection
tauri-mcp driver-session start --host 192.168.1.101 --port 9223
# Mobile logs
tauri-mcp read-logs --source android --filter "com.myapp"
tauri-mcp read-logs --source ios --filter "MyApp"
For real Android devices, do not assume localhost works without adb reverse or an explicit --host.
tauri-mcp driver-session start --port 9223
tauri-mcp driver-session status --json
tauri-mcp daemon restart
tauri-mcp driver-session start --port 9223
tauri-mcp driver-session status --json
tauri-mcp driver-session start --port 9225
# Wrong: captures a file path string, not image bytes
IMG=$(tauri-mcp webview-screenshot)
# Right
tauri-mcp webview-screenshot --file shot.png
# Wrong: returns null
tauri-mcp webview-execute-js --script "() => { return document.title; }"
# Right
tauri-mcp webview-execute-js --script "document.title"
# Wrong
tauri-mcp webview-keyboard --action type --text "hello"
# Right
tauri-mcp webview-keyboard --action type --selector "#email" --text "hello"
Before acting, verify:
driver-session status --json shows connected: true.npx claudepluginhub hypothesi/mcp-server-tauri --plugin tauri-mcp-cliDevelops Tauri v2+ cross-platform desktop/mobile apps with Rust backend, configuring tauri.conf.json, #[tauri::command] handlers, IPC (invoke/emit/channels), capabilities/permissions, and troubleshooting builds.
Configures Tauri v2 to package web frontends as native Android, Windows, macOS, and Linux apps. Handles builds, permissions, and native features like notifications and file system.
Guides desktop app development with Electron and Tauri — cross-platform apps for Windows, macOS, Linux using a single codebase.