Skip to main content
Glama
README.md
# 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