Large language models are strong at reading code and proposing UI tests, but they often stop short of **operating** a live app. You either hand them a static screenshot or test the app yourself and tell the agent what happened.

[Maestro MCP](https://docs.maestro.dev/get-started/maestro-mcp) makes that loop simple. Install the Maestro CLI, add one MCP server to your coding agent, boot an iOS simulator or Android emulator (or connect a physical Android device), and ask the agent to check the UI. Maestro implements the [Model Context Protocol (MCP)](https://modelcontextprotocol.io/docs/getting-started/intro), so agents such as Claude Code, Cursor, Codex, Copilot, Gemini, Windsurf, JetBrains AI Assistant, and Grok Build can list devices, inspect the screen, run flows, take screenshots, open the Viewer, and optionally send work to Maestro Cloud.

Agents use Maestro tools (`inspect_screen`, `run`, screenshots, Viewer) and adapt when the UI changes. You mainly need a running target, MCP connected, and a clear ask about what to verify on screen. The same approach works on iOS, Android, React Native, Flutter, and web.

## What you get

**Maestro MCP** ships with the Maestro CLI. Connect it in your agent and the tools below show up in the session. With the app running, you stay in one conversation: change code, then ask the agent to exercise the UI and report what happened. Common asks include confirming a feature still works (bookmarks, search, a primary CTA or any feature your app has), walking main tabs or Settings, and saving screenshots for a PR or for analyzing the UI. When something fails, the agent can inspect the screen, adjust, and try again. Use **Maestro Viewer** (below) when you want to watch the device while it works.

In the agent transcript you see MCP calls such as list devices, open Viewer, `take_screenshot`, `run` (launch and taps), and `inspect_screen`, all in one chat thread with the UI check at the top (here: Starred chat on the Claude Android app).

| Tool                         | Role                                                   |
|------------------------------|--------------------------------------------------------|
| `list_devices`               | Devices and browsers available for automation           |
| `inspect_screen`             | Current screen view hierarchy                           |
| `take_screenshot`            | Capture for PRs and reviews                             |
| `run`                        | Execute a flow (inline YAML, files, or a folder)      |
| `cheat_sheet`               | Maestro command and flow syntax reference for the agent |
| `open_maestro_viewer`       | Live device mirror and command stream                   |
| `list_cloud_devices`        | Valid Cloud device and OS pairs                         |
| `run_on_cloud`              | Submit a flow or folder to Maestro Cloud               |
| `get_cloud_run_status`      | Poll a Cloud run until it finishes                     |

## Maestro Viewer

Maestro Viewer shows the live device next to the agent and the Maestro steps it is running. You ask in natural language, the agent drives the app, and Viewer keeps the screen and command stream in one place so a human can follow along without leaving the IDE.

In this session the agent was asked to check **Saved locations** on Android Weather. It listed devices, opened Viewer, launched the app, navigated, added a preferred location (Paris), saved it, and captured screenshots along the way. The center panel is the Maestro command stream (`launchApp`, `tapOn`, `inputText`, `takeScreenshot`, scroll). The right panel is the running app as the agent left it: current location plus saved cities.

Ask the agent to **open the maestro viewer** when you want to watch the live device.

## Getting started

1. Install the [Maestro CLI](https://docs.maestro.dev/maestro-cli/how-to-install-maestro-cli) so `maestro` is on your `PATH`, then add MCP to your agent:

Copy

```
   # Claude Code
   claude mcp add maestro -- maestro mcp

# Codex
   codex mcp add maestro -- maestro mcp

# Grok Build
   grok mcp add maestro -- maestro mcp
   ```

For Cursor, Claude Desktop, Copilot, Gemini, and other agents, follow the **Maestro MCP Server** install steps on the [Maestro MCP docs](https://docs.maestro.dev/get-started/maestro-mcp).

2. Boot an iOS simulator or Android emulator, or connect a physical Android device. The agent confirms via `list_devices`.
3. Install and launch your app.
4. Ask in natural language, for example: _Ensure bookmark functionality is working using Maestro._ Or: _I fixed the search results bug. Use Maestro to re-check search with a known query._ The agent lists devices, inspects, taps, asserts, and screenshots as needed.

## Takeaway

You gain a coding agent that can operate the running app, not only read the repo. UI checks happen in the same session as implementation, so feedback is fast and tied to real screens. Screenshots and Viewer give evidence you can share. One MCP setup works across agents and stacks, so teams spend less time on separate UI automation rituals and more time shipping with confidence.
