tauri-agent-kit
Enables diagnostics and automation for Tauri 2 applications on Windows, allowing discovery of app instances and webviews, DOM snapshots and screenshots, and simulating clicks, text input, key presses, and scrolling.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@tauri-agent-kitlist running Tauri instances"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
tauri-agent-kit
Independent, unofficial MCP diagnostics and automation for Tauri 2 on Windows.
The TypeScript server speaks MCP over stdio. The Rust plugin addresses the application's own WebView2 controllers over authenticated local named pipes. No Chrome instance, external DevTools MCP, remote-debugging port, or frontend framework is required.
Requirements
Windows x64 with WebView2 Evergreen.
Tauri 2.11.5. The current implementation uses Tauri's
unstablefeature for child-WebView inventory.Node 22 or newer, pnpm 10.33.2, and Vite+ 0.3.2.
Rust/Cargo and the Windows C++ build tools.
Version 0.1.0-alpha.1 is a pre-release candidate. Registry installation below becomes available after publication. APIs may change before 1.0.
Related MCP server: tauri-mcp
Build and test
vp install
vp pack
vp check
vp test
cargo test -p tauri-plugin-agent-kit --lib
cargo clippy --workspace --all-targets --locked -- -D warnings
cargo build -p agent-kit-fixture
vp run test:live
vp run test:securityvp pack packages the server and instrumentation libraries. The fixture uses static HTML rather than a frontend build tool. test:live launches only its own fixture process, exercises it through a real MCP client, writes evidence under artifacts/, and stops that process in finally. It never starts a game or launcher.
Integrate an application
Add the plugin dependency to the application's Cargo manifest:
[dependencies]
tauri-plugin-agent-kit = "=0.1.0-alpha.1"Register the plugin before the application runs:
.plugin(tauri_plugin_agent_kit::init(tauri_plugin_agent_kit::Config {
enabled: std::env::var_os("TAURI_AGENT_KIT").is_some(),
advanced: std::env::var_os("TAURI_AGENT_KIT_ADVANCED").is_some(),
}))Start the application using its normal launch command with TAURI_AGENT_KIT=1. Release builds do not start the bridge even when enabled. Preserve existing application launch/elevation rules.
Configure your MCP client to run the pinned npm package. On Windows, clients that cannot execute the npx shim directly can use this configuration:
{
"mcpServers": {
"tauri-agent-kit": {
"command": "cmd",
"args": ["/d", "/s", "/c", "npx --yes tauri-agent-kit@0.1.0-alpha.1"]
}
}
}Run npx --yes tauri-agent-kit@0.1.0-alpha.1 --help to inspect the CLI.
The client process must inherit LOCALAPPDATA. Advanced tools additionally require the server argument --advanced and the application's advanced: true setting. Treat this as privileged code execution inside the selected WebView, not a sandbox.
Workflow
list_instances: choose the intended process and instance UUID.list_targets: choose awebviewIdorwindowId; never select by title.diagnose: inspect native visibility and bounded JavaScript readiness.snapshot: obtain element references from the top-level document.Perform one action, then take a fresh snapshot and verify the result.
screenshot: inspect actual WebView pixels, not a DOM reconstruction.
Each new snapshot invalidates earlier references. Detached elements, changed semantics, moved or resized targets and occlusion are rejected before dispatch; unrelated DOM animations do not invalidate all controls. Actions do not automatically assert their own success. type_text inserts literal single-line text without pressing Enter. Use press_key separately to submit.
Tools
Tools | Purpose |
| Authenticated discovery and exact target identity |
| Rust responsiveness, native visibility/focus/DPI, bounded document readiness |
| DOM controls/text and native WebView viewport pixels |
| WebView interactions; explicit Windows mode for click/text/key |
| Explicit controller zoom and native focus requests |
| Bounded metadata records with source and cursor |
| Optional privileged tools, disabled by default |
Optional IPC instrumentation
Grant agent-kit:allow-record-ipc only to the WebViews that will report IPC diagnostics. Install tauri-agent-kit-instrumentation@0.1.0-alpha.1 and import instrumentInvoke from tauri-agent-kit-instrumentation and wrap the application's existing invoke function. The wrapper preserves arguments, results and failures; reporting failures do not change the application result.
Only command name, duration, outcome and WebView identity are recorded. Payloads and results are not collected. This does not intercept calls made through other wrappers and is not a complete command registry.
Rust consumers can feed the managed Arc<Diagnostics> using push, or attach Diagnostics as a tracing::Layer in their own subscriber. The plugin never installs a global logger. The built-in console observer records event metadata, not console argument values; the tracing layer similarly omits event fields. Explicit push callers are responsible for redacting their data.
Limits
Windows is the only implemented backend. No promise of Tauri 2.0.x or other OS compatibility.
DOM snapshots cover the top-level document; iframe traversal, shadow roots, storage, cookies, drag-and-drop and navigation tools are not implemented.
Screenshots show the WebView viewport, including its transparency, not the final Windows desktop composition.
Windows input requires the target already in the foreground. Focus stealing, UIPI, transparency and occlusion can cause a safe rejection. No automatic elevation is attempted.
A timeout or cancellation may follow an already dispatched action. Never automatically retry a write.
A force-killed app can leave a stale manifest. Discovery probes and ignores unavailable endpoints; it does not delete someone else's files.
See security, competitor audit, and validation.
See contributing, troubleshooting, release procedure, and fixture demonstration.
This server cannot be deployed
Maintenance
Related MCP Connectors
Browserless MCP — wraps the Browserless headless-Chromium REST API (browserless.io)
MCP server to assist with JxBrowser development.
Live browser debugging for AI assistants — DOM, console, network via MCP.
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
Related MCP Servers
- AlicenseBqualityBmaintenancePlaywright-style MCP server for pywebview apps that lets AI assistants see, control, and debug Python desktop web UIs without modifying source code.23MIT
- AlicenseAqualityCmaintenanceControls any built Tauri app's UI via WebDriver, enabling mouse/keyboard actions, DOM inspection, and screenshots.22MIT
- FlicenseAqualityCmaintenanceMCP server that exposes tools to read and control the state machine of a Tauri desktop app, enabling autonomous QA exploration and testing.5-
- AlicenseNot gradedqualityAmaintenanceAn MCP server that enables AI assistants to build, test, and debug Tauri v2 applications through UI automation (screenshots, clicks, typing, element finding), IPC monitoring, log streaming, and mobile device management.MIT