Oh My Android

Aplicación nativa de macOS y servidor MCP que permite a los agentes de IA ver y controlar el Emulador de Android y teléfonos: capturas de pantalla, árbol de UI en dp, toques, modo oscuro, RTL, logcat.

Documentación

Oh My Android app icon: a surprised Android robot

Oh My Android

El panel de control que faltaba para el Emulador de Android en macOS: una GUI de ADB gratuita para Mac.
Modo oscuro, tamaño de fuente, idioma RTL, TalkBack, velocidad de red, GPS y más: un clic para cada uno, sin comandos de adb.
Inspector de diseño en dp, auditoría de accesibilidad y un servidor MCP para que los agentes de IA puedan controlar tu emulador.

Latest release Oh My Android website Homebrew cask MCP server for AI agents Build status macOS 26 or later MIT license GitHub stars

Instalación: brew install --cask ateymoori/tap/oh-my-android · gratuito y de código abierto
Sitio web: royan.se/work/oh-my-android

Demo: the Oh My Android panel beside the Android Emulator switches dark mode, font size and language to Arabic RTL, then simulates an incoming SMS and call
Modo oscuro, tamaño de fuente, RTL en árabe, SMS y llamadas entrantes. Cada uno con un clic.

The Oh My Android control panel with appearance, app, capture and network actionsLayout Inspector with dp measurements and the TalkBack order auditAI Agents settings: access level and one-step MCP setup for Claude Code, Codex, Cursor and VS Code
Panel de controlInspector de diseño + auditoría de TalkBackServidor MCP para agentes de IA

Características · Hoja de referencia de adb · Inspector de diseño · Agentes de IA (MCP) · Solución de problemas · Preguntas frecuentes · Contribuir · Sitio web

¿Por qué Oh My Android?

Probar una aplicación de Android significa hacer las mismas tareas una y otra vez: cambiar al modo oscuro, hacer la fuente enorme, cambiar el idioma a árabe para comprobar el RTL, activar TalkBack, limitar la red a 3G, borrar los datos de la aplicación, tomar una captura de pantalla. Cada una está oculta en la configuración del emulador o necesita un comando de adb shell que tienes que buscar de nuevo.

Oh My Android las pone todas en un panel flotante junto al emulador. Cada icono muestra el estado real del dispositivo, y un clic lo cambia. Es una aplicación nativa de macOS para desarrolladores de Android y probadores de control de calidad: una GUI para el Emulador de Android, una GUI de adb para teléfonos reales, un Inspector de diseño en dp, un verificador de accesibilidad y un servidor MCP de Android para Claude Code, Codex, Cursor y otros agentes de codificación con IA.

  • ⚡ Un clic para casi 50 acciones de prueba cotidianas
  • 📱 Emuladores y teléfonos reales: adb por USB o Wi‑Fi
  • 🔍 Inspector de diseño: mide cualquier vista en dp, estilo Figma, y superpone tu diseño
  • ♿ Auditoría de accesibilidad: orden de TalkBack, etiquetas faltantes, objetivos táctiles pequeños
  • 🗄️ Inspector de datos: SharedPreferences y SQLite de tu compilación de depuración
  • 🤖 Servidor MCP para agentes de IA: tu agente de codificación puede ver la pantalla, tocar, cambiar la configuración y leer registros
  • 🪶 Nativo y ligero: SwiftUI, Liquid Glass, basado en eventos (fácil con la batería), sin Electron, sin telemetría
  • 🆓 Gratuito y de código abierto (MIT)

Cómo se compara con Android Studio, scrcpy y otras herramientas: docs/COMPARISON.md.

Instalación

brew install --cask ateymoori/tap/oh-my-android

O descarga el zip desde la última versión, descomprímelo y mueve Oh My Android.app a Aplicaciones. La aplicación está firmada y notarizada por Apple.

Actualizaciones: cuando hay una nueva versión, aparece un punto en el icono de la barra de menú. Haz clic en Actualizar a … en el menú, lee las novedades e instala con un clic. La aplicación nunca se actualiza sin preguntar. Comprueba una vez al día; desactívalo en Configuración → Actualizaciones. brew upgrade --cask oh-my-android también funciona.

Requisitos: macOS 26 Tahoe o posterior, Apple silicon y el SDK de Android de Android Studio (o brew install --cask android-commandlinetools). La aplicación encuentra el SDK por sí misma. Si el tuyo está en una carpeta inusual, selecciónalo en Configuración → SDK de Android.

Úsalo desde Claude Code, Codex o Cursor

brew install --cask ateymoori/tap/oh-my-android

claude mcp add --scope user oh-my-android -- ohmyandroid-mcp   # Claude Code
codex mcp add oh-my-android -- ohmyandroid-mcp                 # Codex CLI
gemini mcp add --scope user oh-my-android ohmyandroid-mcp      # Gemini CLI

Para Cursor y VS Code, usa los botones de instalación en Agentes de IA (MCP). Luego inicia un emulador y pídele a tu agente: "Toma una captura de pantalla del emulador y comprueba esta pantalla en modo oscuro."

Características

Lo que obtienes
🎨 AparienciaModo oscuro · Tamaño de fuente (0,85× → 2×) · Tamaño de pantalla · Idioma y configuración regional, incl. RTL y pseudo-locales · Rotar
📦 Tu aplicación (lo que esté en pantalla)Reiniciar · Borrar datos · Abrir enlace profundo · Instalar APK (o arrástralo al panel) · Información de la aplicación · Restablecer permisos · Forzar detención · Desinstalar
📸 CapturaCaptura de pantalla guardada y copiada al portapapeles · Grabación de pantalla con audio · Ajustes preestablecidos de calidad
🌐 RedEmular velocidad y latencia de LTE, HSDPA, 3G, EDGE, GPRS o GSM · Modo avión · Wi‑Fi · Datos móviles
📐 Diseño y rendimientoInspector de diseño · Mostrar límites de diseño · Sobredibujado de GPU · Barras de perfil de GPU · Mostrar toques · Ubicación del puntero · Animaciones desactivadas (para Espresso / Maestro) · Opciones de desarrollador
♿ AccesibilidadTalkBack activado/desactivado · Texto en negrita · Invertir colores · Auditoría de orden de TalkBack
🧭 Navegación y entradaAtrás · Inicio · Recientes · Escribir texto en el campo enfocado · Ocultar teclado
🛰️ Simular (emulador)Ubicación GPS: ajustes preestablecidos de ciudad o latitud/longitud · Nivel de batería · Carga · Huella dactilar · Llamada entrante · SMS entrante
💾 Instantáneas (emulador)Guarda un estado limpio y restáuralo en segundos

Las acciones destructivas (Borrar datos, Desinstalar, Restablecer permisos) preguntan antes de ejecutarse.

No más comandos adb

Cada icono reemplaza un comando que de otro modo escribirías o buscarías:

TareaLa forma adbOh My Android
Modo oscuro en el emuladoradb shell cmd uimode night yes🌙 un clic
Tamaño de fuente más grandeadb shell settings put system font_scale 1.3Aa − / +
Cambiar el idioma del dispositivoadb shell cmd locale set-device-locale sv-SE🌐 elige de un menú
Probar el diseño RTLadb shell cmd locale set-device-locale ar-EG🌐 "العربية (RTL)"
Red lenta (3G / EDGE)adb emu network speed edge + adb emu network delay edgeelige un perfil
Simular ubicación GPSadb emu geo fix 18.0686 59.3293elige una ciudad
Desactivar animaciones para pruebas de UI3 × adb shell settings put global …_scale 0un clic
Mostrar límites de diseñoadb shell setprop debug.layout true + una llamada de actualización del sistemaun clic
Borrar datos de la aplicaciónencuentra el paquete, luego adb shell pm clear <package>🗑 un clic
Tomar una captura de pantallaadb exec-out screencap -p > shot.png📷 guardada y copiada
Activar TalkBackadb shell settings put secure enabled_accessibility_services …un clic
Abrir un enlace profundoadb shell am start -a android.intent.action.VIEW -d "myapp://…"pegar y abrir

Inspector de diseño

Congela la pantalla y mídela como en Figma. Funciona con Jetpack Compose y Vistas clásicas.

Layout Inspector: hover views to see their size in dp and the distances between them

  • Pasa el cursor sobre cualquier elemento para ver su tamaño en dp. Haz clic en uno, pasa el cursor sobre otro y ve la distancia entre ellos (espacios entre hermanos, rellenos dentro de un padre).
  • Cuadrícula de 8 dp, selector de color (hex, ⇧⌘C para copiar) y un tamaño de texto estimado en sp.
  • Superposición de diseño: suelta una exportación PNG de Figma en la ventana, elige 1× / 2× / 3× o Ajustar ancho, establece la opacidad o usa la combinación Diferencia, y muévela con las teclas de flecha. Compara diseño y compilación píxel a píxel.

Auditoría de accesibilidad

Presiona ⇧⌘A en el Inspector de diseño. Cada parada del lector de pantalla recibe un número en orden aproximado de TalkBack, con lo que TalkBack anuncia y una lista de problemas: botones sin etiqueta, imágenes sin descripción de contenido y objetivos táctiles más pequeños que 48 × 48 dp.

Inspector de datos

Explora las SharedPreferences (clave, tipo, valor) y las bases de datos SQLite (tablas, primeras 500 filas) de cualquier aplicación depurable, con búsqueda. Usa adb shell run-as, el mismo acceso que usa Android Studio, por lo que las compilaciones de lanzamiento permanecen cerradas. Es de solo lectura: nada cambia en el dispositivo.

Agentes de IA (MCP)

Oh My Android incluye un servidor MCP, para que tu agente de codificación con IA pueda ver y controlar el emulador: captura de pantalla, leer el árbol de UI en dp, tocar y escribir, cambiar a modo oscuro o RTL, leer logcat y la base de datos de la aplicación. El agente puede crear una pantalla, ejecutarla, ver el resultado y corregirlo por sí mismo.

AI Agents settings: Off, Read only or Full control, and the setup command for each agent

Add Oh My Android MCP server to Cursor Install Oh My Android MCP server in VS Code

Los botones usan la ruta de Homebrew /opt/homebrew/bin/ohmyandroid-mcp. Con la instalación del zip, usa la configuración de la barra de menú a continuación.

Configuración en un paso: icono de la barra de menú → Agentes de IA → Configurar…, elige tu agente, haz clic en Copiar (o Agregar a Cursor / Agregar a VS Code). O manualmente:

claude mcp add --scope user oh-my-android -- ohmyandroid-mcp   # Claude Code
codex mcp add oh-my-android -- ohmyandroid-mcp                 # Codex CLI
{ "mcpServers": { "oh-my-android": { "command": "/Applications/Oh My Android.app/Contents/MacOS/ohmyandroid-mcp" } } }

El JSON funciona en Cursor, Claude Desktop, Windsurf, Gemini CLI y otros agentes (VS Code usa "servers"). Homebrew coloca ohmyandroid-mcp en tu PATH. Con la instalación del zip, usa la ruta completa anterior.

Otras formas de agregarlo:

  • Complemento de Claude Code: /plugin marketplace add ateymoori/oh-my-android, luego /plugin install oh-my-android@oh-my-android
  • Extensión de Claude Desktop: abre oh-my-android-<version>.mcpb desde la última versión
  • Registro MCP: listado como io.github.ateymoori/oh-my-android

Tú mantienes el control: icono de la barra de menú → Agentes de IA → Desactivado, Solo lectura o Control total. El servidor lo comprueba en cada llamada, por lo que un cambio se aplica de inmediato. Las herramientas que pueden perder datos están marcadas como destructivas, para que tu agente te pregunte primero.

GrupoHerramientas
👀 Verscreenshot (escalado a 1 px = 1 dp) · get_ui (árbol de UI compacto con referencias) · accessibility_audit
👆 Actuartap (por referencia, texto o x,y) · swipe · type_text · press_key
📱 Dispositivolist_devices · get_device_state · set_device_settings: modo oscuro, escala de fuente, tamaño de pantalla, configuración regional / RTL, orientación, TalkBack, animaciones, Wi‑Fi, modo avión, velocidad de red, GPS, batería
📦 Aplicacioneslist_apps · open_app (paquete o enlace profundo, informa el tiempo de inicio en frío) · manage_app · install_apk · logcat
🗄️ Datosread_preferences · query_database (SQL de solo lectura en una copia)
🧪 Emuladoremulator_action: huella dactilar, llamada entrante, SMS, guardar / cargar instantánea

Indicaciones listas para usar: accessibility_review, ui_matrix (modo oscuro, fuentes grandes, RTL, pseudo-locales) y debug_crash.

Prueba a preguntarle a tu agente:

  • "Abre la aplicación, ve a Configuración y compruébala en modo oscuro, escala de fuente 2 y árabe. Arregla lo que se rompa."
  • "La aplicación falla cuando toco Guardar. Reprodúcelo, lee el fallo y arréglalo."
  • "Audita la pantalla de inicio de sesión para TalkBack y corrige los problemas en el código."

Diseñado para modelos: cada posición está en dp, como tu código de diseño. La salida es texto compacto: un árbol de UI es aproximadamente 10× más pequeño que el XML de uiautomator sin procesar, y las 18 definiciones de herramientas ocupan unos 3k tokens. El servidor admite MCP 2026-07-28 y las versiones anteriores (2024-11-05 a 2025-11-25) a través de stdio, no tiene dependencias y no necesita red.

Privacidad y seguridad

  • 🔒 Sin analíticas, sin telemetría, sin cuenta. La única solicitud de red propia es la comprobación de actualizaciones: una vez al día lee un pequeño feed de los lanzamientos de GitHub de este repositorio. No envía nada sobre ti ni sobre tus dispositivos. Desactívalo en Ajustes → Actualizaciones.
  • Las actualizaciones (Sparkle) se instalan solo cuando tú eliges, y solo si están firmadas con la clave EdDSA de este proyecto y el mismo Developer ID.
  • Solo se comunica con el adb de tu propio Android SDK. El texto que escribes se cita para shell antes de llegar al dispositivo.
  • Las copias de la base de datos del Inspector de Datos se eliminan al recargar y al salir de la aplicación.
  • El servidor MCP se ejecuta solo cuando tu agente de IA lo inicia, y solo con el acceso que tú permites. Lo que lee (pantalla, interfaz, registros, datos de aplicaciones) va a tu agente, y de ahí al proveedor de modelos del agente.
  • Firmado con un Developer ID, runtime reforzado, notarizado por Apple.

¿Encontraste una vulnerabilidad? Consulta SECURITY.md.

Solución de problemas

  • adb no encontrado: elige tu SDK en Ajustes → Android SDK, o establece ANDROID_HOME.
  • El agente dice que no hay dispositivo: inicia un emulador o conecta un teléfono, luego pide al agente que ejecute list_devices.
  • El agente no puede iniciar ohmyandroid-mcp (instalación zip): solo Homebrew lo coloca en tu PATH. Usa la ruta completa /Applications/Oh My Android.app/Contents/MacOS/ohmyandroid-mcp.
  • Homebrew dice que el tap no es de confianza: Homebrew 6 y versiones posteriores te piden que confíes en taps de terceros. El brew install --cask ateymoori/tap/oh-my-android completo confía solo en esta cask. Para nombres cortos, ejecuta brew trust --cask ateymoori/tap/oh-my-android primero.
  • El agente obtiene "Acceso desactivado": icono de la barra de menú → Agentes de IA → Solo lectura o Control total.

Preguntas frecuentes

¿Oh My Android es gratuito?

Sí. Es gratuito y de código abierto bajo la licencia MIT.

¿Reemplaza al Emulador de Android o a Android Studio?

No. Es un complemento. Controla el emulador de Google y tus teléfonos a través del Android SDK que ya tienes. No incluye ningún emulador ni SDK.

¿Funciona con un teléfono Android real?

Sí, por USB o Wi‑Fi adb. Solo los bloques exclusivos del emulador (GPS, batería, llamadas, SMS, instantáneas, velocidad de red, grabación de pantalla) necesitan un emulador.

¿Funciona con Jetpack Compose?

Sí. El Inspector de diseño y la auditoría de accesibilidad leen el árbol de semántica de Compose a través de uiautomator, igual que para las Vistas.

¿Qué agentes de IA funcionan con él?

Cualquier agente que admita MCP sobre stdio: Claude Code, Claude Desktop, Codex CLI, Cursor, VS Code (GitHub Copilot), Windsurf, Gemini CLI, JetBrains AI, Zed y más. La aplicación no tiene que estar abierta; el agente inicia el servidor cuando lo necesita.

¿Cómo activo el modo oscuro en el Emulador de Android?

Haz clic en el icono 🌙 del panel. La forma con adb es adb shell cmd uimode night yes (y no para desactivarlo).

¿Cómo pruebo diseños RTL en el Emulador de Android?

Elige "العربية (RTL)" u otro idioma RTL desde el menú 🌐, o un pseudo-locale (ar-XB, en-XA) para encontrar cadenas codificadas y errores de espejado. La forma con adb es adb shell cmd locale set-device-locale ar-EG.

¿Cómo simulo una red lenta en el Emulador de Android?

Elige un perfil (LTE, HSDPA, 3G, EDGE, GPRS, GSM) desde el menú de red. El panel establece tanto la velocidad como la latencia, igual que adb emu network speed edge y adb emu network delay edge.

¿Hay un servidor MCP de Android para Claude Code, Codex o Cursor?

Sí. ohmyandroid-mcp viene incluido dentro de la aplicación. Tu agente puede tomar capturas de pantalla en dp, leer el árbol de interfaz, tocar, escribir, cambiar el modo oscuro, el tamaño de fuente o RTL, y leer logcat. Consulta Agentes de IA (MCP).

¿Hay un paquete npx o uvx?

No. El servidor es un único binario nativo sin runtime; Homebrew coloca ohmyandroid-mcp en tu PATH.

¿Windows o Linux?

Ahora no. Es una aplicación nativa de macOS construida con SwiftUI.

¿Por qué no está en la Mac App Store?

Las aplicaciones de la Mac App Store deben ejecutarse en el App Sandbox, y una aplicación en sandbox no puede iniciar adb. Homebrew y los lanzamientos de GitHub están firmados y notarizados por Apple en su lugar.

¿Por qué macOS 26 o posterior?

El panel usa Liquid Glass y otras APIs que son nuevas en macOS 26 Tahoe.

Compilar desde el código fuente

brew install xcodegen
git clone https://github.com/ateymoori/oh-my-android.git && cd oh-my-android
xcodegen generate
open OhMyAndroid.xcodeproj

Necesita Xcode 26. Las compilaciones locales están firmadas ad-hoc, por lo que no necesitas una cuenta de desarrollador de Apple.

Arquitectura
Sources/
  App/        entry point, AppDelegate (host actions), Settings, assets
  Core/       no UI, no feature knowledge
    Shell/    ShellRunning: non-blocking Process runner with a watchdog timeout
    Android/  AndroidSDK, ADBClient, DeviceTracker (adb track-devices), UI hierarchy, app data
    SQLite/, Imaging/
  Features/   one small type per capability, registered in FeatureCatalog (Foundation only)
  MCP/        ohmyandroid-mcp: stdio MCP server built on Core and Features, shipped inside the app
  State/      AppModel (composition root), DeviceStore, FeatureStore, inspector stores
  Windows/    FloatingPanel, emulator window docking, tool windows
  UI/         SwiftUI; FeatureCell renders any feature from its protocol

Las dependencias apuntan en una dirección: UI → State → Features → Core. Las funciones se comunican con el dispositivo a través del protocolo ADBClient y con el Mac a través de HostActions (selector de archivos, portapapeles, Finder), por lo que cada una es un pequeño tipo de valor. Modo de lenguaje Swift 6, concurrencia estricta, cero advertencias.

ProtocoloControlEjemplo
ToggleFeatureicono de encendido/apagadoModo oscuro, TalkBack, Wi‑Fi
BatchReadable (complemento)lectura de estado en un único viaje de ida y vuelta de adb shell compartidocada función de settings / getprop
StepperFeaturepopover con − / +Tamaño de fuente, Tamaño de pantalla
ChoiceFeaturemenúIdioma, Velocidad de red, Batería
ActionFeatureun toqueCaptura de pantalla, Rotar, Forzar detención
TextActionFeaturepopover con un campo de textoEnlace profundo, Escribir texto, SMS

Energía: nada sondea. Los cambios del dispositivo provienen del flujo track-devices de adb. Los valores de las funciones se leen en una única llamada por lotes de adb shell cuando seleccionas un dispositivo, después de una acción y cuando el puntero vuelve al panel. El acoplamiento usa un temporizador de 1 Hz solo mientras un emulador se ejecuta y el panel está visible.

Los iconos de la aplicación y de la barra de menú se dibujan en código: Scripts/make-icon.swift.

Hoja de ruta

  • Modo comparación: dos dispositivos lado a lado, entrada reflejada, diferencia de píxeles
  • La pantalla del emulador integrada en la ventana del panel
  • Soporte de DataStore (.preferences_pb) en el Inspector de Datos
  • MCP: iniciar y detener emuladores, grabar la pantalla

¿Tienes una idea? Abre una solicitud de función. Añadir una función es una pequeña estructura Swift: consulta CONTRIBUTING.md.


⭐ Si Oh My Android te ahorra tiempo, por favor dale una estrella a este repositorio.
Las estrellas ayudan a otros desarrolladores de Android a encontrarlo y muestran que vale la pena construir nuevas funciones.
Para recibir una notificación de cada nueva versión, haz clic en Watch → Custom → Releases.

Star Oh My Android on GitHub

Licencia

MIT © 2026 Royan AB.

Android es una marca comercial de Google LLC. Oh My Android no está afiliado ni respaldado por Google. El robot de Android se reproduce o modifica a partir de un trabajo creado y compartido por Google y se usa según los términos descritos en la Licencia de Atribución Creative Commons 3.0.


Hecho en Suecia por 🇸🇪 Royan AB
Sitio web de Oh My Android · royan.se