ls
List what is on screen: @ref, type, x,y, width×height, label, = value.
alldeviceplatform
io.github.lakpriya1sPublished by GitHub account lakpriya1sv0.7.1Updated Oct 29, 2026
Let your AI agent see, use and control the apps on your phone: screen as text, tap by label.
Local MCP server that lets an AI assistant see and drive iPhone and Android apps — real phones, simulators or emulators — by reading the screen as text and…
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Follow the launch instructions in the repository.
The MCP server for looktap: it lets your AI agent see, use and control the apps on your phone: an iPhone or Android device (simulator, emulator or real phone), and any app on it. It reads the screen as text, taps by label, types, swipes, takes screenshots and reads logs and crashes.
This package only starts the server. Everything else lives in @looktap/cli, which it installs, so you always
get the latest looktap. If you already have the CLI installed, looktap mcp is the same server.
Claude Code
Claude Desktop, Cursor, VS Code and other clients
~/Library/Application Support/Claude/claude_desktop_config.json~/.cursor/mcp.jsonDesktop apps start servers with a minimal PATH, so if yours can't find npx (common with nvm), install the CLI
with npm install -g @looktap/cli and paste the config that looktap mcp --config prints. It uses absolute paths.
looktap tool's
boot "iPhone 16 Pro" starts a simulator, and devices lists what's connectedadb, with an emulator (boot <AVD name> starts one) or a phone with USB or wireless debuggingls, tap, tap_xy, long_press, fill, type, key, hide_keyboard, swipe, scroll_to, back, home,
wait, screenshot (returns the image), logs, crashes, perf (CPU, memory, threads, or frames and jank), and looktap for any other command (devices, boot,
capabilities, stop, expect, test, apps, launch --time …). Actions return the settled screen unless ls: false.
Full docs: https://lakpriya.com/looktap/
AGPL-3.0-only
Source: mcp/README.md at commit 2876c30
List what is on screen: @ref, type, x,y, width×height, label, = value.
alldeviceplatformTap an element by label or @ref. Returns the settled screen.
lsexactdevicetargetrequiredplatformTap a point (iOS points / Android dp, the units ls prints).
xrequiredyrequiredlsdeviceplatformHold a touch on an element (or a point) for ms (default 800).
xylsmsdevicetargetplatformFocus a text field (by label or @ref), clear it, type text, and check the field holds it (a password field: its length). Retypes slowly if not, and fails if it still does not.
lstextrequireddevicetargetrequiredplatformPut text on the device's clipboard, check it is there, and paste it into the focused field.
lstextrequireddeviceplatformEnter a one-time code into its row of digit boxes: tap the first, type each digit, check every box (pastes the code if typing did not fill them).
lscoderequireddeviceplatformType into the focused field.
lstextrequireddeviceplatformPress keys: return, escape, delete, tab, space, selectall, paste, home (Android also back).
lskeysrequireddeviceplatformDismiss the on-screen keyboard and take focus from the field (blur validation runs). Fails if it is still up.
lsdeviceplatformDrag from one point to another (scroll: finger moves up to go down).
lsmsx1requiredx2requiredy1requiredy2requireddeviceplatformSwipe until the element is fully on screen (swipes above the keyboard when it is up).
updevicetargetrequiredplatformAndroid system Back; iOS navigation-bar back button.
lsdeviceplatformThe Home button: go to the home screen, leaving the app running.
lsdeviceplatformWait until a label (or @ref) is on screen — or, with gone, until it is not. With settle and no target: until the screen, its picture included, holds still for a second, for web pages with no labels to wait for (a sign-in page loading).
gonedevicesettletargetsecondsplatformA PNG of the screen, returned as an image (scale 0.5 by default: fewer tokens).
scaledeviceplatformThe app's log since the last logs call (first call: the last minute).
appgrepsincedeviceerrorsplatformCrash reports, ANRs and low-memory kills since the last crashes call.
appsincedeviceplatformThe app's CPU (100% = one core), memory and threads; or, with frames, frames drawn since the last frames call: janky share, p50–p99 frame time, fps (iOS counts what the screen shows; its first frames call only starts counting, so call it before the action too). Simulator numbers are the Mac's: compare runs, not phones. A real iPhone reads through Instruments, 10–25 s a reading.
appforjsondeviceframesplatformAny other looktap command line, or several separated by ";" — e.g. "launch com.example.app --ls", "stop com.example.app", "open myapp://home", "expect Welcome", "zoom in", "appearance dark", "rotate landscape", "fold open", "record start demo" … "record stop", "permission grant location com.example.app", "perf com.example.app --for 10s", "launch com.example.app --time", "apps com.example" (is it installed?), "app com.example.app --paths" (its data folder), "devices --all", "boot Pixel_9a" (also waits for one still starting), "shutdown Pixel_9a", "dismiss logbox" (React Native's toast), "shot sign-in --points" (pixels = tapxy units), "doctor -d <device>", "--wait-unlock 60 launch com.example.app", "handoff \"Approve the sign-in on the phone\" --until Home" (the user's turn: waits for that label). See: help.
devicecommandrequiredplatform90% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
claude mcp add looktap -- npx -y @looktap/mcp{ "mcpServers": { "looktap": { "command": "npx", "args": ["-y", "@looktap/mcp"] } }}