关于 Mobile Device Mcp
Mobile Device Mcp 是 MCP 服务,让 AI 编码助手检查并操作 Android 设备和 iOS 模拟器。工具涵盖截图、UI 交互、AI 视觉分析、Flutter 组件检查、录屏和测试脚本生成。
主要功能
- 01截图与 UI 树检查
- 02按坐标或描述进行交互
- 03Claude 和 Gemini 视觉分析
- 04Flutter 组件树与源码映射
- 05录屏和测试生成
适用场景
- 01借助助手复现移动 UI 问题
- 02检查 Flutter 组件及其源码位置
- 03将交互录制为测试脚本
- 04在 Android 或 iOS 模拟器上验证应用界面
MCP 相关
MCP 服务向兼容的编码助手提供移动设备工具,助手会将其作为后台进程启动和管理。工具包括设备控制、视觉分析、Flutter 检查和测试生成。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y mobile-device-mcpGOOGLE_API_KEY密钥Google API key for AI visual analysis tools. Get a free key at aistudio.google.com/apikeyMOBILE_MCP_LICENSE_KEY密钥Pro license key to unlock all 49 tools (format: MDMCP-XXXXX-XXXXX-XXXXX-XXXXX). Get Pro at rzp.io/rzp/r4ijQsJYMCP_ADB_PATHCustom path to ADB binary. Auto-detected from PATH if not set.MCP_DEFAULT_DEVICEDevice serial number to use when multiple devices are connected. Auto-detected if only one device is connected.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
mobile-device-mcp
为 AI 编码助手(Claude Code、Cursor、Windsurf)提供查看和操作移动设备能力的 MCP 服务。提供 49 个工具,用于截屏、UI 检查、触控交互、AI 驱动的视觉分析、Flutter 小部件树检查、视频录制和测试生成。
AI 助手能读取你的代码,却看不到你的手机。这个工具解决了这个问题。
为什么选择它?
| 功能 | mobile-device-mcp | mobile-next/mobile-mcp | appium/appium-mcp |
|---|---|---|---|
| 工具总数 | 49 | 20 | ~15 |
| 安装 | npx(30 秒) | npx | 需要 Appium 服务 |
| AI 视觉分析 | 12 个工具(Claude + Gemini) | 无 | 基于视觉的查找 |
| Flutter 小部件树 | 10 个工具(Dart VM Service) | 无 | 无 |
| 智能元素查找 | 4 层(本地搜索 <1ms) | 仅无障碍树 | XPath/选择器 |
| 配套应用(UI 树速度快 23 倍) | 有 | 无 | 无 |
| 视频录制 | 有 | 无 | 无 |
| 测试脚本生成 | TS、Python、JSON | 无 | 仅 Java/TestNG |
| iOS 模拟器支持 | 有 | 有 | 有 |
| iOS 真机支持 | 计划中 | 有 | 有 |
| 截图压缩 | 89%(251KB->28KB) | 无 | 50-80% |
| 多提供商 AI | Claude + Gemini | 不适用 | 单一提供商 |
| 价格 | 免费 + Pro(₹499/月) | 免费 | 免费 |
问题所在
Web 开发者有浏览器 DevTools、Playwright 和 Puppeteer,AI 助手可以点击、截屏并验证修复结果。移动开发者呢?他们只能手动截屏、复制日志,再描述屏幕上的内容。他们成了 AI 和设备之间的人工中间层。
功能介绍
Developer: "The login button doesn't work"
Without this tool: With this tool:
1. Manually screenshot 1. AI calls take_screenshot -> sees the screen
2. Paste into AI chat 2. AI calls smart_tap("login button") -> taps it
3. AI guesses what's wrong 3. AI calls verify_screen("error message shown") -> sees result
4. Apply fix, rebuild 4. AI calls visual_diff -> confirms fix worked
5. Repeat 4-5 times 5. Done.
快速开始
安装
npx mobile-device-mcp
无需全局安装,可通过 npx 直接运行。
前提条件
- Node.js 18+
- 通过 ADB 连接的 Android 设备/模拟器
- 已安装 ADB(Android SDK Platform Tools)
设置(一次性,30 秒)
-
获取 Google AI 密钥(提供免费套餐):aistudio.google.com/apikey
-
在项目根目录添加
.mcp.json:
macOS / Linux:
{
"mcpServers": {
"mobile-device": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mobile-device-mcp"],
"env": {
"GOOGLE_API_KEY": "your-google-api-key"
}
}
}
}
Windows:
{
"mcpServers": {
"mobile-device": {
"type": "stdio",
"command": "cmd",
"args": ["/c", "npx", "-y", "mobile-device-mcp"],
"env": {
"GOOGLE_API_KEY": "your-google-api-key"
}
}
}
}
使用 Pro 许可证密钥(购买 Pro 后):
macOS / Linux(Pro)
{
"mcpServers": {
"mobile-device": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mobile-device-mcp"],
"env": {
"GOOGLE_API_KEY": "your-google-api-key",
"MOBILE_MCP_LICENSE_KEY": "MDMCP-XXXXX-XXXXX-XXXXX-XXXXX"
}
}
}
}
Windows(Pro)
{
"mcpServers": {
"mobile-device": {
"type": "stdio",
"command": "cmd",
"args": ["/c", "npx", "-y", "mobile-device-mcp"],
"env": {
"GOOGLE_API_KEY": "your-google-api-key",
"MOBILE_MCP_LICENSE_KEY": "MDMCP-XXXXX-XXXXX-XXXXX-XXXXX"
}
}
}
}
- 从该目录打开 AI 编码助手。 就这么简单。
服务会自动启动和停止,无需手动运行。AI 助手会通过 MCP 协议将其作为后台进程进行管理。
验证是否正常运行
Claude Code: 输入 /mcp,你应该会看到 mobile-device: Connected
Cursor: 在设置中的 MCP 面板查看
然后直接和手机说:
You: "Open my app, tap the login button, type [email protected] in the email field"
AI: [takes screenshot -> sees the screen -> smart_tap("login button") -> smart_type("email field", "[email protected]")]
You: "Find all the bugs on this screen"
AI: [analyze_screen -> inspects layout, checks for overflow, missing labels, broken states]
You: "Navigate to settings and verify dark mode works"
AI: [smart_tap("settings") -> take_screenshot -> smart_tap("dark mode toggle") -> visual_diff -> reports result]
无需测试脚本,无需手动截屏。只需用普通语言描述你想做什么。
适用于任何 AI 编码助手
| 工具 | 配置文件 | 文档 |
|---|---|---|
| Claude Code | 项目根目录中的 .mcp.json | claude.ai/docs |
| Cursor | .cursor/mcp.json | cursor.com/docs |
| VS Code + Copilot | MCP 设置 | code.visualstudio.com |
| Windsurf | MCP 设置 | windsurf.com |
所有工具都使用相同的 JSON 配置——只需将其放入编辑器对应的文件中。
集成到任何项目
将 .mcp.json 复制到任何移动项目中——Flutter、React Native、Kotlin、Swift——AI 助手便能在该目录中获得设备超能力。无需全局安装。
免费版与 Pro 版
免费版(14 个工具)——无需许可证密钥
| 工具 | 功能 |
|---|---|
list_devices | 列出所有已连接的 Android 设备/模拟器 |
get_device_info | 获取型号、制造商、Android 版本和 SDK 级别 |
get_screen_size | 获取屏幕分辨率(像素) |
take_screenshot | 截取屏幕截图(PNG 或 JPEG,可配置质量和缩放大小) |
get_ui_elements | 以结构化 JSON 获取无障碍/UI 元素树 |
tap | 点击指定坐标 |
double_tap | 双击指定坐标 |
long_press | 长按指定坐标 |
swipe | 在两点之间滑动 |
type_text | 在当前焦点字段中输入文本 |
press_key | 按下按键(home、back、enter、volume 等) |
list_apps | 列出已安装的应用 |
get_current_app | 获取前台应用 |
get_logs | 获取支持筛选的 logcat 条目 |
Pro 版(额外提供 35 个工具)——₹499/月
获取 Pro 许可证——解锁全部 49 个工具。付款后,你将在 1 小时内通过电子邮件收到许可证密钥。将其添加到 .mcp.json 中:
{
"mcpServers": {
"mobile-device": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mobile-device-mcp"],
"env": {
"GOOGLE_API_KEY": "your-google-api-key",
"MOBILE_MCP_LICENSE_KEY": "your-license-key"
}
}
}
}
AI 视觉分析(12 个工具)
使用 AI 视觉(Claude 或 Gemini)理解屏幕上的内容。
| 工具 | 功能 |
|---|---|
analyze_screen | AI 描述屏幕:应用名称、屏幕类型、可交互元素、可见文本和建议 |
find_element | 按描述查找 UI 元素:“登录按钮”、“电子邮件输入框” |
smart_tap | 按描述查找元素并一步点击 |
smart_type | 按描述查找输入框、聚焦并输入文本 |
suggest_actions | 规划实现目标所需的操作:“登录应用”、“将商品加入购物车” |
visual_diff | 将当前屏幕与之前的截图进行比较——有哪些变化? |
extract_text | 提取屏幕上所有可见文本(AI 驱动的 OCR) |
verify_screen | 验证断言:“登录成功”、“正在显示错误消息” |
wait_for_settle | 等待屏幕停止变化 |
wait_for_element | 等待特定元素出现在屏幕上 |
handle_popup | 检测并关闭弹出窗口、对话框和权限提示 |
fill_form | 一步填写多个表单字段 |
Flutter Widget Tree(10 个工具)
通过 Dart VM Service Protocol 连接到正在运行的 Flutter 应用。将每个 Widget 映射到其源代码位置(file:line)。
| 工具 | 功能 |
|---|---|
flutter_connect | 发现并连接设备上正在运行的 Flutter 应用 |
flutter_disconnect | 断开与 Flutter 应用的连接并清理资源 |
flutter_get_widget_tree | 获取完整的 Widget 树(摘要或详细信息) |
flutter_get_widget_details | 获取指定 ID 的 Widget 的详细属性 |
flutter_find_widget | 按类型、文本或描述搜索 Widget 树 |
flutter_get_source_map | 将每个 Widget 映射到其源代码位置(file:line:column) |
flutter_screenshot_widget | 单独截取指定 Widget 的屏幕截图 |
flutter_debug_paint | 切换调试绘制叠加层(显示 Widget 边界和内边距) |
flutter_hot_reload | 热重载 Flutter 应用(保留状态) |
flutter_hot_restart | 热重启 Flutter 应用(重置状态) |
iOS 模拟器(4 个工具)
仅限 macOS。通过 xcrun simctl 控制 iOS 模拟器。
| 工具 | 功能 |
|---|---|
ios_list_simulators | 列出可用的 iOS 模拟器 |
ios_boot_simulator | 按名称或 UDID 启动模拟器 |
ios_shutdown_simulator | 关闭正在运行的模拟器 |
ios_screenshot | 截取模拟器的屏幕截图 |
视频录制(2 个工具)
| 工具 | 功能 |
|---|---|
record_screen | 开始录制设备屏幕 |
stop_recording | 停止录制并保存视频 |
测试生成(3 个工具)
| 工具 | 功能 |
|---|---|
start_test_recording | 开始录制 MCP 工具调用 |
stop_test_recording | 停止录制并生成测试脚本 |
get_recorded_actions | 以 TypeScript、Python 或 JSON 格式获取录制的操作 |
应用管理(4 个工具)
| 工具 | 功能 |
|---|---|
launch_app | 按包名启动应用 |
stop_app | 强制停止应用 |
install_app | 安装 APK |
uninstall_app | 卸载应用 |
性能
该服务经过优化,可尽量降低延迟和 AI 令牌开销:
- 四层元素搜索:配套应用(即时)-> 本地文本匹配(<1ms)-> 缓存的 AI -> 新的 AI。
smart_tap比朴素的 AI 调用快 35 倍(205ms 对比 7.6s)。 - 配套应用:基于 AccessibilityService 的 Android 应用可在 105ms 内提供 UI 树(比 UIAutomator 的 2448ms 快 23 倍)。首次使用时自动安装。
- 屏幕截图压缩:AI 工具会自动压缩为 JPEG q=60、400w——体积缩小 89%(251KB -> 28KB),且 AI 质量毫无损失。
- 并行采集:通过
Promise.all()同时获取屏幕截图和 UI 树。 - TTL 缓存:5 秒缓存可避免高频连续使用工具时重复调用 ADB。
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
GOOGLE_API_KEY 或 GEMINI_API_KEY | 用于 Gemini 视觉功能的 Google API 密钥(推荐) | -- |
ANTHROPIC_API_KEY | 用于 Claude 视觉功能的 Anthropic API 密钥 | -- |
MOBILE_MCP_LICENSE_KEY | 用于解锁 Pro 工具的许可证密钥 | -- |
MCP_AI_PROVIDER | 强制指定 AI 提供商:"anthropic" 或 "google" | 自动检测 |
MCP_AI_MODEL | 覆盖 AI 模型 | gemini-2.5-flash / claude-sonnet-4-20250514 |
MCP_ADB_PATH | 自定义 ADB 二进制文件路径 | 自动发现 |
MCP_DEFAULT_DEVICE | 默认设备序列号 | 自动发现 |
MCP_SCREENSHOT_FORMAT | "png" 或 "jpeg" | jpeg |
MCP_SCREENSHOT_QUALITY | JPEG 质量(1-100) | 80 |
MCP_SCREENSHOT_MAX_WIDTH | 将屏幕截图调整为此最大宽度 | 720 |
架构
src/
|-- index.ts # CLI entry point (auto-discovery, env config)
|-- server.ts # MCP server factory
|-- license.ts # License validation and tier gating
|-- types.ts # Shared interfaces
|-- drivers/android/ # ADB driver (DeviceDriver implementation)
| |-- adb.ts # Low-level ADB command wrapper
| |-- companion-client.ts # TCP client for companion app
| +-- index.ts # AndroidDriver class (4-strategy UI element retrieval)
|-- drivers/flutter/ # Dart VM Service driver
| |-- index.ts # FlutterDriver (discovery, inspection, source mapping, hot reload)
| +-- vm-service.ts # JSON-RPC 2.0 WebSocket client (DDS redirect handling)
|-- drivers/ios/ # iOS Simulator driver (macOS only)
| |-- index.ts # IOSSimulatorDriver via xcrun simctl
| +-- simctl.ts # Low-level simctl command wrapper
|-- tools/ # MCP tool registrations (free + pro gating)
| |-- device-tools.ts # Device management
| |-- screen-tools.ts # Screenshots & UI inspection
| |-- interaction-tools.ts # Touch, type, keys
| |-- app-tools.ts # App management
| |-- log-tools.ts # Logcat
| |-- ai-tools.ts # AI-powered tools
| |-- flutter-tools.ts # Flutter widget inspection
| |-- ios-tools.ts # iOS simulator tools
| |-- video-tools.ts # Screen recording
| +-- recording-tools.ts # Test generation
|-- recording/ # Test script generation
| |-- recorder.ts # ActionRecorder (records MCP tool calls)
| +-- generator.ts # TestGenerator (TypeScript/Python/JSON output)
|-- ai/ # AI visual analysis engine
| |-- client.ts # Multi-provider client (Anthropic + Google)
| |-- prompts.ts # System prompts & UI element summarizer
| |-- analyzer.ts # ScreenAnalyzer orchestrator (caching, parallel capture)
| +-- element-search.ts # Local element search (text/alias matching, no AI needed)
+-- utils/
|-- discovery.ts # ADB auto-discovery
+-- image.ts # PNG parsing, JPEG compression, bilinear resize
companion-app/ # Android companion app (Kotlin)
# AccessibilityService + TCP JSON-RPC for fast UI tree
路线图
- 支持 iOS 实体设备
- 多设备编排
- CI/CD 集成
- 支持云端设备农场
测试环境
- 设备:Pixel 8(Android 16)、Samsung Galaxy 系列、Android 模拟器
- 应用:Telegram、Instagram、Spotify、WhatsApp、YouTube、Chrome、Settings 和 Flutter 应用
- AI 提供商:Google Gemini 2.5 Flash、Anthropic Claude
- 平台:Windows 11、macOS(iOS 模拟器)
- 连接方式:USB 和无线 ADB
许可证
- 个人和非商业用途免费
- 商业用途需购买付费许可证
- 将于 2030 年 3 月 23 日转为 Apache 2.0
完整条款请参阅 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。