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
20 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. For Electron IPC or browser APIs, use appropriate tools for those frameworks.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | ||
| command | 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 provide readOnlyHint=false and destructiveHint=false, and the description adds that it invokes Rust backend functions, implying both read and write capabilities. It also notes the Tauri-specific context and the driver_session requirement, adding behavioral context 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?
The description is brief at three sentences, each serving a distinct purpose: stating the function, mentioning the prerequisite, and clarifying the framework scope. No unnecessary words, and key information is 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?
For a tool with 3 parameters and no output schema, the description covers the essential context: what it does, prerequisite, framework specificity, and usage boundaries. It is complete enough for an AI agent to decide when to use 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 coverage is only 33% (only appIdentifier has a description in schema). The description does not elaborate on the 'command' or 'args' parameters, missing the opportunity to explain their structure or expected format, which is needed given low schema coverage.
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 executes Tauri IPC commands to invoke Rust backend functions, using a specific verb and resource. It distinguishes itself from sibling tools for browser APIs and Electron IPC, making its 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?
The description explicitly states the prerequisite ('Requires active driver_session') and provides clear guidance on when not to use it ('For Electron IPC or browser APIs, use appropriate tools for those frameworks'), offering explicit alternatives.
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 and responses. 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 declare idempotentHint=true and no destructive hint. The description adds that it requires an active driver_session and captures invoke() calls and responses, providing some behavioral context. It does not contradict annotations but adds limited value beyond them.
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 two sentences, front-loads the core purpose and platform, and includes a prerequisite and alternative. Every sentence adds value 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 the tool has only two parameters and no output schema, the description covers scope, platform, prerequisite, and a key alternative. It is mostly complete, though it could contrast with sibling IPC tools for fuller guidance.
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 descriptions for both parameters. The description does not add extra meaning or examples beyond the schema, so it meets the baseline for a covered 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?
The description clearly states the tool monitors Tauri IPC calls between frontend and Rust backend. It specifies the platform (Tauri) and distinguishes from browser monitoring with an explicit alternative.
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 mentions the prerequisite of an active driver_session and provides an alternative for browser monitoring. However, it does not explicitly differentiate from other IPC-related sibling tools like ipc_emit_event or ipc_execute_command.
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). 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, or "resize" 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" | |
| 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?
Beyond annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=true), the description adds that resize uses logical pixels by default and that an active driver session is required. It also explains what each action does, providing 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 a single paragraph with clear enumeration of actions and prerequisites. Every sentence adds necessary information without 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 6 parameters and no output schema, the description covers actions, prerequisites, and pixel unit detail. It could be more complete by mentioning return values for list/info or error handling, but it is largely sufficient.
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%. The description adds value by grouping parameters with actions (e.g., 'resize requires width/height') and noting defaults (windowId defaults to 'main'). This supplements the individual parameter descriptions.
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 manages Tauri windows, explicitly lists three actions (list, info, resize) with detailed explanations, and distinguishes itself from browser window management by directing to Chrome DevTools MCP.
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?
It mentions the prerequisite 'Requires active driver_session' and explicitly tells when not to use this tool ('For browser windows, use Chrome DevTools MCP instead'). However, it could provide more granular guidance on choosing between list, info, and resize actions.
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 |
|---|---|---|---|
| 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 | |
| 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. The description adds valuable behavioral context, especially the prerequisite of driver_session for console logs, which is beyond 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?
Four sentences, front-loaded with purpose and key details. Each sentence adds value; no extraneous 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?
Covers purpose, sources, and a critical prerequisite. No output schema, so return format is not described, but for a simple read tool this is acceptable. Annotations fill the safety gap.
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 high (83%) and the description adds minimal parameter-level detail beyond what the schema provides (e.g., source enum). The prerequisite for console logs is helpful but not parameter-specific.
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 it reads logs from specific sources, with explicit enumeration of sources. Distinguishes itself from sibling tools (e.g., webview_execute_js, ipc_*), as no other tool focuses on log retrieval.
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?
Provides context: use for debugging Tauri apps, requires active driver_session for console logs. Does not explicitly state when not to use or alternatives, but the scope is clear.
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; }". 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; }" | |
| 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 discloses important behaviors: Tauri-specific context (window.__TAURI__), JSON-serializable returns, IIFE requirement, and targeting logic. This supplements the annotations which state it's not read-only and not destructive.
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 starts with the key constraint and purpose, and proceeds to important usage details. It is concise but packs useful information without fluff.
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 adequately covers the tool's domain (Tauri webview), prerequisites, targeting, and return constraints. Given the absence of an output schema, it explains the return requirement (JSON-serializable). It could mention error handling or security implications, but is generally sufficient.
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 descriptions already cover params thoroughly (100% coverage). The tool description provides minimal additional info beyond what's in the schema, such as the Tauri context and default window label, but largely overlaps.
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 action ('Execute JavaScript') and the target ('Tauri app's webview context'). It also distinguishes itself from browser JS execution by referencing Chrome DevTools MCP, and from other webview tools by being a general JS execution 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?
The description specifies that this tool is for Tauri apps only, requires an active driver_session, and explicitly directs browser JS execution to Chrome DevTools MCP. It also explains targeting behavior.
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 DOM elements in a running Tauri app's webview. Supports CSS selectors (default), XPath expressions, and text content matching via the strategy parameter. The "text" strategy first searches element text content, then falls back to placeholder, aria-label, and title attributes. Returns the element's HTML. 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 |
|---|---|---|---|
| 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") | |
| 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?
Discloses that it returns the element's HTML, explains fallback behavior for the 'text' strategy (element text content, then placeholder, aria-label, title), and notes that ref IDs work with any strategy. No contradiction with readOnlyHint annotation.
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?
Concise at 5 sentences, front-loaded with purpose, and every sentence adds value. No redundant or extraneous content.
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 4 parameters and no output schema, the description fully explains behavior, targeting, strategy details, return value, and prerequisites (driver_session). Also provides alternative tool for non-Tauri contexts.
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?
Adds significant meaning beyond the schema: clarifies windowId defaults to 'main', appIdentifier defaults to only connected app, selector interpretation depends on strategy, and details text strategy fallback chain. Schema coverage is 100%, but description enriches each parameter.
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 finds DOM elements in a Tauri app's webview, specifies supported selector strategies (CSS, XPath, text), and differentiates from sibling tools like webview_dom_snapshot and webview_select_element. The verb 'find' and resource 'DOM elements' are specific.
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 not to use: 'For browser pages or documentation sites, use Chrome DevTools MCP instead.' Also provides context on requiring an active driver_session and targeting behavior for appIdentifier, giving clear guidance on proper usage.
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_get_stylesARead-only
[Tauri Apps Only] Get computed CSS styles from elements in a Tauri app. 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 style inspection, use Chrome DevTools MCP instead.
| Name | Required | Description | Default |
|---|---|---|---|
| multiple | No | Whether to get styles for all matching elements (true) or just the first (false) | |
| selector | Yes | Element selector: CSS selector (default), XPath expression, 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") | |
| properties | No | Specific CSS properties to retrieve. If omitted, returns all computed styles | |
| 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 and openWorldHint=false. Description adds crucial behavioral context: requires active driver_session, explains app targeting logic, and details selector strategy options including ref IDs. No contradiction 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?
Five sentences with no wasted words. Front-loaded with main purpose and key constraint (Tauri Apps Only). Each sentence serves a distinct purpose—purpose, scope, strategy options, targeting rules, and alternatives.
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 tool has 6 parameters, 1 required, rich schema, and no output schema, the description covers prerequisites, selector strategies, multi-app targeting, and alternative tools. Leaves little ambiguity 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. Description adds value by explaining that strategy defaults to css, supporting XPath and text, and that ref IDs work across strategies. Also clarifies appIdentifier behavior beyond 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?
Clearly states 'Get computed CSS styles from elements in a Tauri app,' specifying verb, resource, and platform. Distinguishes from sibling tools by noting Tauri-only and referencing Chrome DevTools MCP for browsers.
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 (active driver_session), provides when-not-to-use (browser style inspection → Chrome DevTools MCP), and explains app targeting behavior for single vs multiple connected apps.
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, scroll, swipe, focus, or perform gestures in a Tauri app webview. Supported actions: click, double-click, long-press, scroll, swipe, focus. Supports CSS selectors (default), XPath, and text content matching via the strategy parameter. 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 | |
| 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 indicate readOnlyHint=false, destructiveHint=false, which aligns with the description of performing interactive gestures. The description adds context beyond annotations, such as requiring an active driver session and explaining selector strategies, but could explicitly mention potential side effects (e.g., UI changes). No contradiction 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?
The description is two sentences long, each packed with essential information. The first sentence states purpose and actions, the second adds constraints and alternatives. No redundant text; every sentence earns its place.
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 14 parameters, the description covers key behavioral aspects: requires active session, supported actions, selector strategies, and alternative for browser. It lacks explicit mention of error handling, timeout, or return values, but the absence of an output schema reduces the burden. Slight gap in potential failure modes.
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 schema already documents each parameter. The description adds value by summarizing parameter behavior (e.g., scroll direction: 'positive = right/down') and providing defaults for duration. This slightly exceeds the baseline of 3.
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 explicitly states the tool's purpose: interacting with a Tauri app webview through actions like click, scroll, and swipe. It lists supported actions, selector strategies, and distinguishes from browser interaction tools, providing clear differentiation from siblings like webview_keyboard and webview_dom_snapshot.
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 includes explicit usage conditions: 'Requires active driver_session' and 'For browser interaction, use Chrome DevTools MCP instead.' This tells the agent when to use this tool and when to avoid it, offering clear guidance.
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") | |
| 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?
Description adds behavioral context beyond annotations: requires driver_session, explains selector strategies (CSS, XPath, text) and their fallback behavior, and clarifies app targeting. Annotations (readOnlyHint=false) are consistent; no contradictions. Could have mentioned side effects like clearing existing text, but sufficient for a keyboard input tool.
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 well-structured sentences: purpose, selector details, targeting/alternatives. Front-loaded with key info, no redundancy. Every sentence earns its place.
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 8 parameters and no output schema, the description covers all major aspects: action types, selector strategies, targeting logic, and requirement for driver session. Missing details like return value or error handling, but overall adequate for a moderately complex input 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%, providing baseline 3. Description adds value by clarifying that selector is required for 'type' action, explaining ref IDs work with any strategy, and detailing action types. This goes beyond schema descriptions.
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 'Type text or send keyboard events in a Tauri app' with specific verb+resource. It distinguishes from sibling tools like webview_interact by focusing exclusively on keyboard input, and from browser-focused tools by noting the alternative.
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 says to use Chrome DevTools MCP for browser keyboard input, provides context about requiring an active driver_session, and explains default app targeting. This gives 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.
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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behaviors beyond the readOnlyHint annotation: captures only visible viewport, targeting logic (only/appIdentifier), and the filePath behavior. The annotation already marks it as read-only, so the description adds value with technical constraints. No contradictions.
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 extremely concise: two sentences plus a brief note about alternatives. It front-loads the key constraint ('Tauri Apps Only') and uses clear, direct language. Every sentence adds essential information 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 6 parameters, no output schema, and 19 sibling tools, the description is sufficiently complete. It covers prerequisites, limitations, targeting, and alternatives. The schema covers parameter details. Minor omission: no mention of return format (base64 vs file) beyond the filePath note, but the schema covers that implicitly.
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 input schema already documents all parameters. The description only adds context for `appIdentifier` (default behavior). Other parameters are not elaborated. Baseline 3 is appropriate since schema does the heavy lifting, with minor added 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's purpose: screenshotting a Tauri app's webview, specifying it requires an active driver session and captures only the visible viewport. It distinguishes itself from browser screenshot tools (Chrome DevTools MCP) and notes incompatibility with Electron apps, making the scope 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?
The description provides explicit when-to-use and when-not-to-use guidance. It states the tool is for Tauri app webviews, requires a driver session, and gives an alternative for browser screenshots. It also warns that Electron apps will not work, which helps the agent avoid incorrect invocations.
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. Dates show when Glama detected each change.
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
Each tool targets a distinct aspect of Tauri automation: session management, IPC, webview DOM, window control, logs, device listing, etc. Overlap is minimal, e.g., webview_find_element vs webview_dom_snapshot serve different purposes (raw HTML vs structured tree).
Most tools follow a [domain_]verb_noun pattern (e.g., ipc_emit_event, webview_screenshot). However, some lack the domain prefix (get_setup_instructions, read_logs) and driver_session is noun_noun. Overall pattern is clear but not perfectly uniform.
20 tools is well-scoped for a specialized Tauri automation server. Each tool covers a necessary function without redundancy, spanning session, IPC, webview, window, logs, and device enumeration.
Core automation tasks are covered: session management, IPC monitoring/execution, DOM inspection/interaction, window management, logging, and setup. Minor gap: no tool for launching or restarting the app, but this is typical for MCP servers focused on running apps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Live browser debugging for AI assistants — DOM, console, network via MCP.
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
Control real Android and iOS devices with LLM agents — tap, swipe, type, automate flows.
Direct access to Cypress tests results and accessibility reports in your AI workflow.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables 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.97MIT
- AlicenseBqualityBmaintenanceEnables 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.148971MIT
- 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.8971MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interact with and debug Tauri desktop applications, providing tools for window management, user input simulation, and storage operations.897MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/hypothesi/mcp-server-tauri'
If you have feedback or need assistance with the MCP directory API, please join our Discord server