Phone
Controla tu teléfono Android usando comandos ADB. Requiere herramientas ADB y un dispositivo Android con depuración USB habilitada.
Documentación
📱 Complemento MCP de Phone
🌟 Un potente complemento MCP que te permite controlar tu teléfono Android con facilidad mediante comandos ADB.
Ejemplo
-
Basado en el clima de hoy según el navegador, selecciona y reproduce automáticamente música de netease, sin necesidad de confirmación
-
Llama a Hao desde los contactos. Si no contesta, envía un mensaje de texto diciéndole que venga a la Sala de Reuniones 101.
⚡ Inicio Rápido
📥 Instalación
# Run directly with uvx (recommended, part of uv, no separate installation needed)
uvx phone-mcp
# Or install with uv
uv pip install phone-mcp
# Or install with pip
pip install phone-mcp
🔧 Configuración
Configuración del Asistente de IA
Configúralo en la configuración de tu asistente de IA (Cursor, Trae, Claude, etc.):
{
"mcpServers": {
"phone-mcp": {
"command": "uvx",
"args": [
"phone-mcp"
]
}
}
}
Alternativamente, si lo instalaste con pip:
{
"mcpServers": {
"phone-mcp": {
"command": "/usr/local/bin/python",
"args": [
"-m",
"phone_mcp"
]
}
}
}
Importante: La ruta
/usr/local/bin/pythonen la configuración anterior es la ruta al intérprete de Python. Debes modificarla según la ubicación real de instalación de Python en tu sistema. Así puedes encontrar la ruta de Python en diferentes sistemas operativos:Linux/macOS: Ejecuta el siguiente comando en la terminal:
which python3o
which pythonWindows: Ejecuta en el Símbolo del sistema (CMD):
where pythonO en PowerShell:
(Get-Command python).PathAsegúrate de reemplazar
/usr/local/bin/pythonen la configuración con la ruta completa, por ejemplo en Windows podría serC:\Python39\python.exe
Nota: Para Cursor, coloca esta configuración en
~/.cursor/mcp.json
Uso:
- Usa comandos directamente en la conversación con Claude, por ejemplo:
Please call contact hao
⚠️ Antes de usar, asegúrate de:
- ADB esté correctamente instalado y configurado
- La depuración USB esté habilitada en tu dispositivo Android
- El dispositivo esté conectado a la computadora mediante USB
🎯 Características Principales
- 📞 Funciones de llamada: Hacer llamadas, finalizar llamadas, recibir llamadas entrantes
- 💬 Mensajería: Enviar y recibir SMS, obtener mensajes sin procesar
- 👥 Contactos: Acceder a los contactos del teléfono, crear nuevos contactos con interacción automatizada de la interfaz de usuario
- 📸 Multimedia: Capturas de pantalla, grabación de pantalla, control de medios
- 📱 Aplicaciones: Iniciar aplicaciones, iniciar actividades específicas con intents, listar aplicaciones instaladas, finalizar aplicaciones
- 🔧 Sistema: Información de ventanas, accesos directos de aplicaciones
- 🗺️ Mapas: Buscar POIs con números de teléfono
- 🖱️ Interacción con la interfaz: Tocar, deslizar, escribir texto, presionar teclas
- 🔍 Inspección de la interfaz: Encontrar elementos por texto, ID, clase o descripción
- 🤖 Automatización de la interfaz: Esperar elementos, desplazarse para encontrar elementos
- 🧠 Análisis de pantalla: Información estructurada de la pantalla e interacción unificada
- 🌐 Navegador web: Abrir URLs en el navegador predeterminado del dispositivo
- 🔄 Monitoreo de la interfaz: Monitorear cambios en la interfaz y esperar que aparezcan o desaparezcan elementos específicos
🛠️ Requisitos
- Python 3.7+
- Dispositivo Android con depuración USB habilitada
- Herramientas ADB
📋 Comandos Básicos
Dispositivo y Conexión
# Check device connection
phone-cli check
# Get screen size
phone-cli screen-interact find method=clickable
Comunicación
# Make a call
phone-cli call 1234567890
# End current call
phone-cli hangup
# Send SMS
phone-cli send-sms 1234567890 "Hello"
# Get received messages (with pagination)
phone-cli messages --limit 10
# Get sent messages (with pagination)
phone-cli sent-messages --limit 10
# Get contacts (with pagination)
phone-cli contacts --limit 20
# Create a new contact with UI automation
phone-cli create-contact "John Doe" "1234567890"
Multimedia y Aplicaciones
# Take screenshot
phone-cli screenshot
# Record screen
phone-cli record --duration 30
# Launch app (may not work on all devices)
phone-cli app camera
# Alternative app launch method using open_app (if app command doesn't work)
phone-cli open_app camera
# Close app
phone-cli close-app com.android.camera
# List installed apps (basic info, faster)
phone-cli list-apps
# List apps with pagination
phone-cli list-apps --page 1 --page-size 10
# List apps with detailed info (slower)
phone-cli list-apps --detailed
# Launch specific activity (reliable method for all devices)
phone-cli launch com.android.settings/.Settings
# Launch app by package name (may not work on all devices)
phone-cli app com.android.contacts
# Alternative launch by package name (if app command doesn't work)
phone-cli open_app com.android.contacts
# Launch app by package and activity (most reliable method)
phone-cli launch com.android.dialer/com.android.dialer.DialtactsActivity
# Open URL in default browser
phone-cli open-url google.com
Análisis de Pantalla e Interacción
# Analyze current screen with structured information
phone-cli analyze-screen
# Unified interaction interface
phone-cli screen-interact <action> [parameters]
# Tap at coordinates
phone-cli screen-interact tap x=500 y=800
# Tap element by text
phone-cli screen-interact tap element_text="Login"
# Tap element by content description
phone-cli screen-interact tap element_content_desc="Calendar"
# Swipe gesture (scroll down)
phone-cli screen-interact swipe x1=500 y1=1000 x2=500 y2=200 duration=300
# Press key
phone-cli screen-interact key keycode=back
# Input text
phone-cli screen-interact text content="Hello World"
# Find elements
phone-cli screen-interact find method=text value="Login" partial=true
# Wait for element
phone-cli screen-interact wait method=text value="Success" timeout=10
# Scroll to find element
phone-cli screen-interact scroll method=text value="Settings" direction=down max_swipes=5
# Monitor UI for changes
phone-cli monitor-ui --interval 0.5 --duration 30
# Monitor UI until specific text appears
phone-cli monitor-ui --watch-for text_appears --text "Welcome"
# Monitor UI until specific element ID appears
phone-cli monitor-ui --watch-for id_appears --id "login_button"
# Monitor UI until specific element class appears
phone-cli monitor-ui --watch-for class_appears --class-name "android.widget.Button"
# Monitor UI changes with output as raw JSON
phone-cli monitor-ui --raw
Ubicación y Mapas
# Search nearby POIs with phone numbers
phone-cli get-poi 116.480053,39.987005 --keywords restaurant --radius 1000
📚 Uso Avanzado
Inicio de Aplicaciones y Actividades
El complemento proporciona múltiples formas de iniciar aplicaciones y actividades:
-
Por nombre de aplicación (dos métodos):
# Method 1: Using app command (may not work on all devices) phone-cli app camera # Method 2: Using open_app command (alternative if app command fails) phone-cli open_app camera -
Por nombre de paquete (dos métodos):
# Method 1: Using app command (may not work on all devices) phone-cli app com.android.contacts # Method 2: Using open_app command (alternative if app command fails) phone-cli open_app com.android.contacts -
Por paquete y actividad (método más confiable):
# This method works on all devices phone-cli launch com.android.dialer/com.android.dialer.DialtactsActivity
Nota: Si encuentras problemas con los comandos
appoopen_app, usa siempre el comandolaunchcon el nombre completo del componente (paquete/actividad) para la operación más confiable.
Creación de Contactos con Automatización de la Interfaz
El complemento proporciona una forma de crear contactos mediante la interacción con la interfaz:
# Create a new contact with UI automation
phone-cli create-contact "John Doe" "1234567890"
Este comando:
- Abre la aplicación de contactos
- Navega a la interfaz de creación de contactos
- Completa los campos de nombre y número de teléfono
- Guarda el contacto automáticamente
Automatización Basada en Pantalla
La interfaz unificada de interacción con la pantalla permite a los agentes inteligentes:
- Analizar pantallas: Obtener análisis estructurado de elementos de la interfaz y texto
- Tomar decisiones: Basado en patrones de interfaz detectados y acciones disponibles
- Ejecutar interacciones: Mediante un sistema de parámetros consistente
Monitoreo y Automatización de la Interfaz
El complemento proporciona potentes capacidades de monitoreo de la interfaz para detectar cambios:
-
Monitoreo básico de la interfaz:
# Monitor any UI changes with custom interval (seconds) phone-cli monitor-ui --interval 0.5 --duration 30 -
Esperar que aparezcan elementos específicos:
# Wait for text to appear (useful for automated testing) phone-cli monitor-ui --watch-for text_appears --text "Login successful" # Wait for specific ID to appear phone-cli monitor-ui --watch-for id_appears --id "confirmation_dialog" -
Monitorear la desaparición de elementos:
# Wait for text to disappear phone-cli monitor-ui --watch-for text_disappears --text "Loading..." -
Obtener informes detallados de cambios en la interfaz:
# Get raw JSON data with all UI change information phone-cli monitor-ui --raw
Consejo: El monitoreo de la interfaz es especialmente útil para que los scripts de automatización esperen a que se completen las pantallas de carga o confirmen que las acciones han tenido efecto en la interfaz.
📚 Documentación Detallada
Para documentación completa y detalles de configuración, visita nuestro repositorio de GitHub.
🧰 Documentación de Herramientas
API de Interfaz de Pantalla
El complemento proporciona una potente interfaz de pantalla con APIs completas para interactuar con el dispositivo. A continuación se muestran las funciones clave y sus parámetros:
interact_with_screen
async def interact_with_screen(action: str, params: Dict[str, Any] = None) -> str:
"""Execute screen interaction actions"""
- Parámetros:
action: Tipo de acción ("tap", "swipe", "key", "text", "find", "wait", "scroll")params: Diccionario con parámetros específicos para cada tipo de acción
- Devuelve: Cadena JSON con los resultados de la operación
Ejemplos:
# Tap by coordinates
result = await interact_with_screen("tap", {"x": 100, "y": 200})
# Tap by element text
result = await interact_with_screen("tap", {"element_text": "Login"})
# Swipe down
result = await interact_with_screen("swipe", {"x1": 500, "y1": 300, "x2": 500, "y2": 1200, "duration": 300})
# Input text
result = await interact_with_screen("text", {"content": "Hello world"})
# Press back key
result = await interact_with_screen("key", {"keycode": "back"})
# Find element by text
result = await interact_with_screen("find", {"method": "text", "value": "Settings", "partial": True})
# Wait for element to appear
result = await interact_with_screen("wait", {"method": "text", "value": "Success", "timeout": 10, "interval": 0.5})
# Scroll to find element
result = await interact_with_screen("scroll", {"method": "text", "value": "Privacy Policy", "direction": "down", "max_swipes": 8})
analyze_screen
async def analyze_screen(include_screenshot: bool = False, max_elements: int = 50) -> str:
"""Analyze the current screen and provide structured information about UI elements"""
- Parámetros:
include_screenshot: Si se debe incluir la captura de pantalla codificada en base64 en el resultadomax_elements: Número máximo de elementos de la interfaz a procesar
- Devuelve: Cadena JSON con análisis detallado de la pantalla
create_contact
async def create_contact(name: str, phone: str) -> str:
"""Create a new contact with the given name and phone number"""
- Parámetros:
name: El nombre completo del contactophone: El número de teléfono del contacto
- Devuelve: Cadena JSON con el resultado de la operación
- Ubicación: Esta función se encuentra en el módulo 'contacts.py' e implementa la automatización de la interfaz para crear contactos
launch_app_activity
async def launch_app_activity(package_name: str, activity_name: Optional[str] = None) -> str:
"""Launch an app using package name and optionally an activity name"""
- Parámetros:
package_name: El nombre del paquete de la aplicación a iniciaractivity_name: La actividad específica a iniciar (opcional)
- Devuelve: Cadena JSON con el resultado de la operación
- Ubicación: Esta función se encuentra en el módulo 'apps.py'
launch_intent
async def launch_intent(intent_action: str, intent_type: Optional[str] = None, extras: Optional[Dict[str, str]] = None) -> str:
"""Launch an activity using Android intent system"""
- Parámetros:
intent_action: La acción a realizarintent_type: El tipo MIME para el intent (opcional)extras: Datos adicionales para pasar con el intent (opcional)
- Devuelve: Cadena JSON con el resultado de la operación
- Ubicación: Esta función se encuentra en el módulo 'apps.py'
📄 Licencia
Licencia Apache, Versión 2.0
Herramienta de Creación de Contactos
Esta herramienta proporciona una forma sencilla de crear contactos en un dispositivo Android usando ADB.
Requisitos Previos
- Python 3.x
- ADB (Android Debug Bridge) instalado y configurado
- Dispositivo Android conectado y autorizado para ADB
Uso
Uso Básico
Simplemente ejecuta el script:
python create_contact.py
Esto creará un contacto con valores predeterminados:
- Nombre de cuenta: "你的账户名"
- Tipo de cuenta: "com.google"
Uso Avanzado
Puedes proporcionar un nombre de cuenta y tipo personalizados usando una cadena JSON:
python create_contact.py '{"account_name": "your_account", "account_type": "com.google"}'
Salida
El script genera un objeto JSON con:
success: booleano que indica si la operación fue exitosamessage: cualquier salida o mensaje de error del comando
Ejemplo de salida exitosa:
{"success": true, "message": ""}
Manejo de Errores
- Si ADB no está disponible o el dispositivo no está conectado, el script devolverá un error
- La entrada JSON no válida resultará en un mensaje de error
- Cualquier error de comando ADB se capturará y devolverá en el campo de mensaje
Notas
- Asegúrate de que tu dispositivo Android esté conectado y autorizado para uso de ADB
- La pantalla del dispositivo debe estar desbloqueada al ejecutar el comando
- Algunos dispositivos podrían requerir permisos adicionales para modificar contactos
Aplicaciones y Accesos Directos
# Get app shortcuts (with pagination)
phone-cli shortcuts --package "com.example.app"