Skip to main content
Glama
zalazp
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: Android MCP Server

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

F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    A
    quality
    C
    maintenance
    Enables AI agents to interact with Android devices through UI manipulation, screen capture, touch gestures, text input, and app management via ADB. Provides comprehensive mobile automation capabilities including element detection, navigation, and application control for Android device testing and interaction.
    9
    5
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables control of Android devices through ADB using natural language commands. Supports browser automation, SMS sending, device information retrieval, settings control, and common device actions like screenshots and button presses.
    3

View all related MCP servers

Related MCP Connectors

  • Remote MCP for Android CLI agent build gate, structured receipts, audit logs, and reviewer-ready evi

  • Phone, SMS & email for AI agents — one remote MCP endpoint, OAuth login, zero install.

  • Control plane for agent auth walls. Connector 0 handles SMS OTP with US test numbers.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/zalazp/mcp-adb-sms'

If you have feedback or need assistance with the MCP directory API, please join our Discord server