# tauri-mcp
A Tauri plugin that lets AI agents (Claude Code, Cursor, etc.) interact with your Tauri app through screenshots, DOM inspection, and input simulation using the Model Context Protocol (MCP).
## Features
- **Screenshots** — capture the app window on macOS, Linux, and Windows
- **DOM access** — read the full HTML of any webview window
- **Element interaction** — click, type, drag, hover via simulated input
- **JavaScript execution** — run arbitrary JS in the webview context
- **Element position** — find elements by id, class, tag, or text content
## Installation
```toml
# Cargo.toml
[dependencies]
tauri-plugin-mcp = { git = "https://github.com/DonsWayo/tauri-mcp", optional = true }
```
Register the plugin in your Tauri app:
```rust
// src-tauri/src/lib.rs
#[cfg(feature = "mcp-e2e")]
app.plugin(tauri_plugin_mcp::init())?;
```
The plugin opens a Unix domain socket at `/tmp/<app-name>-mcp.sock` that MCP clients connect to.
## macOS Screenshots
The plugin uses `screencapture -l <CGWindowID>` instead of xcap. This means:
- No Screen Recording permission required for the **Tauri app** itself
- Only **Terminal** (or your terminal emulator) needs Screen Recording access
- Works with unsigned debug builds without code signing entitlements
- Avoids a crash in `xcap::Window::all()` triggered by certain system windows on recent macOS versions
## Linux Screenshots
Uses xcap for X11 window capture with multi-pass window matching by app name and title.
## Usage with Claude Code
Add to `.mcp.json`:
```json
{
"mcpServers": {
"nucel-e2e": {
"type": "stdio",
"command": "node",
"args": ["path/to/mcp-server/build/index.js", "/tmp/your-app-mcp.sock"]
}
}
}
```
---
> This project started as a fork of [P3GLEG/tauri-plugin-mcp](https://github.com/P3GLEG/tauri-plugin-mcp) and has since diverged significantly.
## License
MIT