MCP Server Tauri
MCP Server Tauri
Наделите своего ИИ-ассистента суперсилами для разработки на Tauri
Документация · Начало работы · Доступные инструменты
Сервер протокола контекста модели (MCP), который позволяет ИИ-ассистентам, таким как Claude, Cursor и Windsurf, создавать, тестировать и отлаживать приложения Tauri® v2. Скриншоты, состояние DOM и логи консоли из вашего запущенного приложения предоставляют ИИ богатый контекст для понимания происходящего, а также инструменты для взаимодействия с ним.
✨ Возможности
Категория | Функционал |
🎯 Автоматизация UI | Скриншоты, клики, ввод текста, прокрутка, поиск элементов, визуальный выбор элементов |
🔍 Мониторинг IPC | Перехват и инспекция вызовов Tauri IPC в реальном времени |
📱 Мобильная разработка | Список симуляторов iOS и эмуляторов Android |
📋 Логи | Потоковое чтение логов консоли, Android logcat, iOS и системных логов |
Отказ от ответственности: Этот MCP был разработан с использованием инструментов агентного кодирования. Он может содержать ошибки.
Related MCP server: tauri-plugin-mcp
🚀 Начало работы
Предварительные требования
Node.js 20+ и npm
Rust и Cargo (для разработки на Tauri)
Tauri CLI:
npm install -g @tauri-apps/cli@nextДля мобильных устройств: Xcode (macOS) или Android SDK
1. Настройка вашего ИИ-ассистента
Используйте install-mcp для добавления сервера в вашего ИИ-ассистента:
npx -y install-mcp @hypothesi/tauri-mcp-server --client claude-codeПоддерживаемые клиенты: claude-code, cursor, windsurf, vscode, cline, roo-cline, claude, zed, goose, warp, codex
npx -y install-mcp @hypothesi/tauri-mcp-server --client claude-codenpx -y install-mcp @hypothesi/tauri-mcp-server --client cursornpx -y install-mcp @hypothesi/tauri-mcp-server --client vscodenpx -y install-mcp @hypothesi/tauri-mcp-server --client windsurfnpx -y install-mcp @hypothesi/tauri-mcp-server --client clineПерезапустите вашего ИИ-ассистента после добавления конфигурации.
Использование CLI
Если вы хотите вызывать инструменты напрямую из терминала, а не из MCP-клиента:
npm install -g @hypothesi/tauri-mcp-cli
tauri-mcp driver-session start --port 9223
tauri-mcp webview-screenshot --file screenshot.pngCLI использует поддержку keep-alive от MCPorter, поэтому состояние driver_session сохраняется между отдельными командами.
2. Настройка плагина MCP Bridge
Попросите вашего ИИ-ассистента помочь настроить ваше приложение Tauri:
"Помоги мне настроить плагин Tauri MCP Bridge"
Ваш ИИ:
Изучит ваш проект, чтобы увидеть, что уже настроено
Покажет, какие изменения необходимы (Cargo.toml, регистрация плагина и т.д.)
Запросит ваше разрешение перед внесением любых изменений
Вот и все! ИИ берет на себя все детали настройки, оставляя контроль за вами. 🎉
Если вы предпочитаете настраивать вручную, ознакомьтесь с руководством по началу работы или документацией плагина.
💬 Слэш-команды (Промпты)
Команда | Описание |
| Настройка или обновление плагина MCP bridge в вашем проекте Tauri |
| Поиск и исправление ошибок JavaScript в вашем webview |
| Визуальный выбор элемента в вашем приложении — возвращает метаданные и скриншот |
Просто введите команду в своем ИИ-ассистенте, чтобы начать управляемый рабочий процесс.
🧰 Доступные инструменты (всего 21)
Инструмент | Описание |
| Получить инструкции по настройке/обновлению плагина MCP Bridge |
Инструмент | Описание |
| Запуск/остановка/статус сессии автоматизации |
| Поиск элементов по селектору |
| Чтение логов консоли, Android, iOS или системных логов |
| Клик, прокрутка, свайп, фокус, долгое нажатие |
| Захват скриншотов webview |
| Ввод текста или отправка событий клавиатуры |
| Ожидание элементов, текста или событий |
| Получение вычисленных стилей CSS |
| Выполнение JavaScript в webview |
| Получение снимка структурированного дерева доступности |
| Визуальный выбор элемента — пользователь кликает на элемент, возвращаются метаданные + скриншот |
| Получение метаданных для элемента, на который пользователь нажал Alt+Shift+Клик |
| Список окон, получение информации или изменение размера |
Поддержка нескольких окон: Все инструменты webview принимают необязательный параметр
windowIdдля работы с конкретными окнами. Используйтеmanage_windowсaction: "list"для обнаружения доступных окон.
Инструмент | Описание |
| Выполнение команд Tauri IPC |
| Получение метаданных и состояния приложения |
| Запуск/остановка мониторинга IPC |
| Получение перехваченного трафика IPC |
| Испускание пользовательских событий |
Инструмент | Описание |
| Список устройств Android и симуляторов iOS |
🏗️ Архитектура
┌─────────────────────────────────────────────────────────────────┐
│ AI Assistant │
│ (Claude, Cursor, Windsurf) │
└─────────────────────────┬───────────────────────────────────────┘
│ MCP Protocol (stdio)
▼
┌─────────────────────────────────────────────────────────────────┐
│ MCP Server (Node.js) │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────────┐ │
│ │ Manager │ │ Driver │ │ Monitor │ │
│ │ CLI/Config │ │ UI Automation│ │ Logs/IPC Events │ │
│ └──────────────┘ └──────┬───────┘ └──────────────────────┘ │
└─────────────────────────────┼───────────────────────────────────┘
│ WebSocket (port 9223)
▼
┌─────────────────────────────────────────────────────────────────┐
│ Tauri Application │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ MCP Bridge Plugin (Rust) │ │
│ │ IPC Commands • Events • Backend State │ │
│ └──────────────────────────────────────────────────────────┘ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ Webview (DOM/UI) │ │
│ └──────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘Почему такой подход?
✅ Богатый контекст для ИИ — Скриншоты, DOM и логи помогают ИИ понять состояние вашего приложения
✅ Кроссплатформенность — Работает на Linux, Windows, macOS, Android и iOS
✅ Без внешних драйверов — Не нужны Selenium, Playwright или автоматизация браузера
✅ Нативная интеграция — Прямой доступ к IPC и бэкенду Tauri
🧑💻 Разработка
# Clone and install
git clone https://github.com/hypothesi/mcp-server-tauri.git
cd mcp-server-tauri
npm install
# Build all packages
npm run build
# Run tests
npm test
# Development mode
npm run dev -w @hypothesi/tauri-mcp-servermcp-server-tauri/
├── packages/
│ ├── mcp-server/ # MCP server (TypeScript)
│ ├── tauri-plugin-mcp-bridge/ # Tauri plugin (Rust + JS bindings)
│ └── test-app/ # Test Tauri application
├── docs/ # VitePress documentation
└── specs/ # Architecture specs# Release plugin (Cargo + npm)
npm run release:plugin patch
# Release server (npm only)
npm run release:server patchПодробности см. в specs/releasing.md.
📚 Документация
Полная документация — Руководства, справочник API и примеры
Пакет MCP Server — Детали реализации сервера
Плагин MCP Bridge — Документация плагина Tauri
🤝 Участие в разработке
Вклад приветствуется! Пожалуйста:
Следуйте существующим шаблонам кода
Добавляйте тесты для новых функций
Обновляйте документацию
Убедитесь, что
npm testиnpm run standardsпроходят успешно
Другие примечания
Этот проект тестируется с помощью BrowserStack.
📄 Лицензия
MIT © hypothesi
Уведомление о товарных знаках
TAURI® является зарегистрированным товарным знаком The Tauri Programme в рамках Commons Conservancy. https://tauri.app/
Этот проект не связан, не одобрен и не спонсируется The Tauri Programme в рамках Commons Conservancy.
Available Tools
19 toolsdriver_sessionAIdempotent
[Tauri Apps Only] Start/stop automation session to connect to a RUNNING Tauri app. Supports multiple concurrent app connections - each app runs on a unique port. The most recently connected app becomes the "default" app used when no appIdentifier is specified. Use action "status" to check connection state: returns single app format when 1 app connected, or array format with "isDefault" indicator when multiple apps connected. Action "stop" without appIdentifier stops ALL sessions; with appIdentifier stops only that app. The identifier field (e.g., "com.example.myapp") uniquely identifies each app. REQUIRED before using other webview_* or ipc_* tools. Connects via WebSocket to the MCP Bridge plugin in the Tauri app. For browser automation, use Chrome DevTools MCP instead. For Electron apps, this tool will NOT work.
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Host address to connect to (e.g., 192.168.1.100). Falls back to MCP_BRIDGE_HOST or TAURI_DEV_HOST env vars | |
| port | No | Port to connect to (default: 9223) | |
| action | Yes | Action to perform: start or stop the session, or check status | |
| appIdentifier | No | App identifier (port number or bundle ID) to stop. Only used with action "stop". If omitted, stops all sessions. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds context beyond annotations: describes status output format (single vs array with isDefault), stop behavior without appIdentifier (stops all), and connection via WebSocket. Annotations indicate idempotentHint=true, which description complements by explaining idempotent behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with front-loaded purpose, then action details, then usage notes. Slightly verbose but every sentence adds value, including alternatives. Could be trimmed without losing substance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all important aspects: required before other tools, explains status output format, mentions WebSocket connection, sets context within sibling tools. No output schema, but description adequately explains return behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters have descriptions (100% coverage). Description adds value: host falls back to env vars, port defaults to 9223, appIdentifier only used with stop. Explains the identifier field uniquely identifies apps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool is for Tauri apps only, managing automation sessions with start/stop/status actions. It distinguishes itself from sibling tools by specifying it's for Tauri automation and not for browser (Chrome DevTools MCP) or Electron apps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: required before using any webview_* or ipc_* tools. Also specifies when not to use: for browser automation or Electron apps. Provides details on concurrent connections and default app behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_setup_instructionsARead-onlyIdempotent
Get instructions for setting up or updating the MCP Bridge plugin in a Tauri project. Call this tool when: (1) driver_session fails to connect, (2) you detect the plugin is not installed or outdated, or (3) the user asks about setup. Returns step-by-step guidance that you should follow to help the user configure their project. IMPORTANT: The instructions require you to examine the project first and ask for permission before making any changes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and idempotentHint=true, so the tool is safe. The description adds useful context about the step-by-step guidance and the prerequisite to examine the project and ask permission, but this aligns with the annotations and doesn't reveal any unexpected behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three well-structured sentences: purpose, usage conditions, and an important note. Every sentence serves a purpose, with zero wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking an output schema, the description clearly states what the tool returns ('step-by-step guidance') and the key behavioral requirement (examine project, ask permission). Annotations cover safety, and the sibling context shows this is a distinct setup help tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description appropriately avoids parameter discussion and focuses on usage context, which is sufficient given no input values are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get instructions for setting up or updating the MCP Bridge plugin in a Tauri project', providing a specific verb and resource. It distinguishes itself from sibling tools like driver_session by listing explicit scenarios (connection failure, plugin detection, user request).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly enumerates three conditions under which the tool should be called: driver_session failure, detecting outdated/missing plugin, or user asking about setup. It also notes that the returned instructions require the agent to examine the project and ask permission before changing anything.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ipc_emit_eventA
[Tauri Apps Only] Emit a Tauri event to test event handlers. Requires active driver_session. Events are Tauri-specific (not DOM events). For browser DOM events, use Chrome DevTools MCP instead.
| Name | Required | Description | Default |
|---|---|---|---|
| payload | No | ||
| eventName | Yes | ||
| appIdentifier | No | App port or bundle ID to target. Defaults to the only connected app or the default app if multiple are connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=false, destructiveHint=false) indicate a non-destructive write operation. The description adds context beyond annotations by stating the prerequisite of an active driver session and the Tauri-specific nature, which helps the agent understand the behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: a single sentence broken into three clear statements. It is front-loaded with the scope (Tauri Apps Only) and each sentence serves a purpose—describing the action, prerequisite, and alternative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers prerequisite (driver session), scope (Tauri), and alternative (Chrome DevTools). It does not mention return value or side effects, but for an emit tool, the return is likely trivial. It is sufficiently complete for its complexity and available metadata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only appIdentifier has a description). The description does not elaborate on parameter meanings or usage, leaving the eventName and payload parameters unexplained. It relies on the schema which lacks descriptions for most parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: emitting a Tauri event for testing event handlers. It specifies Tauri-only scope and distinguishes from DOM events, aligning well with the sibling tools list which includes webview_dom_snapshot and webview_execute_js for DOM operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'Requires active driver_session' and 'For browser DOM events, use Chrome DevTools MCP instead.' This tells the agent when to use this tool and when to choose an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ipc_execute_commandA
[Tauri Apps Only] Execute Tauri IPC commands (invoke Rust backend functions). Requires active driver_session. This is Tauri-specific IPC, not browser APIs. Plugin commands (plugin:mcp-bridge|*) are routed through the bridge; all other commands are executed via the webview using window.TAURI_INTERNALS.invoke, which keeps the application's Tauri capability rules in force. For Electron IPC or browser APIs, use appropriate tools for those frameworks.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | ||
| command | Yes | ||
| windowId | No | Window label to target (defaults to "main") for app commands | |
| appIdentifier | No | App port or bundle ID to target. Defaults to the only connected app or the default app if multiple are connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the non-read-only, non-destructive, non-open-world profile, and the description adds real behavioral context: plugin:mcp-bridge|* commands route through the bridge while others go through window.__TAURI_INTERNALS__.invoke, and Tauri capability rules stay enforced. It does not describe return payloads or failure modes, minor given the routing detail it supplies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the critical '[Tauri Apps Only]' qualifier and keeps the routing/output distinctions compact. Dense in clauses but essentially no filler; each clause carries routing or scoping information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-trivial execution tool with no output schema it covers the important behavioral constraints (driver_session, capability enforcement, routing). The remaining gap is that the 'args' parameter is unexplained, but everything an agent needs to select and route the call is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: windowId and appIdentifier are documented, but 'command' and especially 'args' are bare. The description clarifies the plugin:mcp-bridge|* command naming convention, but says nothing about the args structure, leaving a required-adjacent parameter undocumented in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (execute Tauri IPC commands / invoke Rust backend functions) and gates scope up front with '[Tauri Apps Only]'. It explicitly distinguishes itself from browser APIs and Electron IPC, so an agent can separate it from siblings like webview_execute_js without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear when-to-use condition (Tauri apps, active driver_session required) and a when-not (not browser APIs, not Electron IPC). The alternative is only gestured at ('use appropriate tools for those frameworks') rather than named, which is the one gap keeping it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ipc_get_backend_stateARead-only
[Tauri Apps Only] Get Tauri backend state: app metadata, Tauri version, environment. Requires active driver_session. Use to verify you're connected to a Tauri app and get app info.
| Name | Required | Description | Default |
|---|---|---|---|
| appIdentifier | No | App port or bundle ID to target. Defaults to the only connected app or the default app if multiple are connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds key behavioral context beyond annotations: requires active driver_session, Tauri-only scope. Annotations already declare readOnlyHint=true, no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states purpose and scope, second adds prerequisite and use case. No wasted words, front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given readOnlyHint annotation and simple schema (1 optional param), description covers all needed context: purpose, prerequisite, use case. No output schema, but return value is implied as state info. Complete for this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with description. Description does not add extra parameter semantics beyond schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it gets Tauri backend state with specific items (app metadata, Tauri version, environment). Specifies 'Tauri Apps only' and distinguishes from siblings like webview tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states prerequisite 'Requires active driver_session' and use case 'verify you're connected to a Tauri app and get app info'. Could mention when not to use it, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ipc_get_capturedARead-only
[Tauri Apps Only] Get captured Tauri IPC traffic (requires ipc_monitor started). Shows captured commands (invoke calls) and events with arguments and responses. For browser network requests, use Chrome DevTools MCP instead.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Filter events by command name | |
| appIdentifier | No | App port or bundle ID to target. Defaults to the only connected app or the default app if multiple are connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true, and the description adds critical context about the dependency on ipc_monitor. It also describes the captured content (arguments and responses). Though it doesn't detail error behavior, it sufficiently reveals behavioral traits beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, front-loaded with scope and prerequisite, followed by what the tool shows and a clear alternative. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately explains what is returned (commands, events, arguments, responses). It also notes the required monitor state. Could be slightly more complete with error handling or data structure details, but sufficient for a read-only retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for both parameters (filter, appIdentifier). The tool description does not add additional parameter semantics beyond what the schema provides, so it meets the baseline without extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is for capturing Tauri IPC traffic, specifies it requires ipc_monitor started, and explains what it shows (commands, events, arguments, responses). It also distinguishes from browser network requests, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly mentions prerequisite ('requires ipc_monitor started') and provides an alternative tool for browser network requests ('use Chrome DevTools MCP instead'), giving clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ipc_monitorAIdempotent
[Tauri Apps Only] Monitor Tauri IPC calls between frontend and Rust backend. Requires active driver_session. Captures invoke() calls made through window.TAURI.core. Bridge-internal commands (plugin:mcp-bridge|*) are excluded from capture. This is Tauri-specific; for browser network monitoring, use Chrome DevTools MCP.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform: start or stop IPC monitoring | |
| appIdentifier | No | App port or bundle ID to target. Defaults to the only connected app or the default app if multiple are connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the safe/idempotent profile (destructiveHint=false, idempotentHint=true), so the description adds value by disclosing scope: it captures invoke() calls via window.__TAURI__.core and excludes bridge-internal commands (plugin:mcp-bridge|*). It does not describe what 'stop' does to buffered captures or how captured data is retrieved, leaving a small gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense and front-loaded: the domain constraint leads, prerequisites follow, then capture scope, then the alternative. Every clause carries information and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description never explains how captured calls are surfaced (presumably via ipc_get_captured), which an agent needs to complete the start/monitor/retrieve workflow. Otherwise prerequisites, scope, and exclusions are sufficient for a 2-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both 'action' (start/stop enum) and 'appIdentifier'. The description adds no parameter-level meaning beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Monitor Tauri IPC calls between frontend and Rust backend') and immediately marks the domain with '[Tauri Apps Only]'. An agent can distinguish it from siblings like ipc_execute_command or ipc_get_captured without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear prerequisites ('Requires active driver_session') and a routing exclusion ('for browser network monitoring, use Chrome DevTools MCP'). It does not explicitly contrast with the closest siblings (ipc_get_captured, ipc_execute_command), so it stops short of full alternative-routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_devicesARead-only
[Tauri Mobile Apps Only] List Android emulators/devices and iOS simulators. Use for Tauri mobile development (tauri android dev, tauri ios dev). Not needed for desktop-only Tauri apps or web projects.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true. The description adds value by specifying the tool's scope (Tauri mobile apps only), but does not describe the return format or behavior beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. Front-loads the verb and resource, then provides usage constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description provides sufficient context: what it does and when to use it. Could mention that it returns a list, but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has zero parameters, so schema coverage is 100%. Description doesn't need to add parameter info. The baseline is 4, and description meets that by providing context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists Android emulators/devices and iOS simulators, specifically for Tauri mobile development. This distinguishes it from sibling tools which focus on drivers, IPC, or webview operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (Tauri mobile development) and when not to use (desktop-only or web projects). Provides clear decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_windowAIdempotent
[Tauri Apps Only] Manage Tauri windows. Actions: "list" - List all windows with labels, titles, URLs, and state. "info" - Get detailed info for a window (size, position, title, focus, visibility). "resize" - Resize a window (requires width/height, uses logical pixels by default). "focus" - Focus a window (bring to front). "minimize" - Minimize a window. "maximize" - Maximize a window. Desktop-only actions (focus, minimize, maximize) require tauri-plugin-mcp-bridge 0.13.0+ and return a version error on older plugins. Requires active driver_session. For browser windows, use Chrome DevTools MCP instead.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | Width in pixels (required for "resize" action) | |
| action | Yes | Action: "list" all windows, get "info" for one window, "resize" a window, "focus" a window, "minimize" a window, or "maximize" a window | |
| height | No | Height in pixels (required for "resize" action) | |
| logical | No | Use logical pixels (true, default) or physical pixels (false). Only for "resize" | |
| windowId | No | Window label to target (defaults to "main"). Required for "info", optional for "resize", "focus", "minimize", "maximize" | |
| appIdentifier | No | App port or bundle ID to target. Defaults to the only connected app or the default app if multiple are connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=true), so the bar is lower. The description adds real context the annotations cannot: the driver_session prerequisite and the plugin-version-dependent error behavior for focus/minimize/maximize.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the Tauri-only scope, then a scannable per-action breakdown, then prerequisites and the alternative tool. Every sentence carries distinct information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, but the description sketches what 'list' and 'info' return and covers prerequisites, version gating, and the browser alternative. Nothing needed to call any of the six actions correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter (width, height, logical, windowId, appIdentifier) is already documented. The description adds only marginal hints ('requires width/height', 'logical pixels by default') that duplicate the schema, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Manage Tauri windows') and enumerates all six actions with their effects, so an agent knows exactly what each call does. The '[Tauri Apps Only]' prefix and the 'For browser windows, use Chrome DevTools MCP instead' line cleanly separate it from the webview_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly gives the prerequisites (requires active driver_session), the version constraint for desktop-only actions (tauri-plugin-mcp-bridge 0.13.0+), and the alternative to use for browser windows. When-to-use and when-not-to-use are both stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_logsARead-only
[Tauri Apps Only] Read logs from various sources: "console" for webview JS logs, "android" for logcat, "ios" for simulator logs, "system" for desktop logs. Requires active driver_session for console logs. Use for debugging Tauri app issues at any level.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | Only return entries at this console level. | |
| lines | No | ||
| since | No | ISO timestamp to filter logs since (e.g. 2023-10-27T10:00:00Z) | |
| filter | No | Regex or keyword to filter logs | |
| source | Yes | Log source: "console" for webview JS logs, "android" for logcat, "ios" for simulator, "system" for desktop | |
| maxChars | No | Maximum characters in the response. Entries are truncated and the oldest are dropped to fit. | |
| windowId | No | Window label for console logs (defaults to "main") | |
| appIdentifier | No | App port or bundle ID for console logs. Defaults to the only connected app or the default app if multiple are connected. | |
| maxCharsPerEntry | No | Maximum characters kept from each log entry. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds a real operational prerequisite (active driver_session required for console logs) beyond the structured data, though it says nothing about truncation behavior, which the schema covers instead.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The bracketed platform scope is front-loaded, and the source list is compact and scannable. The trailing "at any level" phrase is mildly redundant filler, keeping it out of 5 territory.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nine-parameter tool with high schema coverage and no output schema, the description covers source semantics and the key prerequisite. Missing only return-shape/pagination context, which the schema's maxChars descriptions partially absorb.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 89%, so the schema already documents all nine parameters including enums and truncation semantics. The description's source enumeration largely repeats the schema's own source description and adds no syntax or default details for level, lines, or maxChars.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (read logs), scopes it ([Tauri Apps Only]), and enumerates the four sources with their meanings. An agent can distinguish it from sibling log-ish tools like ipc_get_captured or ipc_monitor without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use for debugging Tauri app issues at any level" gives clear usage context, and the driver_session prerequisite for the console source is spelled out. It stops short of naming an alternative for non-webview log needs or stating when NOT to use it, so it earns a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webview_dom_snapshotARead-only
[Tauri Apps Only] Get a structured DOM snapshot of a Tauri app's webview. Supports different snapshot types for AI consumption. The "accessibility" type returns a YAML representation of the accessibility tree similar to Playwright's aria snapshots, including roles, names, states, and element refs. Use this for understanding UI semantics, finding interactive elements, or accessibility testing. The "structure" type returns a YAML representation of the DOM hierarchy with element tag names, IDs, CSS classes, and data-testid attributes (if present). Use this for understanding page layout, debugging CSS selectors, or locating elements by class/ID. Use the optional selector parameter to scope the snapshot to a subtree. The selector supports CSS (default), XPath, and text content matching via the strategy parameter. Requires active driver_session. Targets the only connected app, or the default app if multiple are connected. Specify appIdentifier (port or bundle ID) to target a specific app.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Snapshot type | |
| selector | No | Selector to scope the snapshot: CSS selector (default), XPath, text content, or ref ID. If omitted, snapshots entire document. | |
| strategy | No | Selector strategy: "css" (default) for CSS selectors, "xpath" for XPath expressions, "text" to find elements by text content, with fallback to placeholder, aria-label, and title attributes. Ref IDs (e.g., "ref=e3") work with any strategy. | css |
| windowId | No | Window label to target (defaults to "main") | |
| appIdentifier | No | App port or bundle ID to target. Defaults to the only connected app or the default app if multiple are connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, so the description is not required to repeat that. It adds valuable behavioral context: requires an active driver_session, targets the only connected app or requires appIdentifier for multi-app scenarios, and describes output as YAML representations. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single paragraph of 5-6 sentences, front-loaded with the main purpose, then organized by type, selector usage, and targeting. Every sentence adds value without redundancy. Perfectly sized for an AI agent to quickly grasp the tool's capabilities.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (5 params, 1 required, no output schema), the description adequately covers purpose, types, usage scenarios, scoping, targeting, and strategies. It lacks an explicit description of the return format beyond 'YAML representation', but for a read-only snapshot tool, this is sufficient. Minor omission: no example output or error conditions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaning beyond the schema by explaining the two types in detail, including the analogy to Playwright's aria snapshots, and elaborating on the strategy parameter (e.g., fallback to placeholder, aria-label, title). This provides richer context for parameter selection.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it gets a structured DOM snapshot of a Tauri webview, with two distinct types (accessibility and structure) that serve different purposes. It distinguishes itself from siblings like webview_find_element and webview_get_pointed_element by focusing on full-tree snapshots rather than individual element queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description provides explicit use cases for each snapshot type: 'understanding UI semantics, finding interactive elements, or accessibility testing' for accessibility, and 'understanding page layout, debugging CSS selectors, or locating elements by class/ID' for structure. It mentions prerequisites (active driver_session) and scoping via selector. However, it does not explicitly mention when NOT to use this tool or alternative sibling tools for more targeted queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webview_execute_jsA
[Tauri Apps Only] Execute JavaScript in a Tauri app's webview context. Requires active driver_session. Has access to window.TAURI. If you need a return value, it must be JSON-serializable. For functions that return values, use an IIFE: "(() => { return 5; })()" not "() => { return 5; }". Accepts an optional timeout parameter (milliseconds) for long-running scripts. Timeout errors will identify which layer timed out (transport, script self-race, or Rust eval). Targets the only connected app, or the default app if multiple are connected. Specify appIdentifier (port or bundle ID) to target a specific app. For browser JS execution, use Chrome DevTools MCP instead.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | Arguments to pass to the script | |
| script | Yes | JavaScript code to execute in the webview context. If returning a value, it must be JSON-serializable. For functions that return values, use IIFE syntax: "(() => { return value; })()" not "() => { return value; }" | |
| timeout | No | Execution timeout in milliseconds | |
| windowId | No | Window label to target (defaults to "main") | |
| appIdentifier | No | App port or bundle ID to target. Defaults to the only connected app or the default app if multiple are connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only supply safety hints (readOnlyHint=false, destructiveHint=false, openWorldHint=false); the description carries the real behavioral load. It discloses the auth/session prerequisite, the execution environment ('Has access to window.__TAURI__'), return-value constraints (JSON-serializable, IIFE requirement), and error semantics (timeouts identify the failing layer: transport, script self-race, or Rust eval). This is substantial context beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the scope tag and core action, and nearly every sentence earns its place (prerequisite, IIFE, timeout, targeting, alternative). It is somewhat dense at nine sentences in one block, and the IIFE example is repeated verbatim from the schema description, a minor redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description correctly covers return handling (JSON-serializable values, IIFE for functions), timeout behavior, prerequisites, and app targeting. An agent has everything needed to invoke this correctly without opening other tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds semantics the schema lacks: it explains timeout error behavior (which layer timed out) and the default targeting logic for appIdentifier when multiple apps are connected. The IIFE note duplicates the script field's schema description rather than extending it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Execute JavaScript in a Tauri app's webview context') with an explicit scope qualifier ('[Tauri Apps Only]'), so the domain is unambiguous. It does not, however, explicitly contrast with the sibling ipc_execute_command, which is the nearest adjacent capability; the only alternative named (Chrome DevTools MCP) is not a sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a prerequisite ('Requires active driver_session'), targeting rules ('Targets the only connected app, or the default app if multiple are connected', plus appIdentifier for a specific app), and an explicit exclusion/alternative ('For browser JS execution, use Chrome DevTools MCP instead'). All routing decisions an agent needs are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webview_find_elementARead-only
[Tauri Apps Only] Find elements in a running Tauri app's webview and return their geometry, text, accessible name, attributes, visibility, and optionally their computed styles. Supports CSS selectors (default), XPath expressions, and text content matching via the strategy parameter. The "text" strategy searches element text content (not just direct text nodes), prefers exact matches over substring matches, prefers innermost elements, and prefers interactive ancestors. Returns structured JSON with totalMatches, returned count, and array of matches each containing: nth index, ref ID, tag, trimmed text, accessible name, attributes, bounding rect, visibility, interactability, optional computed styles, and optional truncated outerHTML. Use this instead of webview_execute_js for querySelector, getBoundingClientRect, textContent, and getComputedStyle reads. Requires active driver_session. Targets the only connected app, or the default app if multiple are connected. Specify appIdentifier (port or bundle ID) to target a specific app. For browser pages or documentation sites, use Chrome DevTools MCP instead.
| Name | Required | Description | Default |
|---|---|---|---|
| nth | No | Zero-based index to pick one of several matching elements. Omit when the selector is unique. Required when a text selector matches more than one visible element. | |
| limit | No | Maximum number of matches to return. Total match count is always reported. | |
| selector | Yes | The selector to find: CSS selector (default), XPath expression, text content, or ref ID (e.g., "ref=e3"). Interpretation depends on strategy. | |
| strategy | No | Selector strategy: "css" (default) for CSS selectors, "xpath" for XPath expressions, "text" to find elements by text content, with fallback to placeholder, aria-label, and title attributes. Ref IDs (e.g., "ref=e3") work with any strategy. | css |
| windowId | No | Window label to target (defaults to "main") | |
| properties | No | Computed CSS properties to include for each match, e.g. ["display","opacity","font-size"]. | |
| includeHtml | No | Include outerHTML for each match, truncated to 2000 characters. | |
| visibleOnly | No | Return only rendered elements. Set false to include display:none and off-screen nodes. | |
| appIdentifier | No | App port or bundle ID to target. Defaults to the only connected app or the default app if multiple are connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint, yet the description discloses much more: the active driver_session requirement, targeting behavior (only connected app, default app when multiple, appIdentifier override), the text-strategy matching preferences (exact over substring, innermost, interactive ancestors), and full return shape. This is deep behavioral context beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with scope, then routing guidance, strategy behavior, and return shape. Dense and largely waste-free, though the long enumeration of return fields is somewhat list-like and could be tightened; every sentence still carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description carries the return-value burden and does so thoroughly (totalMatches, returned, per-match fields). Combined with usage routing, prerequisites, and targeting rules, it is complete for a 9-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description nonetheless adds meaning by explaining how the strategy parameter changes selector interpretation and how ref IDs work across all strategies, plus text-strategy intent. It stops short of detailing nth/limit/windowId tradeoffs, which remain schema-only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (find elements in a running Tauri app's webview) and enumerates the data returned (geometry, text, accessible name, attributes, visibility, computed styles). The [Tauri Apps Only] prefix and the explicit 'use Chrome DevTools MCP instead' carve out scope against siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: 'Use this instead of webview_execute_js for querySelector, getBoundingClientRect, textContent, and getComputedStyle reads,' names the driver_session prerequisite, explains app-targeting defaults, and points browser/docs work to Chrome DevTools MCP. Both when-to-use and when-not are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webview_get_pointed_elementARead-only
[Tauri Apps Only] Retrieves element metadata for an element the user previously pointed at via Alt+Shift+Click in the Tauri app. Returns the same rich metadata as webview_select_element (tag, id, classes, attributes, text, bounding rect, CSS selector, computed styles, parent chain) plus an annotated screenshot. The user must Alt+Shift+Click an element first before calling this tool. Requires active driver_session. Targets the only connected app, or the default app if multiple are connected. Specify appIdentifier (port or bundle ID) to target a specific app.
| Name | Required | Description | Default |
|---|---|---|---|
| windowId | No | Window label to target (defaults to "main") | |
| appIdentifier | No | App port or bundle ID to target. Defaults to the only connected app or the default app if multiple are connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond annotations: it requires prior user interaction from Alt+Shift+Click, returns an annotated screenshot, and targets specific apps. Since annotations only provide readOnlyHint=true and openWorldHint=false, the description fully compensates and explains the non-obvious requirement of prior pointing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at 5 sentences with no wasted words. It front-loads the core function and provides all necessary context efficiently. Every sentence adds value, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers prerequisites (Alt+Shift+Click, active driver_session), return type (rich metadata + annotated screenshot), and targeting logic. While no output schema exists, it references a sibling tool for return structure. This is sufficient for a tool with straightforward parameters and no nested objects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters already described. The description does not add new semantics beyond what the schema provides for windowId and appIdentifier. Baseline 3 is appropriate since the description adds minimal parameter-specific detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves element metadata after a user points via Alt+Shift+Click, specifying it is Tauri-only and contrasting with webview_select_element. The verb 'retrieves' and resource 'element metadata' are specific, and the context distinguishes it from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use: after Alt+Shift+Click, and notes it requires an active driver_session. It also mentions targeting the only connected app or default, and that an appIdentifier can be specified. This provides clear guidance on when to call this tool versus alternatives like webview_select_element.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webview_interactA
[Tauri Apps Only] Click, hover, right-click, scroll, swipe, focus, or perform gestures in a Tauri app webview. Supported actions: click, double-click, long-press, scroll, swipe, focus, hover, right-click. Supports CSS selectors (default), XPath, and text content matching via the strategy parameter. When using a text selector that matches multiple visible elements, you must provide the nth parameter to disambiguate, or the tool will throw an error listing the candidates. Requires active driver_session. For browser interaction, use Chrome DevTools MCP instead.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X coordinate for direct coordinate interaction | |
| y | No | Y coordinate for direct coordinate interaction | |
| nth | No | Zero-based index to pick one of several matching elements. Omit when the selector is unique. Required when a text selector matches more than one visible element. | |
| toX | No | Ending X coordinate for swipe | |
| toY | No | Ending Y coordinate for swipe | |
| fromX | No | Starting X coordinate for swipe | |
| fromY | No | Starting Y coordinate for swipe | |
| action | Yes | Type of interaction to perform | |
| scrollX | No | Horizontal scroll amount in pixels (positive = right) | |
| scrollY | No | Vertical scroll amount in pixels (positive = down) | |
| duration | No | Duration in ms for long-press or swipe (default: 500ms for long-press, 300ms for swipe) | |
| selector | No | Element selector: CSS selector (default), XPath expression, text content, or ref ID (e.g., "ref=e3") | |
| strategy | No | Selector strategy: "css" (default) for CSS selectors, "xpath" for XPath expressions, "text" to find elements by text content, with fallback to placeholder, aria-label, and title attributes. Ref IDs (e.g., "ref=e3") work with any strategy. | css |
| windowId | No | Window label to target (defaults to "main") | |
| appIdentifier | No | App port or bundle ID to target. Defaults to the only connected app or the default app if multiple are connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the agent already knows this mutates local UI but is not destructive or open-world. The description adds real behavioral context beyond that: the driver_session prerequisite and the error-on-ambiguity behavior when a text selector matches multiple elements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the environment restriction and the core action list, then layers selectors, the nth rule, and prerequisites. The action list is repeated against the enum and the 'Supported actions' enumeration is somewhat redundant, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter mutation tool with annotations and no output schema, the description covers environment scope, prerequisites, selector semantics, and the key disambiguation rule. Coordinate/swipe/duration details live in the schema, which is acceptable given 100% coverage, though it could note the return behavior of interactions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 15 parameters are already documented, including nth, strategy fallbacks, duration defaults, and coordinate semantics. The description restates the nth disambiguation rule and adds only the error behavior on ambiguous matches, which is marginal value over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb set (click, hover, scroll, etc.) and resource (Tauri app webview) in the first sentence, and immediately scopes the tool with '[Tauri Apps Only]'. An agent can distinguish it from webview_keyboard and webview_execute_js without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the environment constraint (Tauri only), the prerequisite ('Requires active driver_session'), and the alternative for the non-applicable case ('For browser interaction, use Chrome DevTools MCP instead'). This is exactly the when/when-not/alternatives pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webview_keyboardA
[Tauri Apps Only] Type text or send keyboard events in a Tauri app. The selector parameter (for "type" action) supports CSS selectors (default), XPath, and text content matching via the strategy parameter. Requires active driver_session. Targets the only connected app, or the default app if multiple are connected. Specify appIdentifier (port or bundle ID) to target a specific app. For browser keyboard input, use Chrome DevTools MCP instead.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Key to press (required for "press/down/up" actions, e.g., "Enter", "a", "Escape") | |
| nth | No | Zero-based index to pick one of several matching elements. Omit when the selector is unique. Required when a text selector matches more than one visible element. | |
| text | No | Text to type (required for "type" action) | |
| action | Yes | Keyboard action type: "type" for typing text into an element, "press/down/up" for key events | |
| selector | No | Element selector for element to type into (required for "type" action): CSS selector (default), XPath, text content, or ref ID | |
| strategy | No | Selector strategy: "css" (default) for CSS selectors, "xpath" for XPath expressions, "text" to find elements by text content, with fallback to placeholder, aria-label, and title attributes. Ref IDs (e.g., "ref=e3") work with any strategy. | css |
| windowId | No | Window label to target (defaults to "main") | |
| modifiers | No | Modifier keys to hold | |
| appIdentifier | No | App port or bundle ID to target. Defaults to the only connected app or the default app if multiple are connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so safety is partly covered; the description adds useful context beyond that — session prerequisite, targeting resolution rules (only connected app, else default), and appIdentifier semantics. It stops short of stating effects like whether existing field content is overwritten or whether focus is required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the platform constraint, followed by targeting rules and the alternative. No filler, though the selector/strategy sentence duplicates schema detail and could be dropped.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nine-parameter mutation tool with no output schema, the description covers platform scope, prerequisite session, target resolution, and the browser alternative. Remaining gaps (post-typing state, error behavior) are minor given the schema is fully documented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all nine parameters including strategy fallbacks and nth semantics. The description largely restates the selector/strategy relationship already present in the schema, adding only the "(for 'type' action)" scoping, which is also in the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Type text or send keyboard events") scoped precisely to Tauri apps, plus the bracketed platform restriction up front. This distinguishes it immediately from generic siblings like webview_interact and from the browser alternative it names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear prerequisite ("Requires active driver_session") and an explicit out-of-scope redirect ("For browser keyboard input, use Chrome DevTools MCP instead"). It does not, however, differentiate itself from webview_interact, a sibling that may also perform webview input.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webview_screenshotARead-only
[Tauri Apps Only] Screenshot a running Tauri app's webview. Requires active driver_session. Captures only visible viewport. Targets the only connected app, or the default app if multiple are connected. Specify appIdentifier (port or bundle ID) to target a specific app. For browser screenshots, use Chrome DevTools MCP instead. For Electron apps, this will NOT work.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Image format | jpeg |
| quality | No | JPEG quality (0-100, only for jpeg format) | |
| filePath | No | File path to save the screenshot to instead of returning as base64 | |
| maxWidth | No | Maximum width in pixels. Images wider than this will be scaled down proportionally. Can also be set via TAURI_MCP_SCREENSHOT_MAX_WIDTH environment variable. | |
| windowId | No | Window label to target (defaults to "main") | |
| appIdentifier | No | App port or bundle ID to target. Defaults to the only connected app or the default app if multiple are connected. | |
| allowScreenCapture | No | Allow an interactive OS screen-sharing permission prompt if native and html2canvas capture fail |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the bar is lower, yet the description still adds real behavior: the driver_session prerequisite and the fact that only the visible viewport is captured. It also explains the app-targeting resolution rule (only connected app, or default app if multiple). It does not surface the interactive OS screen-sharing permission prompt path, leaving that to the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the scope constraint and precondition, then the exclusions. Every sentence carries routing or behavioral information; nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-parameter, no-output-schema capture tool, the description covers scope, prerequisite, targeting resolution, and exclusions. The only omission is what the call returns, but the schema's filePath description ('instead of returning as base64') already covers output form.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and every parameter (format, quality, filePath, maxWidth, windowId, allowScreenCapture) is documented in the schema itself. The description's appIdentifier note ('port or bundle ID') largely restates the schema's own text, so it adds little beyond the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Screenshot') and resource ('a running Tauri app's webview'), immediately scoped by '[Tauri Apps Only]'. It also explicitly rules out the two nearest alternatives (Chrome DevTools MCP for browsers, Electron apps), so the agent can distinguish it from everything in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit precondition ('Requires active driver_session') and names when NOT to use it ('For browser screenshots, use Chrome DevTools MCP instead. For Electron apps, this will NOT work'). This is textbook when/when-not/alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webview_select_elementARead-only
[Tauri Apps Only] Activates an element picker overlay in the Tauri app. The user visually selects an element by clicking it, and the tool returns rich element metadata (tag, id, classes, attributes, text, bounding rect, CSS selector, computed styles, parent chain) plus an annotated screenshot with the element highlighted. Requires active driver_session. Targets the only connected app, or the default app if multiple are connected. Specify appIdentifier (port or bundle ID) to target a specific app.
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No | Timeout in ms for user to pick an element (5000-120000, default 60000) | |
| windowId | No | Window label to target (defaults to "main") | |
| appIdentifier | No | App port or bundle ID to target. Defaults to the only connected app or the default app if multiple are connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, so no contradiction. The description adds behavioral context: requires driver_session, targets connected apps, and returns detailed element data. It doesn't detail all side effects but is adequate given 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences with clear front-loading: core purpose first, then return details, then prerequisites and targeting. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 optional parameters and no output schema, the description covers the interaction flow, return data, and targeting. Missing error handling or edge cases, but sufficient for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description reinforces appIdentifier usage but doesn't add new meaning beyond the schema descriptions. No extra semantics needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool activates a visual element picker overlay for Tauri apps, returning rich metadata and an annotated screenshot. This distinguishes it from siblings like webview_find_element (programmatic selection) and webview_get_pointed_element (point-based).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies prerequisites (active driver_session) and targeting rules (connected app, default app, appIdentifier). It doesn't explicitly exclude alternatives, but the context is clear enough for an agent to decide when to use this visual picker.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
webview_wait_forARead-only
[Tauri Apps Only] Wait for elements, text, or IPC events in a Tauri app. When type is "selector", supports CSS (default), XPath, and text strategies via the strategy parameter. Requires active driver_session. Targets the only connected app, or the default app if multiple are connected. Specify appIdentifier (port or bundle ID) to target a specific app. For browser waits, use Chrome DevTools MCP instead.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | What to wait for | |
| value | Yes | Selector, text content, or IPC event name to wait for | |
| timeout | No | Timeout in milliseconds (default: 5000ms) | |
| strategy | No | Selector strategy (applies when type is "selector"): "css" (default), "xpath", or "text". | css |
| windowId | No | Window label to target (defaults to "main") | |
| appIdentifier | No | App port or bundle ID to target. Defaults to the only connected app or the default app if multiple are connected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description does not need to emphasize safety. It adds transparency by detailing the waiting behaviors (selector strategies, IPC events, timeout) and the targeting logic (only connected app, default app). No destructive side effects implied. Slight gap: no mention of timeout behavior on failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is six sentences, each serving a distinct purpose: purpose, strategy details, prerequisites, targeting, appIdentifier clarification, and alternative tool. It is front-loaded with the primary action, and no sentence is redundant. Efficiently covers important aspects without excess.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema, the description does not explain return values, but for a wait tool the return is likely straightforward (success/failure). It covers major operational details (strategies, targeting, prerequisites). Missing explicit mention of timeout behavior (e.g., throws on timeout). Still, it is nearly complete for a read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds context like 'When type is selector, supports CSS (default), XPath, and text strategies' and explains appIdentifier targeting. However, it largely reiterates schema descriptions without adding significant new meaning beyond clarifying defaults and strategies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a clear verb+resource: 'Wait for elements, text, or IPC events in a Tauri app.' It explicitly states the app scope ('Tauri Apps Only') and distinguishes from browser waits by directing to Chrome DevTools MCP. This effectively differentiates it from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool: for waiting in Tauri apps, and when not to: for browser waits, refer to 'Chrome DevTools MCP'. It also explains prerequisites (requires active driver_session) and targeting (default app or specify appIdentifier).
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.
9 tool updates
v1.0.1- Changed
ipc_execute_command1 field changed- added
Input schema / properties / windowIdAdded value: +{ + "description": "Window label to target (defaults to \"main\") for app commands", + "type": "string" +}
- Changed
manage_window3 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Action: \"list\" all windows, get \"info\" for one window, or \"resize\" a window"New value: +"Action: \"list\" all windows, get \"info\" for one window, \"resize\" a window, \"focus\" a window, \"minimize\" a window, or \"maximize\" a window" - changed
Input schema / properties / action / enumPrevious value: -[ - "list", - "info", - "resize" -]New value: +[ + "list", + "info", + "resize", + "focus", + "minimize", + "maximize" +] - changed
Input schema / properties / windowId / descriptionPrevious value: -"Window label to target (defaults to \"main\"). Required for \"info\", optional for \"resize\""New value: +"Window label to target (defaults to \"main\"). Required for \"info\", optional for \"resize\", \"focus\", \"minimize\", \"maximize\""
- Changed
read_logs5 fields changed- added
Input schema / properties / levelAdded value: +{ + "description": "Only return entries at this console level.", + "enum": [ + "log", + "debug", + "info", + "warn", + "error" + ], + "type": "string" +} - added
Input schema / properties / lines / exclusiveMinimumAdded value: +0 - changed
Input schema / properties / lines / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / maxCharsAdded value: +{ + "default": 20000, + "description": "Maximum characters in the response. Entries are truncated and the oldest are dropped to fit.", + "maximum": 100000, + "minimum": 500, + "type": "integer" +} - added
Input schema / properties / maxCharsPerEntryAdded value: +{ + "default": 2000, + "description": "Maximum characters kept from each log entry.", + "maximum": 20000, + "minimum": 100, + "type": "integer" +}
- Changed
webview_execute_js1 field changed- added
Input schema / properties / timeoutAdded value: +{ + "description": "Execution timeout in milliseconds", + "exclusiveMinimum": 0, + "type": "integer" +}
- Changed
webview_find_element5 fields changed- added
Input schema / properties / includeHtmlAdded value: +{ + "default": false, + "description": "Include outerHTML for each match, truncated to 2000 characters.", + "type": "boolean" +} - added
Input schema / properties / limitAdded value: +{ + "default": 5, + "description": "Maximum number of matches to return. Total match count is always reported.", + "maximum": 50, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / nthAdded value: +{ + "description": "Zero-based index to pick one of several matching elements. Omit when the selector is unique. Required when a text selector matches more than one visible element.", + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / propertiesAdded value: +{ + "description": "Computed CSS properties to include for each match, e.g. [\"display\",\"opacity\",\"font-size\"].", + "items": { + "type": "string" + }, + "type": "array" +} - added
Input schema / properties / visibleOnlyAdded value: +{ + "default": true, + "description": "Return only rendered elements. Set false to include display:none and off-screen nodes.", + "type": "boolean" +}
- Removed
webview_get_styles - Changed
webview_interact2 fields changed- changed
Input schema / properties / action / enumPrevious value: -[ - "click", - "double-click", - "long-press", - "scroll", - "swipe", - "focus" -]New value: +[ + "click", + "double-click", + "long-press", + "scroll", + "swipe", + "focus", + "hover", + "right-click" +] - added
Input schema / properties / nthAdded value: +{ + "description": "Zero-based index to pick one of several matching elements. Omit when the selector is unique. Required when a text selector matches more than one visible element.", + "minimum": 0, + "type": "integer" +}
- Changed
webview_keyboard1 field changed- added
Input schema / properties / nthAdded value: +{ + "description": "Zero-based index to pick one of several matching elements. Omit when the selector is unique. Required when a text selector matches more than one visible element.", + "minimum": 0, + "type": "integer" +}
- Changed
webview_screenshot1 field changed- added
Input schema / properties / allowScreenCaptureAdded value: +{ + "default": false, + "description": "Allow an interactive OS screen-sharing permission prompt if native and html2canvas capture fail", + "type": "boolean" +}
37 tool updates
v0.11.1- Added
driver_session - Added
get_setup_instructions - Added
ipc_emit_event - Added
ipc_execute_command - Added
ipc_get_backend_state - Added
ipc_get_captured - Added
ipc_monitor - Added
list_devices - Added
manage_window - Added
read_logs - Removed
tauri_driver_session - Removed
tauri_get_setup_instructions - Removed
tauri_ipc_emit_event - Removed
tauri_ipc_execute_command - Removed
tauri_ipc_get_backend_state - Removed
tauri_ipc_get_captured - Removed
tauri_ipc_monitor - Removed
tauri_list_devices - Removed
tauri_manage_window - Removed
tauri_read_logs - Removed
tauri_webview_execute_js - Removed
tauri_webview_find_element - Removed
tauri_webview_get_styles - Removed
tauri_webview_interact - Removed
tauri_webview_keyboard - Removed
tauri_webview_screenshot - Removed
tauri_webview_wait_for - Added
webview_dom_snapshot - Added
webview_execute_js - Added
webview_find_element - Added
webview_get_pointed_element - Added
webview_get_styles - Added
webview_interact - Added
webview_keyboard - Added
webview_screenshot - Added
webview_select_element - Added
webview_wait_for
17 tool updates
v1.0.0- First observed
tauri_driver_session - First observed
tauri_get_setup_instructions - First observed
tauri_ipc_emit_event - First observed
tauri_ipc_execute_command - First observed
tauri_ipc_get_backend_state - First observed
tauri_ipc_get_captured - First observed
tauri_ipc_monitor - First observed
tauri_list_devices - First observed
tauri_manage_window - First observed
tauri_read_logs - First observed
tauri_webview_execute_js - First observed
tauri_webview_find_element - First observed
tauri_webview_get_styles - First observed
tauri_webview_interact - First observed
tauri_webview_keyboard - First observed
tauri_webview_screenshot - First observed
tauri_webview_wait_for
TDQS
Scored across 19 tools
Most tools have clearly distinct purposes (interact, keyboard, screenshot, execute_js, IPC commands, window management). The main overlap is among the element-inspection cluster: webview_find_element, webview_dom_snapshot, webview_select_element, and webview_get_pointed_element all return element metadata, and select_element vs get_pointed_element are especially close (both return rich metadata + annotated screenshot), but the descriptions distinguish their invocation mechanisms.
A predictable verb_noun pattern dominates and domain prefixes (webview_*, ipc_*) group related tools clearly. Minor deviation: a few tools (driver_session, manage_window, list_devices, read_logs) drop the prefix convention, but they remain readable and consistent in style.
At 19 tools the surface is on the heavier side but justified by a genuinely broad domain spanning session management, webview automation, IPC inspection, device enumeration, window control, and logging. Each tool maps to a distinct capability rather than padding.
Coverage is strong: connection lifecycle (driver_session/setup), interaction, keyboard, JS eval, element discovery, screenshots, waits, window control, IPC execution/monitoring/events, and logging. Minor gaps like navigation/history or attribute-only queries are workable via execute_js.
Maintenance
Related MCP Connectors
Live browser debugging for AI assistants — DOM, console, network via MCP.
Drive real devices from your AI Coding tool. Embed a client SDK (Unity, Godot, Flutter, iOS/macOS, Android, React Native, Web) in your app, then capture screenshots, traverse the UI tree, inject taps and key events, and run automated test tasks on the physical device over a secure relay.
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
Build, test and publish agentic workflows from your AI client: approve steps, read tables, see runs.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables AI-driven testing and automation of Tauri desktop applications through natural language, allowing users to interact with UI elements, capture screenshots, execute commands, and test application flows without manual clicking or complex scripts.98MIT
- AlicenseBqualityCmaintenanceEnables 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.142,143 npm1MIT
- AlicenseNot gradedqualityDmaintenanceA 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.2,143 npm1MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with and debug Tauri desktop applications, providing tools for window management, user input simulation, and storage operations.2,143 npmMIT