fingertip

Un agente que ve la pantalla y la toca con el dedo.

Dale a Claude Code la posibilidad de usar tu app como lo harías vos: abrirla, tocar, escribir y fijarse que todo esté donde tiene que estar. En el simulador de iOS o en tu Mac.

Corre como servidor MCP para Claude Code (fingertip-mcp). La app Fingertip, en la barra de menú, lo registra por vos y muestra lo que el agente está haciendo.

Un dedo de arcilla presiona el botón Descargar en un iPhone de arcilla
img/hero.webp1600×1200 · transparente
@1:3 button
read_screen() — esta misma pantalla
@1:1heading"Un agente que ve la pantalla…"
@1:2text“Dale a Claude Code la posibilidad…”
@1:3button“Descargar para Mac”
@1:4button"Ver las herramientas"
> tap(alias: "1:3")

Cómo funciona

Le pedís algo a Claude — “abrí la app, logueate y fijate que el inbox tenga tres mensajes” — y fingertip le da ojos y un dedo para hacerlo.

@1 read_screen

Lee la pantalla

Le pide al sistema la lista de lo que hay en pantalla: botones, textos, campos. Cada cosa llega con un nombre corto, como @1:3.

@2 tap

Toca lo que eligió

Claude decide qué hacer y lo señala por ese nombre. fingertip tapea, escribe, scrollea o elige de un menú, sin adivinar coordenadas.

@3 screen

Mira el resultado

Después de cada acción vuelve a leer, así Claude ve qué pasó. Si la pantalla cambió antes de tocar, frena en vez de tocar lo equivocado.

Dónde funciona

SimulatorDriver
Un iPhone de arcilla con una lista de filas en pantalla
img/driver-sim.webp1600×1000 · transparente
@1:2 button

Simulador de iOS

Tu app corriendo en el simulador de Xcode, en la misma Mac.

MacDriver
Una ventana de Mac de arcilla con una barra lateral y botones
img/driver-mac.webp1600×1000 · transparente
@1:5 button

Apps de macOS

Tu app de Mac, o cualquier otra abierta. Las sensibles, como terminales o gestores de contraseñas, quedan bloqueadas.

Qué instalás

app

Fingertip.app

Vive en la barra de menú. Conecta fingertip con Claude Code en un clic y, mientras el agente trabaja, te muestra un puntero y un aviso con lo que está haciendo.

binary

fingertip-mcp

El servidor MCP que usa Claude Code. Viene adentro de la app; si preferís, lo compilás desde el código.

Por qué confiar

Un agente que toca tu app tiene que ser rápido, preciso y no meterse donde no debe.

@1 wait_for

No se pierde lo que dura un segundo

Esperar pasa del lado de fingertip, no de Claude: mira la pantalla cada cuarto de segundo y puede tocar un botón en el instante en que aparece, aunque solo esté un momento.

wait_for · tap: true

@2 tap

No toca lo equivocado

Cada nombre recuerda de qué lectura vino. Si la pantalla cambió desde entonces, fingertip frena y avisa en vez de tocar lo que quedó en ese lugar.

@L:N · screen_changed

@3 connect

No se mete con tus apps sensibles

Todo lo que lee llega a Claude como texto, y un mail o una página podría esconder instrucciones. Por eso terminales, gestores de contraseñas y herramientas de automatización quedan bloqueadas, y solo vos podés habilitarlas.

FINGERTIP_UNRESTRICTED=1

@4 error

Te dice qué salió mal

Cada error trae un código y si es seguro reintentar. Cuando lo es, viene con la pantalla actual, así Claude sigue sin volver a leer.

code · retry_safe

Herramientas MCPfingertip-mcp

Claude decide cada paso; con run_instruction, los decide Jev. Las que dicen macOS no aplican al simulador.

@1list_targetssimuladores y apps disponibles
@2connectpor udid o bundle_id
@3list_windowslas ventanas de una app de Mac
@4read_screenla pantalla, por regiones si es densa
@5wait_forespera un texto, y lo toca al aparecer
@6tappor alias L:N o por x,y
@7type_textescribe en el campo activo
@8erase_textborra lo escrito
@9submitReturn en el campo activo
@10selectelige una opción de un pop-up o menú
@11set_valuetexto, fecha o slider · macOS
@12togglecheckbox, radio o switch · macOS
@13scrolldesplaza la pantalla
@14swipegesto direccional
@15press_buttonbotones de hardware
@16screenshotJPEG inline, PNG en disco
@17start_recordinggraba un .mov de la pantalla
@18stop_recordinglo cierra y devuelve la ruta
@19relaunch_appreinicia la app bajo prueba
@20terminate_appla cierra
@21run_instructiondelega la corrida entera a Jev

Instalación

La forma corta es la app: trae fingertip-mcp adentro y lo registra en Claude Code por vos.

  1. Descargá Fingertip.dmg y arrastrá Fingertip a Aplicaciones. Está firmada y notarizada.
    Descargar Fingertip.dmg
  2. Abrila: vive en la barra de menú. En Ajustes → General, registrá fingertip en Claude Code y reconectá con /mcp. Queda a nivel de usuario, disponible desde el repo de cualquier app bajo prueba.
  3. Para run_instruction, pegá tu TYPESAFE_API_KEY en Ajustes → Jev antes de registrar. Se guarda en el Llavero; si la cambiás, volvé a registrar desde General.

Requisitos

  • macOS 27.
  • Para el simulador: Xcode 27, un simulador booteado y sim-use (brew tap lycorp-jp/tap && brew install lycorp-jp/tap/sim-use).
  • Para apps de Mac: permiso de Accessibility, y de Screen Recording para capturas y grabaciones. Se le dan a la app que corre fingertip — para el MCP, la terminal donde corre Claude Code.

Desde el código

$ git clone https://github.com/deadcode-labs/fingertip.git && cd fingertip $ swift build -c release $ claude mcp add --scope user fingertip -- "$PWD/.build/release/fingertip-mcp"

Necesita Xcode 27 (Swift 6.2+). Después de cambiar el paquete, recompilar en release y reconectar el MCP (/mcp).

run_instruction necesita TYPESAFE_API_KEY en el entorno del servidor (claude mcp add … -e TYPESAFE_API_KEY=…, o exportada en la shell que arranca Claude Code).

Límites

  • Escribir en el simulador pasa por un teclado US: los acentos y cualquier texto fuera de ASCII se rechazan.
  • Si tu app de Mac está pausada en el debugger de Xcode, fingertip no la maneja: mientras está pausada, toda lectura se colgaría.
  • Solo el simulador de iOS y apps de macOS en la misma Mac: nada de dispositivos físicos ni Android.

Hablemos

¿Lo estás probando en tu app, o encontraste algo que no anda? fingertip lo hace deadcode: escribinos.