Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Monocle

FreeNot checked

Gives AI agents the ability to interact with iOS simulators through 21+ tools for mobile app testing.

GitHubEmbed

About

Gives AI agents the ability to interact with iOS simulators through 21+ tools for mobile app testing.

README

Playwright for Mobile — Give AI agents the ability to test any iOS mobile app.

Monocle is an open-source MCP server + visual dashboard that lets AI agents (Claude Code, Cursor, etc.) interact with iOS simulators through 21+ tools: tap, swipe, type, screenshot, inspect elements, wait for conditions, record sessions, and more.

Architecture

┌─────────────────────────────────────────────────────┐
│            Monocle Dashboard (Next.js)               │
│  Live Simulator View + Agent Chat + Action Timeline  │
└───────────────────────┬─────────────────────────────┘
                        │ HTTP + WebSocket (:7200)
┌───────────────────────▼─────────────────────────────┐
│            Monocle Server (Node.js)                  │
│  MCP Server (stdio+HTTP) + REST API + WS Streaming   │
│  21+ tools • Element refs (@e1) • Session recording  │
└───────────┬────────────────────────┬────────────────┘
            │                        │
     idb_companion              xcrun simctl
     (accessibility,            (screenshots,
      tap, swipe, type)          recording, lifecycle)

Quick Start

# Prerequisites: Xcode 15+, Node.js 20+, idb_companion
npm install
npm run dev

# Or use via MCP (stdio mode for Claude Code):
npx tsx packages/server/src/index.ts --stdio

MCP Configuration

{
  "mcpServers": {
    "monocle": {
      "command": "npx",
      "args": ["tsx", "/path/to/monocle/packages/server/src/index.ts", "--stdio"]
    }
  }
}

Tools (21+)

Category Tools
Screen screenshot, getScreenText
Interact tap, tapByText, tapById, doubleTap, longPress, swipe, type, typeInto, pressKey
Inspect listElements, findElement, getElementInfo
Wait waitForElement, waitForText, assertVisible
Device listDevices, launchApp, terminateApp, getDeviceInfo, openUrl
Record startRecording, stopRecording

Element Refs

Monocle assigns short refs (@e1, @e2, ...) to every UI element. Use them anywhere:

Agent: "tap @e3"  → taps the Login button
Agent: "type into @e5 '[email protected]'"  → types into email field

Refs are stable within a session — same element keeps the same ref across calls.

Packages

  • packages/server — MCP server, iOS bridges, streaming, sessions
  • packages/dashboard — Next.js visual dashboard
  • packages/cli — CLI (monocle start, monocle devices, monocle screenshot)

Prerequisites

  • macOS with Xcode 15+
  • At least one iOS Simulator booted
  • idb_companion installed (brew install idb-companion)
  • Python 3.11 venv with fb-idb (for accessibility tree)

License

MIT — Pivot Studio AI

from github.com/per-simmons/monocle

Installing Monocle

This server has no published package — it is built from source. Open the repository and follow its README.

▸ github.com/per-simmons/monocle

FAQ

Is Monocle MCP free?

Yes, Monocle MCP is free — one-click install via Unyly at no cost.

Does Monocle need an API key?

No, Monocle runs without API keys or environment variables.

Is Monocle hosted or self-hosted?

Self-hosted: the server runs locally on your machine via the install command above.

How do I install Monocle in Claude Desktop, Claude Code or Cursor?

Open Monocle on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare Monocle with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All ai MCPs