Skip to main content
Glama
adb-sms
by zalazp

adb-sms MCP

Lee los códigos de verificación por SMS de Android a través de ADB, para que Cursor Agent, junto con chrome-devtools, complete el inicio de sesión por SMS en la Web.

Principio de diseño: el número de teléfono lo configura el usuario en devices.json; adb solo se encarga de identificar el serial del dispositivo + leer el OTP de los SMS.

Cómo funciona

USB 连接手机(adb devices → serial)
        │
        ├─ devices.json[serial].phone_numbers  →  Web 填手机号
        │
        └─ adb 读短信 inbox                    →  adb_wait_for_otp 拿验证码

Related MCP server: ScoutlyMCP

Estructura del proyecto

mcp-adb-sms/
├── server.py              # MCP 服务入口
├── adb_client.py          # ADB 设备 / 短信读取
├── sms_parser.py          # 短信与 OTP 解析
├── test_local.py          # 本地自检(不启动 MCP)
├── requirements.txt
├── devices.json.example   # 手机号配置模板(提交到 git)
├── devices.json           # 本地配置(git 忽略,需自行创建)
└── README.md

Requisitos previos

  1. Activa la depuración USB en el teléfono Android y autoriza la computadora

  2. adb devices muestra device (no unauthorized)

  3. Python 3.10+ (se recomienda 3.12)

  4. Android platform-tools (incluye adb)

Instalación

git clone https://github.com/zalazp/mcp-adb-sms.git
cd mcp-adb-sms
py -3.12 -m pip install -r requirements.txt

Configurar el número de teléfono (obligatorio)

El número de teléfono no lo lee adb, escríbelo tú mismo en devices.json:

copy devices.json.example devices.json
  1. Ejecuta adb devices, anota el serial (por ejemplo, 10AD410LNF000PX)

  2. Usa el serial como clave e introduce todos los números de teléfono de ese dispositivo

{
  "10AD410LNF000PX": {
    "phone_numbers": [
      "18317840243",
      "19139582095"
    ]
  }
}

Configuración de Cursor

Edita %USERPROFILE%\.cursor\mcp.json:

{
  "mcpServers": {
    "adb-sms": {
      "command": "py",
      "args": [
        "-3.12",
        "E:\\path\\to\\mcp-adb-sms\\server.py"
      ],
      "env": {
        "ADB_PATH": "D:\\RJAZ\\Sdk\\platform-tools\\adb.exe"
      }
    }
  }
}

Campo

Descripción

Ruta en args

Cámbiala a la ruta absoluta de server.py en el directorio clonado

ADB_PATH

Ruta absoluta de adb.exe en tu máquina; si ya está en PATH, escribe "adb"

Después de guardar, reinicia Cursor; adb-sms debería ponerse verde en el panel de MCP.

Autocomprobación local

cd mcp-adb-sms
$env:ADB_PATH="D:\RJAZ\Sdk\platform-tools\adb.exe"
py -3.12 test_local.py

Ejemplo de salida normal:

{
  "adb_exists": true,
  "devices": [{ "serial": "10AD410LNF000PX", "state": "device" }],
  "sms_readable": true,
  "sim_numbers": [
    { "number": "13800138000", "available": true },
    { "number": "13900139000", "available": true }
  ],
  "device_profile": { "source": "devices.json" }
}

Si recommendations indica que falta configuración, crea devices.json como se indicó anteriormente.

Herramientas MCP

Herramienta

Descripción

adb_health_check

Diagnostica adb, la legibilidad de los SMS y si devices.json está configurado

adb_list_devices

Lista los dispositivos ADB conectados

adb_get_sim_numbers

Lee los números de teléfono del serial actual desde devices.json

adb_read_recent_sms

Lee los últimos N SMS

adb_wait_for_otp

Tras hacer clic en "enviar código" en la Web, espera sondeando un nuevo OTP

adb_grant_sms_permission

Intenta autorizar a shell para leer SMS en Android 11+

adb_shell

adb shell restringido (comandos de lista blanca)

Flujo típico del Agent (inicio de sesión por SMS)

1. adb_health_check()
2. adb_get_sim_numbers()              ← 从 devices.json 取手机号
3. chrome-devtools: 打开登录页、填号、勾选协议
4. chrome-devtools: 滑块验证码(失败则人工完成)
5. chrome-devtools: 点击「发送验证码」
6. adb_wait_for_otp(timeout=90, sender_filter="Midea|美的")
7. chrome-devtools: 填入验证码并登录

Cuando no se pueden leer los SMS

adb shell appops set com.android.shell READ_SMS allow

O llama a adb_grant_sms_permission en el Agent y luego ejecuta adb_health_check.

Si aún falla, MCP intentará leer los SMS de la barra de notificaciones mediante dumpsys notification como alternativa degradada (menor precisión).

Notas de seguridad

  • Solo lee los SMS de dispositivos locales conectados por USB

  • No persiste el contenido de los SMS en el disco

  • devices.json contiene números de teléfono y ya está en .gitignore; no lo subas a repositorios públicos

  • adb_shell solo permite comandos de lista blanca como content / dumpsys / getprop

  • Solo para dispositivos propios o escenarios de prueba autorizados

License

MIT

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    Enables forensic investigators to acquire data from Android devices via ADB, including device backup, artifact collection, and secure command execution.
    10
    5
    -
  • A
    license
    A
    quality
    D
    maintenance
    Enables an agent to inspect and interact with Android emulators or physical devices via ADB, capturing UI snapshots, tapping nodes, typing text, and reading app logs.
    10
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to use a real Android phone with a SIM to retrieve phone numbers, receive SMS verification codes, and manage SMS messages.
    -