Skip to main content
Glama
zalazp
by zalazp

adb-sms MCP

Чтение SMS-кодов подтверждения Android через ADB для выполнения веб-входа по SMS в Cursor Agent совместно с chrome-devtools.

Принцип проектирования: номера телефонов настраиваются пользователем в devices.json; adb отвечает только за определение serial устройства и чтение OTP из SMS.

Принцип работы

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

Related MCP server: Android MCP Server

Структура проекта

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

Предварительные требования

  1. На Android-телефоне включена отладка по USB и выдан доступ компьютеру

  2. adb devices показывает device (не unauthorized)

  3. Python 3.10+ (рекомендуется 3.12)

  4. Android platform-tools (включая adb)

Установка

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

Настройка номеров телефонов (обязательно)

Номера телефонов не считываются adb — запишите их самостоятельно в devices.json:

copy devices.json.example devices.json
  1. Выполните adb devices и запишите serial (например, 10AD410LNF000PX)

  2. Используя serial в качестве ключа, укажите все номера телефонов этого устройства

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

Настройка Cursor

Отредактируйте %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"
      }
    }
  }
}

Поле

Описание

путь в args

укажите абсолютный путь к server.py в клонированном каталоге

ADB_PATH

абсолютный путь к adb.exe на этой машине; если он уже в PATH, можно указать "adb"

После сохранения перезапустите Cursor — в панели MCP adb-sms должен стать зелёным.

Локальная самопроверка

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

Пример корректного вывода:

{
  "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" }
}

Если в recommendations указано, что отсутствует конфигурация, создайте devices.json, как описано выше.

Инструменты MCP

Инструмент

Описание

adb_health_check

диагностика adb, читаемости SMS и наличия конфигурации devices.json

adb_list_devices

список подключённых ADB-устройств

adb_get_sim_numbers

чтение номеров телефонов текущего serial из devices.json

adb_read_recent_sms

чтение последних N SMS

adb_wait_for_otp

опрос и ожидание нового OTP после отправки кода на веб-странице

adb_grant_sms_permission

попытка выдать shell разрешение на чтение SMS на Android 11+

adb_shell

ограниченный adb shell (команды из белого списка)

Типовой процесс Agent (вход по 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: 填入验证码并登录

Если SMS не читаются

adb shell appops set com.android.shell READ_SMS allow

Или вызовите в Agent adb_grant_sms_permission, а затем выполните adb_health_check.

Если это по-прежнему не помогает, MCP попытается прочитать SMS из уведомлений через dumpsys notification (с меньшей точностью).

Примечания по безопасности

  • Читает SMS только с локального устройства, подключённого по USB

  • Не сохраняет содержимое SMS на диск

  • devices.json содержит номера телефонов и уже в .gitignoreне публикуйте его в открытых репозиториях

  • adb_shell разрешает только команды из белого списка: content / dumpsys / getprop и т.п.

  • Только для собственных устройств или сценариев тестирования с разрешения владельца

Лицензия

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