Skip to main content

iOS & Android QA agent — MCP server for Claude Code

Project description

Watchr — iOS & Android QA Agent

AI-powered mobile app testing for iOS and Android. Tell Claude Code what to test in plain English — it drives the simulator/emulator or physical device, finds bugs, checks accessibility, and catches crashes automatically.

Supported Platforms

Platform How it works
iOS Simulator xcrun simctl + idb — auto-detected
iOS Physical Device WatchrRunner XCTest server via USB — guided setup
Android Emulator adb — auto-detected, zero setup
Android Physical Device adb via USB debugging — auto-detected, zero setup

Install (one time)

# Add watchr to Claude Code
claude mcp add --scope user watchr -- uvx --python 3.12 --upgrade watchr-mcp

That's it. One command. uvx downloads everything automatically. The --scope user flag makes watchr available in every project.

Platform-specific prerequisites

iOS Simulator:

brew install idb-companion

Android (emulator or physical):

  • Android Studio installed (for adb)
  • For physical devices: USB debugging enabled

iOS Physical Device:

  • Xcode installed, device connected via USB
  • Watchr guides you through the one-time XCTest runner setup

If you're missing anything, watchr will tell you exactly what to install when it starts.

Usage

Open Claude Code in any project and tell it what to test:

Boot the simulator, launch com.yourapp.bundleid, and test the sign-up flow

Claude Code will:

  • Auto-detect your device (iOS simulator, Android emulator, or USB-connected phone)
  • Launch your app
  • Navigate the flow you described
  • Take screenshots at each step
  • Report any bugs, crashes, or issues it finds

Switch platforms manually

If watchr picks the wrong device, tell it:

Use set_device with mode "android"
Use set_device with mode "simulator"
Use set_device with mode "physical"

QA After Code Changes

Use watchr as part of your dev workflow — save a baseline before changes, then compare after.

"Save a baseline of the home screen called 'home'"

Make your code changes, rebuild, then:

"Compare the home screen with the baseline 'home' and report any visual differences"

For a full regression check after a feature branch:

"Launch the app, test sign-up, onboarding, and settings — check for crashes and accessibility issues"

Works great in CI or as a pre-merge check. One prompt replaces a manual test checklist.

Cross-Platform Testing (iOS + Android)

Test both platforms in parallel from a single prompt:

"Test the sign-up flow on both iOS and Android — report any differences"

Claude targets each device independently using the device parameter — no switching needed:

observe(device="simulator")   # iOS screenshot + UI tree
observe(device="android")     # Android screenshot + UI tree

Both devices respond in the same session, same prompt.

Example Prompts

"Test the sign-up flow end to end and report any bugs"

"Go to settings, verify all options are visible, check accessibility"

"Run monkey testing on the home screen for 30 seconds"

"Save a baseline screenshot of the landing page, then compare after my changes"

"Navigate to the payment screen and check if the app crashes"

What It Can Do

Capability Description
Navigate any flow Describe a user journey in English — it taps, swipes, types, and scrolls through it
Crash Detection Checks if the app is still alive after every action, reads crash logs
Accessibility Audit Finds missing labels, small touch targets, unlabeled buttons
Visual Regression Saves golden screenshots, diffs against them to catch UI changes
Performance Timing Measures screen load times, flags slow screens (>3s)
Monkey Testing Random taps and swipes to find crashes scripted tests would miss
Text Verification Asserts specific text is on screen, like Playwright's expect
Auto Bug Reports Files GitHub issues automatically with device info and error context

Troubleshooting

Problem Fix
MCP server won't start Run uvx watchr-mcp in terminal to see errors
"No booted simulator found" Boot one: xcrun simctl boot "iPhone 16 Pro"
"No Android device found" Start an emulator or connect device with USB debugging
idb commands fail Run idb connect UDID with your simulator's UDID
Screenshots are blank Make sure the Simulator/Emulator is open and visible
Physical device not working Run setup_device("your.bundle.id") and follow the guide

Update

Watchr updates automatically — uvx fetches the latest version from PyPI each time Claude Code starts the server.

To force an update:

uvx --upgrade watchr-mcp

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

watchr_mcp-0.4.0.tar.gz (123.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

watchr_mcp-0.4.0-py3-none-any.whl (25.8 kB view details)

Uploaded Python 3

File details

Details for the file watchr_mcp-0.4.0.tar.gz.

File metadata

  • Download URL: watchr_mcp-0.4.0.tar.gz
  • Upload date:
  • Size: 123.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.8

File hashes

Hashes for watchr_mcp-0.4.0.tar.gz
Algorithm Hash digest
SHA256 a2f04124064459f41fc24cc235021f6efda689ce982b97c1ca6b8f982f9b57c1
MD5 0e80da76fc1fd3eaa0b2dd84ca630ba7
BLAKE2b-256 5f3186ebbc731be26568d3b3264d2c654d0260e3b0901fb8f1e9d5ebec9a8996

See more details on using hashes here.

File details

Details for the file watchr_mcp-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: watchr_mcp-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 25.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.8

File hashes

Hashes for watchr_mcp-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b3bce904a9605957b4f389c5bb8fb78d2639d7d17495217fabedfc484f67f95d
MD5 d0dd6be4cc8b653dd901cb72951e11e5
BLAKE2b-256 548eb70ce1020f256ad2fbb141d123a12c8ff0d5845b55c2d26c5888161973c9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page