mcpField
A
Android Mcp

Android Mcp

本地服务
github.com/Steph-uxAI 与智能体025 周前更新

关于 Android Mcp

Android MCP 可让 AI Agent 控制 Android 设备。它通过 ADB 提供设备管理、屏幕检查、界面交互、应用和文件操作及自动化,并可选配 PC 查看器。

主要功能

  1. 01管理 USB、WiFi 和模拟器设备
  2. 02捕获屏幕并提取可见文字
  3. 03点击、输入并操作界面元素
  4. 04管理应用、文件和系统设置
  5. 05批量运行操作并录制宏
  6. 06从 PC 查看和控制设备

适用场景

  1. 01自动执行 Android 应用交互
  2. 02检查屏幕内容和界面状态
  3. 03在 PC 与手机间传输文件
  4. 04重放常用设备操作序列

MCP 相关

该服务通过 stdio 上的 MCP 协议提供七类 Android 控制工具,供 AI Agent 操作已连接的设备。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Android MCP

通过任意 AI Agent 完全控制 Android — Claude、OpenCode、Windsurf、Cursor…… 7 个分类 MCP 工具 · 90fps 实时查看器 · WiFi ADB · 无需安装应用


快速演示

android_screen(action="screenshot")                          # PNG capture
android_screen(action="ocr")                                 # visible text
android_interact(action="tap", params={"x": 540, "y": 960}) # tap
android_interact(action="find", params={"text": "Send"})     # find + tap
android_system(action="battery")                             # battery info
android_screen(action="viewer")                              # 90fps interactive window on PC

架构

AI Agent (Claude / OpenCode / Windsurf / Cursor…)
        ↓  MCP Protocol (stdio)
    server.py          ← 7 categorical tools
        ↓
    device_manager.py  ← device selection, multi-device
        ↓
    backends/
        ├── adb_backend.py       ← PRIMARY  : uiautomator2 + direct ADB
        └── companion_backend.py ← FALLBACK : Flutter app WebSocket
        ↓
    N Android phones / emulators

ADB 后端(主要) — 适用于任何已启用开发者模式的设备。 无需在手机上安装任何内容。使用 uiautomator2 + ADB 命令。

配套应用后端(备用) — 网络上无法使用 ADB 时,可选用 Flutter 应用。


要求

  • Python 3.10+
  • ADB 已加入 PATH(winget install Google.PlatformTools)
  • Android:开发者模式 + USB 调试(或 WiFi 调试)

安装

git clone https://github.com/Steph-ux/android-mcp
cd android-mcp
pip install -r requirements.txt

# Initialize uiautomator2 (once per device)
python -m uiautomator2 init
90fps 实时查看器(可选)
winget install Genymobile.scrcpy
python viewer.py

MCP 配置

# Generate the correct JSON for your AI client
python mcp_config.py --client claude     # Claude Desktop
python mcp_config.py --client opencode  # OpenCode
python mcp_config.py --client windsurf  # Windsurf
python mcp_config.py --client cursor    # Cursor
python mcp_config.py --write            # write directly to config files

Claude Desktop 配置示例(claude_desktop_config.json):

{
  "mcpServers": {
    "android-mcp": {
      "command": "C:/Python312/python.exe",
      "args": ["D:/path/to/android-mcp/server.py"],
      "type": "stdio"
    }
  }
}

无需 USB 的 WiFi 连接(Android 11+)

# On the phone: Settings → Developer options → Wireless debugging → Pair device
adb pair 192.168.1.42:38765    # enter the code shown on the phone
adb connect 192.168.1.42:5555

完整指南 → WIFI_PAIRING.md


7 个 MCP 工具

调用格式:android_xxx(action="...", params={...}, device_id="serial") device_id 始终为可选参数(使用当前选定的设备)。


android_device — 设备管理
操作参数说明
list—所有已连接的设备(USB、WiFi、模拟器)
selectserial设置默认设备
connecthost、portWiFi ADB 连接
disconnect—断开当前 WiFi 设备
info—型号、操作系统、分辨率、密度
status—设备是否已连接并就绪?
setup—配置动画、保持唤醒、ATX Agent

android_screen — 截屏与串流
操作参数说明
screenshot—PNG 截图(绕过 FLAG_SECURE)→ 图像
regionx y width height截取指定区域 → 图像
size—{width, height}
is_on—屏幕是否亮起?
wake—唤醒屏幕
start_stream—启动 ADB 串流(约 16fps)
stop_stream—停止串流
live_frame—最新串流帧 → 图像
ocrlang提取可见文字(Tesseract)
find_imagetemplate_b64 threshold模板匹配(OpenCV)
viewerfps bitrate no_control在 PC 上启动 scrcpy 90fps 窗口

android_interact — 触控、键盘与 UI
操作参数说明
tapx y点击
double_tapx y双击
long_pressx y duration_ms长按
swipex1 y1 x2 y2 duration_ms滑动
dragx1 y1 x2 y2 duration_ms拖放
pinchx y scale duration_ms捏合缩放
multi_touchpoints多指手势
typetext输入文字
clear—清除当前活动字段
submittext输入文字 + Enter
keykey系统按键(HOME、BACK、ENTER、VOLUME_UP……)
combokeys按键组合(键码)
hierarchy—完整 UI XML 树(uiautomator2)
findtext partial_match查找元素并点击
waittext timeout partial_match等待元素出现
scrolltext direction max_swipes滚动至指定元素
asserttext partial_match断言文字可见

android_app — 应用
操作参数说明
launchpackage启动应用
closepackage强制停止应用
listinclude_system列出已安装的应用
installapk_path从 PC 安装 APK
uninstallpackage卸载应用
current—前台应用包名
urlurl打开 URL
intentaction uri package extras发送 Android Intent
settingssection打开系统设置(main wifi bluetooth display…)

android_files — 文件
操作参数描述
pushlocal_path remote_path电脑 → 手机
push_b64remote_path dataBase64 → 手机
pullremote_path local_path手机 → 电脑
pull_b64remote_path手机 → Base64
listdirectory列出目录内容

android_system — 系统与网络
操作参数描述
shellcommandADB shell 命令
logslines packageLogcat
battery—电量和充电状态
clipboard_get—读取剪贴板
clipboard_settext写入剪贴板
volumelevel stream设置音量
rotationrotation屏幕旋转(0-3)
wifienabled开启/关闭 WiFi
bluetoothenabled开启/关闭 Bluetooth
mobile_dataenabled开启/关闭移动数据
notifications—活动通知
gpslat lng模拟 GPS 位置
sensorssensor加速度计、陀螺仪、光线等
wifi_list—可用的 WiFi 网络
wifi_connectssid password连接 WiFi
contactssearch limit读取联系人
smsto message发送 SMS(需要在手机上确认)

android_automation — 批量操作与宏
操作参数描述
batchactions stop_on_error一次调用运行 N 个操作
macro_startname开始录制宏
macro_recordaction …params向宏添加操作
macro_stop—保存宏
macro_list—列出已保存的宏
macro_replayname delay_ms重放宏
macro_deletename删除宏

实时查看器 — scrcpy 90fps

python viewer.py                  # auto-detect device, 90fps, interactive
python viewer.py --fps 60         # 60fps
python viewer.py --record         # record to .mp4
python viewer.py --record out.mp4 # named output file
python viewer.py --multi          # one viewer per connected device
python viewer.py --no-control     # read-only mode
控件操作
左键单击点击
拖动滑动
右键单击返回
滚动滚动
Alt+H主页
Alt+S截图 → 电脑剪贴板
Alt+F全屏
Alt+R旋转

测试

# Unit tests (no device required)
pytest tests/test_server_unit.py -v      # 94 tests

# Integration tests (ADB device required)
pytest tests/test_integration.py -v

项目结构

android-mcp/
├── server.py              # MCP server — 7 tools
├── viewer.py              # scrcpy 90fps interactive viewer
├── mcp_config.py          # JSON config generator
├── device_manager.py      # Multi-device management
├── relay.py               # ⚠️ LEGACY — companion fallback only
├── requirements.txt
├── pyproject.toml
├── WIFI_PAIRING.md
├── backends/
│   ├── adb_backend.py     # Primary backend (uiautomator2 + ADB)
│   └── companion_backend.py  # Fallback backend (Flutter app)
├── examples/
│   ├── agent_loop.py      # Autonomous automation loop
│   └── whatsapp_auto.py   # WhatsApp automation example
└── tests/
    ├── conftest.py
    ├── test_server_unit.py   # 94 unit tests
    └── test_integration.py   # Real device tests

示例

# WhatsApp — send a message
await android_app("launch", {"package": "com.whatsapp"})
await android_interact("find", {"text": "Alice"})
await android_interact("type", {"text": "Hello!"})
await android_interact("key",  {"key": "ENTER"})

# Batch in a single call
await android_automation("batch", {"actions": [
    {"action": "key",  "key": "HOME"},
    {"action": "tap",  "x": 540, "y": 200},
    {"action": "type", "text": "search query"},
    {"action": "key",  "key": "ENTER"},
]})

# Macro: record + replay
await android_automation("macro_start",  {"name": "login"})
await android_automation("macro_record", {"action": "tap",  "x": 540, "y": 400})
await android_automation("macro_record", {"action": "type", "text": "password"})
await android_automation("macro_stop")
await android_automation("macro_replay", {"name": "login"})

完整用例请参见 examples/whatsapp_auto.py 和 examples/agent_loop.py。


许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。