Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
TAURI_APP_PATHNoPath to the built Tauri app binary
EDGEDRIVER_PATHNoPath to msedgedriver executable (optional, default looks in ./bin/msedgedriver.exe)
TAURI_PROJECT_DIRNoFallback project directory for app_launch when projectDir/appPath omitted

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
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 cargo build binary that points at devUrl).

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 text with app_click/app_type over the positional selectors here, which are brittle. Use this instead of a screenshot when you just need to know what's on screen and actionable.

app_clickA

Click an element, located by CSS selector or by text (visible text / accessible name, e.g. "Browse"). button chooses left (default), right (context menu), or middle; count 2 double-clicks.

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 value into an input/textarea, located by CSS selector or by text (its placeholder / accessible name). Optionally press Enter after.

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 to (a target with selector/text) OR offset {x,y}.

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 await window.__TAURI_INTERNALS__.invoke("cmd_name", { arg }) (always present in Tauri v2). This can do anything the app's own frontend can do, including real side effects (writing config, filesystem, launching processes) — there is no sandboxing. script is a function body; return a value for a result, await directly for async work. Also the documented workaround for OS-native dialogs (file/folder pickers) that WebDriver can't drive: call the backend command directly instead of clicking through the dialog.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

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