Skip to main content
Glama
Radek44

MCP Tauri Automation

by Radek44

MCP Tauri Automation

A small local MCP server for testing Tauri desktop apps. Connect to a test app, inspect a bounded UI snapshot, click/type/wait, and capture a screenshot.

2.0.0-rc.1 requires Node.js 22 or newer. It supports an already running embedded WebDriver server (including macOS) and the external tauri-driver flow. This is a release candidate; see CHANGELOG.md for compatibility changes and the distinction between automated protocol tests and native proof. The embedded flow passed a native macOS arm64 smoke on September 7, 2026, including click/type, screenshot capture, and session reconnection. Linux and Windows native acceptance remains unverified; see the validation receipt.

Install

From source:

git clone https://github.com/Radek44/mcp-tauri-automation.git
cd mcp-tauri-automation
npm ci
npm test

The server uses stdio. Start it with Node and an absolute path:

node /absolute/path/to/mcp-tauri-automation/dist/index.js

Register with Codex (official configuration guide):

codex mcp add tauri-automation -- node /absolute/path/to/mcp-tauri-automation/dist/index.js

Or Claude Code:

claude mcp add --transport stdio tauri-automation --scope user -- node /absolute/path/to/mcp-tauri-automation/dist/index.js

Any stdio MCP client can use the same command and arguments. No provider API key or additional model service is needed. Restart/reconnect the MCP client after changing its configuration.

Related MCP server: tauri-plugin-mcp

Connect a test app

Embedded WebDriver — macOS, Linux, Windows

Build your app with the optional tauri-plugin-wdio-webdriver test plugin. Launch that build yourself with a dedicated port and isolated test data:

TAURI_WEBDRIVER_PORT=4445 WDIO_EMBEDDED_SERVER=true /absolute/path/to/test-app

Then call connect_app with {"port":4445}. It creates a new session on 127.0.0.1; it does not discover apps, take over an existing session, or launch a process. close_app deletes that session; your externally launched app remains running. The launcher remains responsible for stopping the exact process.

The WebDriver plugin belongs in test builds, and visible UI tests need an unlocked desktop. See the Tauri WebDriver guide and plugin setup.

External tauri-driver — Linux and Windows

Install and run the platform driver as described in Tauri's manual setup. Then call launch_app with {"appPath":"/absolute/path/to/app"}. The driver owns launching the app; deleting its session requests teardown. Native process behavior ultimately belongs to that driver.

Tools

Tool

Inputs / behavior

connect_app

Optional port; create a session on a running embedded server.

launch_app

Optional appPath, args, env; use TAURI_APP_PATH when path is omitted.

close_app

Delete the owned session.

get_app_state

Session metadata and a live title/location probe; reports failed health checks.

inspect_ui

Optional CSS selector, limit (1–100, default 20), maxTextLength (0–1000, default 160).

click_element

CSS selector; standard WebDriver click.

type_text

selector, text, optional clear (false appends, true clears then types).

wait_for_element

selector, optional timeout and state: attached (default), visible, or hidden.

get_element_text

CSS selector; maximum 12,000 characters, otherwise use a narrower selector.

capture_screenshot

Native MCP PNG by default; returnBase64:false saves a local file. Optional basename filename.

execute_tauri_command

Compatibility/debug tool: command, optional args; requires an enabled global Tauri invoke bridge.

inspect_ui returns bounded text, role/name hints, enabled/visible state, viewport intersection, rectangles, and own/effective opacity. Truncation flags disclose omitted results. It does not return HTML, input values, application stores, or an accessibility-tree conformance claim. A screenshot is still needed for visual judgment; geometry does not prove appearance or interaction.

Start with inspect_ui, narrow the selector if necessary, perform the action, then use wait_for_element or a targeted read to confirm the result. Capture images when they answer a visual question. This reduces repetitive diagnostic calls and large DOM dumps; no measured model-token saving is claimed.

All calls execute in order. Action requests are never automatically retried. If an action times out, it may already have happened: inspect before retrying. If session creation has an unknown outcome, restart the isolated app/driver and this MCP server before creating another session. A failed session deletion retains ownership so close_app can retry cleanup.

Configuration

All variables are optional. Invalid numeric configuration fails startup.

Variable

Default

TAURI_APP_PATH

No default

TAURI_WEBDRIVER_PORT

4444; connect_app.port overrides it

TAURI_DEFAULT_TIMEOUT

5000 ms, range 1–60,000; per WebDriver request

TAURI_SCREENSHOT_DIR

./screenshots, resolved when the MCP process starts

Only 127.0.0.1 is used; redirects are rejected. Responses are capped at 1 MiB, or 16 MiB for screenshot JSON. Screenshot filenames cannot include directories; existing files are never overwritten. TAURI_DRIVER_PATH was never used to spawn a driver and remains unnecessary.

UI text, names, titles, and images can contain user content. Use disposable test data and expose only the tools appropriate to the task. Page locations omit credentials, query strings, and fragments; this is not a general secret scanner.

For Saga/Vuea, use this server for native UI evidence with a test-owned data directory. Use SagaDoc's own validated MCP tools for document authoring and its normal review controls for human decisions. Exclude execute_tauri_command from that automation profile; it must not become a shortcut around the document service or human Finish Session boundary. See the local example and Saga smoke recipe.

Development

npm ci
npm run verify

The gate builds TypeScript, runs Node's test runner against local fake WebDriver servers and real MCP transports, audits runtime dependencies, and checks the package contents. It does not require a desktop session. Native testing is separate and must identify the app build, isolated data, platform, and results.

The runtime uses Node fetch for the narrow W3C command set; it does not download browsers or require WebdriverIO. Diagnostics go to stderr; stdout carries MCP. The package contains the compiled runtime, docs/examples, and native probe.

MIT license. Contributions welcome; keep additions tied to a demonstrated workflow and include a deterministic failure/success oracle.

Available Tools

9 tools
capture_screenshotA

Capture a screenshot of the application window. Returns base64-encoded PNG image data by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameNoOptional filename (without extension) to save the screenshot. If not provided, a timestamp will be used.
returnBase64NoWhether to return base64 image data (true) or save to file and return path (false). Default: true

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the return behavior (base64-encoded PNG image data by default) and implies a capture action. However, it doesn't mention potential side effects like whether this pauses the application, requires specific permissions, or has any rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly concise with two sentences that each earn their place. The first sentence states the core purpose, and the second sentence provides crucial behavioral information about the return format. There's zero wasted verbiage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 2 parameters, 100% schema coverage, and no output schema, the description provides good context about what the tool does and its return behavior. However, as a potentially system-interactive tool with no annotations, it could benefit from mentioning any permissions needed or system requirements.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents both parameters. The description doesn't add any parameter-specific information beyond what's in the schema. The baseline score of 3 is appropriate when the schema does all the parameter documentation work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('capture a screenshot') and target resource ('application window'), distinguishing it from sibling tools like click_element or type_text. It's not a tautology of the name and provides concrete information about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context (when you need a screenshot of the application) but doesn't explicitly state when to use this tool versus alternatives or mention any prerequisites. No guidance is provided about when not to use it or what alternatives might exist for similar functionality.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

click_elementB

Click a UI element identified by a CSS selector

ParametersJSON Schema
NameRequiredDescriptionDefault
selectorYesCSS selector to identify the element to click (e.g., "#button-id", ".button-class", "button[name=submit]")

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but provides minimal behavioral context. It doesn't mention whether this requires the app to be launched first, what happens if the element isn't found (e.g., error behavior), or if it waits for the element to be clickable. This leaves critical gaps for a UI automation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core action and uses clear, direct language appropriate for a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a UI interaction tool with no annotations and no output schema, the description is incomplete. It lacks context about prerequisites (e.g., app must be launched), error handling, or what constitutes success, which are essential for reliable use alongside siblings like launch_app or wait_for_element.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the schema fully documenting the single parameter's type, requirement, and examples. The description adds no additional parameter semantics beyond what's in the schema, meeting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Click') and target ('a UI element identified by a CSS selector'), distinguishing it from siblings like type_text (typing) or get_element_text (reading). It uses precise terminology that directly maps to the tool's function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like execute_tauri_command (which might handle clicks differently) or wait_for_element (which might be a prerequisite). The description only states what it does, not when it's appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

close_appA

Close the currently running Tauri application gracefully

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and does well by specifying 'gracefully' - indicating proper shutdown procedures rather than force termination. However, it doesn't disclose potential side effects, confirmation requirements, or what 'gracefully' entails operationally.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with zero waste - every word contributes essential information. Front-loaded with the core action, followed by target specification and important behavioral qualifier.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive operation with no annotations and no output schema, the description is minimal but functional. It identifies the action and target but lacks details about success/failure states, side effects, or what 'gracefully' means in practice given the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the baseline is 4. The description appropriately doesn't discuss parameters since none exist, focusing instead on the action's behavioral characteristics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('close') and target resource ('currently running Tauri application'), with the adverb 'gracefully' adding important behavioral context. It distinguishes itself from sibling tools like 'launch_app' by performing the opposite operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context ('currently running') but doesn't explicitly state when to use this tool versus alternatives or prerequisites. No guidance is provided about what happens if no app is running or whether this should be used instead of force-quitting methods.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

execute_tauri_commandC

Execute a Tauri IPC command. The command must be exposed in the Tauri app's src-tauri/src/main.rs file.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesName of the Tauri command to execute
argsNoArguments to pass to the command

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool executes a command but lacks details on permissions needed, error handling, side effects (e.g., if it modifies app state), or response format. This is a significant gap for a command execution tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. However, it could be slightly more front-loaded by explicitly mentioning it's for IPC commands in Tauri apps upfront, though it's already quite concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of executing IPC commands, no annotations, and no output schema, the description is incomplete. It fails to cover behavioral aspects like safety, error cases, or return values, which are crucial for an agent to use this tool effectively in a Tauri context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, so the schema already documents both parameters ('command' and 'args'). The description adds no additional meaning beyond what the schema provides, such as examples of valid commands or argument structures, resulting in a baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Execute a Tauri IPC command') and specifies the target resource ('Tauri app's src-tauri/src/main.rs file'), making the purpose unambiguous. However, it doesn't explicitly differentiate this tool from its siblings (like 'get_app_state' or 'launch_app'), which would require a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, such as other IPC-related tools or its siblings (e.g., 'get_app_state' for reading state vs. this for executing commands). It mentions the command must be exposed in a specific file, but this is a prerequisite rather than usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_app_stateB

Get the current state of the application, including whether it's running, session info, and page details

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves information ('Get'), implying it's a read-only operation, but doesn't specify whether it requires authentication, has rate limits, or what happens on errors. For a tool with zero annotation coverage, this leaves significant behavioral gaps unaddressed, though it at least indicates the type of operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose ('Get the current state of the application') and adds specifics without unnecessary elaboration. Every part earns its place by clarifying what information is included. It could be slightly more structured but remains highly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (0 parameters, no output schema, no annotations), the description is adequate but minimal. It covers the purpose and scope of information retrieved, but lacks details on behavioral aspects like error handling or return format. For a read-only tool with no structured output, more context on what the state includes would be helpful, though it meets minimum viability.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and schema description coverage is 100%, so there are no parameters to document. The description appropriately doesn't discuss parameters, which is correct for this case. Baseline for 0 parameters is 4, as there's no need to compensate for missing parameter information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('Get') and resources ('current state of the application'), and lists what information is included ('whether it's running, session info, and page details'). It distinguishes from siblings by focusing on application state retrieval rather than interaction or control operations. However, it doesn't explicitly differentiate from all possible siblings in a structured way.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context through the information it retrieves (application state, session info, page details), suggesting it should be used when checking application status or context. However, it provides no explicit guidance on when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. The context is implied but not clearly articulated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_element_textB

Get the text content of an element

ParametersJSON Schema
NameRequiredDescriptionDefault
selectorYesCSS selector to identify the element

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Get' implies a read operation, it doesn't specify whether this tool requires the element to be visible/loaded, what happens if the selector matches multiple elements, error behavior for non-existent elements, or performance characteristics. The description adds minimal behavioral context beyond the basic operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without any unnecessary words. It's perfectly front-loaded with the core functionality immediately apparent. Every word earns its place in this minimal description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read operation with no output schema, the description provides the basic purpose but lacks important context. It doesn't explain what format the text is returned in (plain text, HTML, trimmed), whether whitespace is normalized, or what happens with nested elements. The description is minimally adequate but leaves significant gaps in understanding the tool's behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with the selector parameter fully documented in the schema. The description doesn't add any parameter-specific information beyond what's already in the schema. This meets the baseline score of 3 when schema coverage is high and no additional parameter semantics are provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'text content of an element', making the purpose immediately understandable. However, it doesn't distinguish this tool from potential siblings like 'get_app_state' or 'wait_for_element' that might also retrieve text-related information in different contexts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'capture_screenshot' (visual capture) and 'wait_for_element' (timing-based), there's no indication whether this tool should be used for immediate text extraction versus waiting for elements to appear or capturing text via screenshots.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

launch_appB

Launch a Tauri application via tauri-driver. The tauri-driver must be running on the configured port (default: 4444).

ParametersJSON Schema
NameRequiredDescriptionDefault
appPathYesPath to the Tauri application binary
argsNoOptional command-line arguments to pass to the application
envNoOptional environment variables to set for the application

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the dependency on tauri-driver and the default port, which adds useful context. However, it lacks critical details such as whether this operation is idempotent, what happens if the app is already running, error conditions, or the expected output format, leaving significant gaps for a tool that likely involves system-level interactions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is highly concise and front-loaded, consisting of only two sentences that directly convey the core functionality and a key prerequisite. Every sentence earns its place by providing essential information without redundancy or unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of launching an application (involving system dependencies and potential side-effects), no annotations, no output schema, and 100% schema coverage, the description is insufficient. It fails to explain what the tool returns, error handling, or behavioral nuances like whether it waits for the app to be ready, making it incomplete for safe and effective use by an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, so the schema already documents all three parameters (appPath, args, env) adequately. The description doesn't add any additional meaning or examples beyond what the schema provides, such as typical values for appPath or common use cases for args and env, resulting in a baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Launch') and target ('a Tauri application via tauri-driver'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'close_app' or 'get_app_state', which would require mentioning this is specifically for starting applications rather than managing or querying them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides some context by mentioning that 'tauri-driver must be running on the configured port (default: 4444)', which implies a prerequisite for usage. However, it doesn't offer explicit guidance on when to use this tool versus alternatives like 'close_app' or 'execute_tauri_command', nor does it specify scenarios where it should or shouldn't be used.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

type_textC

Type text into an input field or editable element

ParametersJSON Schema
NameRequiredDescriptionDefault
selectorYesCSS selector to identify the input element
textYesText to type into the element
clearNoWhether to clear existing text before typing. Default: false

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure but offers minimal information. It implies a write operation ('type text') but doesn't cover critical aspects like error handling (e.g., if selector fails), side effects (e.g., focus changes), or performance considerations (e.g., typing speed).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core purpose and appropriately sized for a straightforward tool, earning full marks for conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (interactive UI operation) and lack of annotations or output schema, the description is incomplete. It doesn't explain return values (e.g., success/failure), error conditions, or dependencies (e.g., requires an active app context), leaving significant gaps for an agent to use it effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all parameters (selector, text, clear). The description adds no additional meaning beyond what's in the schema, such as examples of valid selectors or when to use the 'clear' option. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('type text') and target ('into an input field or editable element'), providing a specific verb+resource combination. However, it doesn't differentiate from potential sibling tools like 'click_element' or 'get_element_text' that might also interact with input fields, preventing a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., element must be visible/editable), exclusions (e.g., not for read-only elements), or comparisons with sibling tools like 'click_element' for interaction or 'get_element_text' for reading.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wait_for_elementB

Wait for an element to appear in the DOM. Useful for handling async UI states.

ParametersJSON Schema
NameRequiredDescriptionDefault
selectorYesCSS selector to wait for
timeoutNoTimeout in milliseconds. Default: 5000

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions waiting for appearance and handling async UI states, but doesn't specify what happens on timeout (e.g., throws error, returns null), whether it polls continuously or uses event listeners, or any performance implications. This leaves significant behavioral gaps for an agent to understand how to use it effectively.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two short sentences that are front-loaded and waste no words. Every part earns its place by stating the core purpose and a key usage context without redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a DOM waiting tool with no annotations and no output schema, the description is incomplete. It doesn't explain return values (e.g., returns element, boolean, or throws), error conditions, or detailed behavioral traits like polling frequency. For a tool that interacts with async UI states, more context is needed for reliable agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with clear documentation for both parameters (selector and timeout). The description adds no additional parameter semantics beyond what's in the schema, such as selector syntax examples or timeout behavior details. With high schema coverage, the baseline score of 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('wait for an element to appear') and the target ('in the DOM'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'get_element_text' or 'click_element' which also involve DOM elements, though the 'wait for appearance' aspect provides some implicit distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides implied usage guidance with 'useful for handling async UI states,' suggesting when this tool might be appropriate. However, it doesn't explicitly state when to use this versus alternatives like 'get_element_text' (which might also wait implicitly) or provide clear exclusions or prerequisites for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 9 tool updates
    • First observedcapture_screenshot
    • First observedclick_element
    • First observedclose_app
    • First observedexecute_tauri_command
    • First observedget_app_state
    • First observedget_element_text
    • First observedlaunch_app
    • First observedtype_text
    • First observedwait_for_element

TDQS

A3.6/5.0

Scored across 9 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no significant overlap. The tools cover different aspects of Tauri automation: launching/closing apps, UI interaction (clicking, typing, waiting), element inspection, screenshot capture, and command execution. The descriptions make it easy to distinguish between similar tools like click_element and wait_for_element.

Naming Consistency5/5

All tools follow a consistent verb_noun naming pattern with snake_case throughout. The naming is predictable and readable: capture_screenshot, click_element, close_app, execute_tauri_command, get_app_state, get_element_text, launch_app, type_text, wait_for_element. There are no deviations in naming conventions.

Tool Count5/5

With 9 tools, this is well-scoped for Tauri automation. Each tool earns its place by covering essential operations: app lifecycle management, UI interaction, element inspection, and command execution. The count is neither too sparse nor bloated, providing comprehensive coverage without redundancy.

Completeness4/5

The tool set provides excellent coverage for core Tauri automation workflows including app control, UI interaction, and state inspection. Minor gaps exist such as no explicit tool for navigating between pages/windows or handling file operations, but agents can work around these using existing tools like execute_tauri_command for extended functionality.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    Enables AI assistants to automate and test Tauri desktop applications through the Model Context Protocol. It provides tools for app management, UI interaction, and state inspection across multiple platforms without requiring CDP dependencies.
    14
    1,310
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Tauri plugin that enables AI agents to interact with Tauri applications through screenshots, DOM inspection, and input simulation via the Model Context Protocol. It allows agents to perform actions like clicking, typing, and executing JavaScript within the application's webview context.
    1,310
    1
    MIT

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/Radek44/mcp-tauri-automation'

If you have feedback or need assistance with the MCP directory API, please join our Discord server