Skip to main content

iOS Simulator QA agent — MCP server for Claude Code

Project description

Watchr — iOS QA Agent

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

Install (one time)

# 1. Install idb-companion (needed to control the iOS Simulator)
brew install idb-companion

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

That's it. Two commands. No repo to clone, no paths to manage. uvx downloads everything automatically. The --scope user flag makes watchr available in every project.

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

Usage

Go to your app's project directory, open Claude Code, and type:

cd ~/Projects/my-ios-app
claude

Then tell it what to test:

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

Claude Code will:

  • Boot the simulator
  • Launch your app
  • Navigate the flow you described
  • Take screenshots at each step
  • Report any bugs, crashes, or issues it finds

Note: Your simulator needs to be booted and your app installed on it. If not:

xcrun simctl boot "iPhone 16 Pro"
open -a Simulator
xcrun simctl install booted /path/to/YourApp.app

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

Troubleshooting

Problem Fix
idb commands fail Run idb connect UDID with your simulator's UDID from xcrun simctl list
MCP server won't start Run uvx watchr-mcp in terminal to see errors
Screenshots are blank Make sure the Simulator app is open and visible
"No booted simulator found" Boot one with xcrun simctl boot "iPhone 16 Pro"
App not launching Verify the bundle ID with xcrun simctl listapps booted

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.2.0.tar.gz (86.3 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.2.0-py3-none-any.whl (13.5 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for watchr_mcp-0.2.0.tar.gz
Algorithm Hash digest
SHA256 e26d43265a925694e2bc67ee9544b7ef20e383479af1ca671d2a30716ca6fa17
MD5 8345a38ebfbd822b02b10f2f4cda3fe7
BLAKE2b-256 7537e1e746d53bf746474b97dfbd260d2e2a9bf39f32f61adb45c0730611c09b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for watchr_mcp-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 aef524b8a2c03619e1cb733d9fe604052aafbc1ac3fddba55dfc266d0e5236aa
MD5 34b51fd9d0597d6907ab69ac2f197236
BLAKE2b-256 45f0bd94fb9ba6e647c2c66c5db81b21b63de351688673c8faa1bbeb0a0d00fa

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