tauri-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TAURI_APP_PATH | No | Path to the built Tauri app binary | |
| EDGEDRIVER_PATH | No | Path to msedgedriver executable (optional, default looks in ./bin/msedgedriver.exe) | |
| TAURI_PROJECT_DIR | No | Fallback project directory for app_launch when projectDir/appPath omitted |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| app_launchA | Launch a built Tauri app under WebDriver automation so it can be clicked/typed into like a real user. Pass projectDir to target any local Tauri project (resolves the binary from its src-tauri/Cargo.toml + target/release|debug); defaults to the configured default project. Only one app session runs at a time — call app_close (or app_force_cleanup) before launching another. Errors loudly if the window never renders (usual causes: msedgedriver/WebView2 version mismatch, or a plain |
| app_closeA | Close the running app session started by app_launch and stop tauri-driver. |
| app_statusA | Report whether an app session is currently running, and if so which binary and driver port. |
| app_force_cleanupA | Recovery hatch: kill orphaned tauri-driver/msedgedriver processes and reset session state, for when a crashed run left things half-up and app_launch complains a session is already running. Assumes one session at a time — don't use while another session you care about is live. |
| app_snapshotA | Read the current app window state: page title, visible body text, and every visible interactive element (button/link/input/etc.) with its role, text/aria-label, and a CSS selector. Prefer targeting by the element's |
| app_clickA | Click an element, located by CSS |
| app_click_atA | Click at raw x,y viewport coordinates instead of an element — for canvas/native-drawn UI where no element handle exists. button chooses left (default), right, or middle. |
| app_scrollA | Mouse-wheel scroll by a pixel delta. Positive deltaY scrolls down, negative up; deltaX right/left. Pass a selector to scroll over a specific scrollable pane, otherwise the viewport. |
| app_typeA | Type |
| app_press_keyA | Send raw keyboard input to the running app window, not tied to any element. Every key is reachable: literal characters, plus WebDriver named keys — Enter, Tab, Escape, Backspace, Delete, Space, Home, End, PageUp, PageDown, Insert, ArrowUp/Down/Left/Right, F1-F12, and modifiers Shift/Control/Alt/Meta (Meta = Win/Cmd). Several keys in one array hold modifiers together, so ["Control","a"] is Ctrl+A and ["Control","Shift","k"] is Ctrl+Shift+K; literal text like ["h","i"] just types it. |
| app_hoverA | Move the pointer over an element (by selector or text) to trigger hover-only UI (tooltips, hover menus). |
| app_selectA | Pick an option from a native dropdown. Locate the by selector or text, then choose the option by optionText, optionValue, or optionIndex (exactly one). |
| app_dragA | Drag an element (by selector or text) onto another element, or by a pixel offset — for sliders, range inputs, reordering lists, or canvas handles. Provide |
| app_readA | Read one element's current state: text, live input value (DOM property, so it reflects controlled React inputs), tag, displayed/enabled flags, and optionally one attribute. For verifying a specific label/status/field value without a full app_snapshot or app_execute_js. |
| app_wait_forA | Poll the running app window until a selector appears/disappears, or bodyText contains/loses a substring — for async loading states, toasts, or dialogs closing — instead of manually re-polling app_snapshot. |
| app_console_logsA | Browser console output (console.log/warn/error + uncaught exceptions) captured since app_launch — the only way to see JS errors happening in the app. |
| app_list_windowsA | List open window handles for the running app (Tauri apps can have more than one window) and which one is active. |
| app_switch_windowA | Switch which window subsequent app_* calls operate on. Get handles from app_list_windows. |
| app_screenshotA | Take a PNG screenshot of the running app window, or of a single element if a selector/text target is given (for focused visual diffing of one component). |
| app_windowA | Resize, move, maximize, minimize, or fullscreen the app window, and report its resulting size+position. action "set" uses width/height/x/y (any omitted axis is left unchanged); "maximize"/"minimize"/"fullscreen" ignore those. Useful for consistent screenshots or checking responsive layout. |
| app_reloadA | Reload the webview (like the app's own refresh) to reset front-end state for a clean run. Reloads the web layer only; the Rust backend process keeps its state. |
| app_execute_jsA | Run arbitrary JavaScript in the running app window and return the result. Not limited to clickable elements — read any DOM/JS state, call window functions, dispatch synthetic events, read/write localStorage, or invoke a Tauri backend command directly via |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/FrengkyS1/tauri-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server