looktap

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.

Overview

AI-generated overview

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…

What you can do
  • List the screen as text rows with @refs, labels and values, and take screenshots
  • Tap, tap at a point, long-press, swipe, scroll to an element, press keys, go back or home
  • Fill and type into fields, paste from the clipboard, enter one-time codes, dismiss the keyboard
  • Wait for a label to appear or disappear, or for the screen to settle
  • Read app logs, crash reports and ANRs, and measure CPU, memory, threads and frame jank
  • Run any other looktap command line, such as devices, boot, capabilities, launch, stop, expect or record
When to use it
Useful when you want an assistant to exercise or explore a mobile app on a simulator, emulator or connected phone: walking through flows, checking screens, reproducing a bug, or gathering logs and performance numbers while it acts.
Requirements
Runs locally over stdio via npx from the npm package; needs Node 18+. iPhone work needs macOS with Xcode and a simulator or paired iPhone; Android needs adb with an emulator or a phone with USB or wireless debugging. Desktop clients with a minimal PATH may need a global CLI install and an absolute-path config.
Before you install
Actions are real: against a live backend every tap, fill and submission reaches the real service. The server tells assistants never to type real credentials, OTPs or card numbers, but a person should sign in. It can launch, stop and record apps, change device settings and grant permissions. If a device is locked, it asks for a human to unlock it.

Installation

In SourceWeft

  1. Open looktap in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

@looktap/mcp

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.

Set up

Claude Code

bash
claude mcp add looktap -- npx -y @looktap/mcp

Claude Desktop, Cursor, VS Code and other clients

json
{  "mcpServers": {    "looktap": { "command": "npx", "args": ["-y", "@looktap/mcp"] }  }}
  • Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Cursor: ~/.cursor/mcp.json

Desktop 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.

Requirements

  • Node 18+
  • iPhone: macOS with Xcode, and a simulator or a paired iPhone (a free Apple ID is enough). The looktap tool's boot "iPhone 16 Pro" starts a simulator, and devices lists what's connected
  • Android: adb, with an emulator (boot <AVD name> starts one) or a phone with USB or wireless debugging

Tools

ls, 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/

License

AGPL-3.0-only

Source: mcp/README.md at commit 2876c30

Tools

20

ls

List what is on screen: @ref, type, x,y, width×height, label, = value.

Parametersalldeviceplatform

tap

Tap an element by label or @ref. Returns the settled screen.

Parameterslsexactdevicetargetrequiredplatform

tap_xy

Tap a point (iOS points / Android dp, the units ls prints).

Parametersxrequiredyrequiredlsdeviceplatform

long_press

Hold a touch on an element (or a point) for ms (default 800).

Parametersxylsmsdevicetargetplatform

fill

Focus 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.

Parameterslstextrequireddevicetargetrequiredplatform

paste

Put text on the device's clipboard, check it is there, and paste it into the focused field.

Parameterslstextrequireddeviceplatform

code

Enter 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).

Parameterslscoderequireddeviceplatform

type

Type into the focused field.

Parameterslstextrequireddeviceplatform

key

Press keys: return, escape, delete, tab, space, selectall, paste, home (Android also back).

Parameterslskeysrequireddeviceplatform

hide_keyboard

Dismiss the on-screen keyboard and take focus from the field (blur validation runs). Fails if it is still up.

Parameterslsdeviceplatform

swipe

Drag from one point to another (scroll: finger moves up to go down).

Parameterslsmsx1requiredx2requiredy1requiredy2requireddeviceplatform

scroll_to

Swipe until the element is fully on screen (swipes above the keyboard when it is up).

Parametersupdevicetargetrequiredplatform

back

Android system Back; iOS navigation-bar back button.

Parameterslsdeviceplatform

home

The Home button: go to the home screen, leaving the app running.

Parameterslsdeviceplatform

wait

Wait 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).

Parametersgonedevicesettletargetsecondsplatform

screenshot

A PNG of the screen, returned as an image (scale 0.5 by default: fewer tokens).

Parametersscaledeviceplatform

logs

The app's log since the last logs call (first call: the last minute).

Parametersappgrepsincedeviceerrorsplatform

crashes

Crash reports, ANRs and low-memory kills since the last crashes call.

Parametersappsincedeviceplatform

perf

The 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.

Parametersappforjsondeviceframesplatform

looktap

Any 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.

Parametersdevicecommandrequiredplatform

Version history

6
  1. v0.7.1LatestOct 22, 2026
  2. v0.7.0Oct 20, 2026
  3. v0.6.1Oct 19, 2026
  4. v0.5.0Oct 18, 2026
  5. v0.4.0Oct 17, 2026
  6. v0.2.0Oct 16, 2026

Score

90% 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.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts