scrcpy mcp
MCP服务器,通过ADB和scrcpy为AI代理提供对Android设备的完全视觉和控制。
将任何兼容MCP的AI助手(Claude Code、OpenCode、Cursor、VS Code Copilot等)连接到您的Android设备。AI可以看到屏幕、点击、滑动、键入、启动应用程序、检查UI元素、传输文件和运行shell命令。
特性
- 34工具 涵盖屏幕截图、输入、应用程序、UI自动化、shell、文件和剪贴板
- scrcpy优先:使用scrcpy的二进制控制协议,输入速度提高10-50倍,屏幕截图近乎即时(约33ms)
- ADB回退:每个工具都可以在没有scrcpy的情况下工作——速度较慢,但始终可用
- 图片返回截图:AI实际上看到的是屏幕,而不仅仅是文件路径
- UI元素查找:
ui_find_element返回点击坐标,以便AI可以根据它看到的内容采取行动 - 适用于Android 10的剪贴板+:scrcpy绕过了打破亚行专用解决方案的限制
先决条件
必需的
| 要求 | 安装 | 验证 |
|---|---|---|
| Node.js 22+ | 或 nvm install (使用 ) | node --version |
| 安卓调试桥 (安卓平台工具) | developer.android.com/tools/releases/platform-tools | adb version |
| 安卓设备 带USB调试 | 设置→ 开发人员选项→ USB调试 | adb devices |
可选(用于增强性能)
| 需求 | 安装 | 好处 |
|---|---|---|
| 屏幕镜像 | 输入速度提高10-50倍,截图时间约为33毫秒 | |
| FFmpeg | apt install ffmpeg / brew install ffmpeg | scrcpy视频流解码所需 |
设备设置
- 启用开发人员选项: 设置→ 关于手机→ 点击“内部版本号”7次
- 启用USB调试: 设置→ 开发人员选项→ USB调试
- 通过USB连接设备
- 接受设备上的RSA指纹提示
- 验证:
adb devices应将您的设备显示为device(不是unauthorized)
安装
# Run directly with npx (no install needed)
npx scrcpy-mcp
# Or install globally
npm install -g scrcpy-mcpMCP客户端配置
克劳德代码
claude mcp add android -- npx scrcpy-mcp或添加到 .mcp.json 在项目根目录中:
{
"mcpServers": {
"android": {
"command": "npx",
"args": ["scrcpy-mcp"]
}
}
}开源代码
增添 .mcp.json:
{
"mcpServers": {
"android": {
"command": "npx",
"args": ["scrcpy-mcp"]
}
}
}光标
设置→ MCP → 添加服务器:
{
"android": {
"command": "npx",
"args": ["scrcpy-mcp"]
}
}克劳德桌面版
编辑 ~/.config/Claude/claude_desktop_config.json (Linux)或 %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"android": {
"command": "npx",
"args": ["scrcpy-mcp"]
}
}
}VS代码(GitHub副本)
增添 .vscode/mcp.json:
{
"servers": {
"android": {
"command": "npx",
"args": ["scrcpy-mcp"]
}
}
}工具参考
会话管理
| 工具 | 说明 |
|---|---|
start_session | 启动scrcpy会话。活动时,输入和屏幕截图使用快速路径(快10-50倍)。 |
stop_session | 停止scrcpy会话。工具退回到ADB。 |
设备管理
| 工具 | 说明 |
|---|---|
device_list | 列出所有连接的设备,包括串行、状态和型号 |
device_info | 获取型号、Android版本、屏幕大小、SDK级别、电池 |
screen_on | 唤醒设备屏幕 |
screen_off | 关闭屏幕 |
rotate_device | 旋转屏幕(需要活动会话) |
expand_notifications | 下拉通知面板(需要活动会话) |
expand_settings | 下拉快速设置面板(需要活动会话) |
collapse_panels | 折叠通知/设置面板(需要活动会话) |
视觉
| 工具 | 说明 |
|---|---|
screenshot | 捕获屏幕并将其作为图像返回。使用scrcpy约33ms,通过ADB约500ms。 |
screen_record_start | 开始将屏幕录制到设备上的文件中 |
screen_record_stop | 停止录制,并可选择将文件拉到主机 |
输入控制
当会话处于活动状态时,所有输入工具都使用scrcpy(~5-10ms),否则回退到ADB(~100-300ms)。
| 工具 | 说明 |
|---|---|
tap | 点击屏幕坐标 |
swipe | 从一个点滑动到另一个点 |
long_press | 长按坐标 |
drag_drop | 从一个点拖动到另一个点 |
input_text | 在焦点字段中键入文本字符串 |
key_event | 发送一个关键事件:HOME、BACK、ENTER、VOLUME_UP、VOLUME_DOWN、POWER等。 |
scroll | 在某个位置滚动(dx=水平,dy=垂直) |
应用程序管理
| 工具 | 说明 |
|---|---|
app_start | 按程序包名称启动应用程序。前缀为 + 在发射前强制停止。 |
app_stop | 强制停止应用程序 |
app_install | 从主机安装APK |
app_uninstall | 卸载应用程序 |
app_list | 列出已安装的软件包,可选择按名称或系统/第三方进行筛选 |
app_current | 获取当前前台应用程序和活动 |
用户界面自动化
| 工具 | 说明 |
|---|---|
ui_dump | 将整个UI层次结构转储为XML |
ui_find_element | 按文本、资源ID、类名或内容描述查找元素。返回点击坐标。 |
外壳和文件
| 工具 | 说明 |
|---|---|
shell_exec | 执行任意ADB shell命令并返回输出 |
file_push | 将文件从主机推送到设备 |
file_pull | 将文件从设备拉到主机 |
file_list | 列出设备上的目录内容 |
剪贴板
| 工具 | 说明 |
|---|---|
clipboard_get | 获取剪贴板内容。使用scrcpy绕过Android 10+限制。 |
clipboard_set | 设置剪贴板内容。通过 paste: true 也可以立即粘贴。 |
演出
| 操作 | scrcpy(会话活动) | ADB回退 |
|---|---|---|
| 屏幕截图 | ~33ms | ~500ms |
| 点击/滑动 | ~5-10ms | ~100-300ms |
| 文本输入 | ~5ms | ~100-300ms |
| 剪贴板 | ~10ms | 在Android 10+上不可靠 |
在开始时启动一次会话以解锁快速路径:
start_session → take screenshots → tap → swipe → ...环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
ADB_PATH | adb | ADB二进制文件的路径 |
ANDROID_SERIAL | (无) | 默认设备序列,覆盖自动检测 |
SCRCPY_SERVER_PATH | (auto) | scrcpy服务器二进制文件的路径 |
SCRCPY_SERVER_VERSION | (auto) | scrcpy服务器二进制文件的版本 |
FFMPEG_PATH | ffmpeg | ffmpeg二进制文件的路径 |
当只有一个设备连接时,工具会自动检测到它。对于多个设备,传递 serial 显式或设置参数 ANDROID_SERIAL.
故障排除
adb devices 显示 unauthorized 接受设备上的RSA指纹提示。如果未出现提示,请在“开发人员选项”中撤销USB调试授权并重新连接。
start_session 失败 确保scrcpy已安装 scrcpy-server 二进制文件是可访问的。集 SCRCPY_SERVER_PATH 如果它位于非标准位置。
截图速度较慢(~500ms) 启动scrcpy会话 start_session 以启用快速视频流路径。需要scrcpy和ffmpeg。
expand_notifications / expand_settings / collapse_panels 失败 这些工具需要一个活动的scrcpy会话。跑 start_session 第一。
剪贴板在Android 10上不起作用+ ADB剪贴板访问在Android 10+上受到限制。启动scrcpy会话——scrcpy剪贴板协议绕过了此限制。
多台设备已连接 通过 serial 每个工具或设置 ANDROID_SERIAL 环境变量。
安全
此服务器提供对连接的Android设备的完全控制。这 shell_exec 该工具可以运行任意命令,以及 file_push/file_pull 可以读取和写入shell用户可访问的任何文件。
- 服务器通过stdio在本地运行,不暴露在网络中
- ADB要求在设备上明确启用USB调试
- 设备必须在第一次连接时接受主机的RSA密钥
- 仅连接您拥有的设备并信任您正在使用的AI代理
许可证
麻省理工学院——见 许可证
