maestro-mcp is an MCP server with 32 tools to automate iOS & Android apps — tap, type, swipe, assert, screenshot, deep-link — built on Maestro. Like Playwright for the web, it gives mobile one reliable, code-aware API, native to AI agents through the Model Context Protocol.
Like Playwright, it's a reliable automation layer for real apps — tap, type, swipe, assert, navigate, set permissions, deep-link, mock location. Use it to drive flows, reproduce bugs, capture screenshots, or build agents that operate your app. One API for iOS and Android, code-aware and agent-native.
One unified API for iOS simulators and Android emulators. The server auto-detects the platform from the device ID and adapts each step (e.g. iOS has no back button → swipe-from-edge gesture).
Static analysis of Swift (SwiftUI/UIKit), Kotlin (Jetpack Compose), and Android layout XML maps your screens, buttons, and navigation — so automation targets real elements, not brittle guesses.
Describe a flow as steps; the server compiles it to Maestro, runs it, and returns the result. Like Playwright's API over raw browser commands — built-in templates for login, navigation, search, and forms.
When a flow fails you get the UI hierarchy, failure screenshots inline, and pattern-based diagnostics (Metro, element-not-found, crash, timeout, network) with concrete fix suggestions.
Detect platform, app IDs, screens and UI elements from native source.
Turn discovered screens into reliable element targets for automation.
Compile steps to Maestro, execute on a real device or emulator.
Screenshots, UI hierarchy, and diagnostics on every step.
// .mcp.json { "mcpServers": { "maestro-mcp": { "command": "node", "args": ["dist/index.js"] } } }
No clone, no build. Runs from npm via npx — point any MCP client at the same command.
Works in Claude Code, Cursor, Windsurf, Claude Desktop, VS Code, and Codex CLI.
claude mcp add maestro -- \ npx -y @luxurylabs/maestro-mcp
{ "mcpServers": { "maestro": {
"command": "npx",
"args": ["-y", "@luxurylabs/maestro-mcp"] } } }
{ "mcpServers": { "maestro": {
"command": "npx",
"args": ["-y", "@luxurylabs/maestro-mcp"] } } }
[mcp_servers.maestro] command = "npx" args = ["-y", "@luxurylabs/maestro-mcp"]
Also: Claude Desktop & VS Code (Copilot) — see the
full install guide.
Host needs Maestro CLI + Android/iOS SDKs; the built-in setup tool checks and installs them.
Automation, not only test execution. The same 32 tools cover autonomous QA, scripted flows, interactive driving, and clean screenshot capture.
Describe a goal in plain English; the agent plans, drives, and self-corrects.
scan_projectsuggest_flowsgenerate_and_run_flowPass an explicit step array for a deterministic, repeatable flow.
generate_and_run_flowrun_flowIssue one action at a time and inspect between steps.
tapinput_textswipetake_screenshotGenerate flows from your real Swift/Kotlin/XML, targeting exact labels & IDs.
analyze_source_filescan_projectBoot a device, fix the status bar to 9:41, capture clean App Store shots.
boot_deviceoverride_status_barReplay a flow, set permissions/location/deep-links, capture failure artifacts.
set_permissionsset_locationopen_url// the agent calls generate_and_run_flow { "appId": "com.example.app", "name": "login-and-settings", "steps": [ { "action": "launchApp", "params": { "appId": "com.example.app" } }, { "action": "tapOn", "params": { "text": "Email" } }, { "action": "inputText", "params": { "text": "test@mail.com" } }, { "action": "tapOn", "params": { "text": "Log in" } }, { "action": "tapOn", "params": { "text": "Settings" } }, { "action": "assertVisible", "params": { "text": "Settings" } } ] }
More walkthroughs — code-aware test gen, App Store screenshots, permission & deep-link testing — in the README usage guide.