Token导航 LogoToken导航TokenDH.com
MCP Scrcpy Vision logo
运维云端未说明官方级别未说明来源级核验

MCP Scrcpy Vision

MCP Server

一个通过AI代理实现对Android设备的实时视觉和控制的服务,提供屏幕流媒体、快速输入控制和UI自动化等功能。

工具数

0

提示词数

0

GitHub Stars

14

资源数

0
TypeScriptClaude设备控制Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

invidtiv

提供方

invidtiv

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

mcp scrcpy愿景

MCP服务器 这为AI代理提供了对Android设备的完全视觉和控制。

特征:

  • 实时视觉:通过scrcpy H.264+ffmpeg进行连续屏幕流式传输
  • 快速输入控制:流式传输时,输入使用scrcpy控制协议(~5-10ms延迟,而adb shell的延迟为~100-300ms)
  • 用户界面自动化:通过带有点击坐标的uiautomator进行元素检测
  • 完全输入控制:点击、滑动、长按、捏住、拖放、文本、按键代码
  • 系统访问:Shell命令、文件传输、剪贴板、通知
  • 多设备:同时控制多个Android设备
  • WiFi ADB:无线连接,实现不受限制的自动化

______________________________________________________________________

快速开始

1.先决条件

必修的:

  • Node.js 18+
  • PATH中的ADB(Android平台工具)
  • 启用USB调试的Android设备

对于流媒体(建议用于快速输入):

2.安装

git clone https://github.com/anthropics/mcp-scrcpy-vision.git
cd mcp-scrcpy-vision
npm install
npm run build

3.配置

创建 .env 文件:

# Required for streaming + fast input
SCRCPY_SERVER_PATH="C:\scrcpy-win64-v3.2\scrcpy-server"
SCRCPY_SERVER_VERSION="3.2"

# Optional (defaults shown)
ADB_PATH="adb"
FFMPEG_PATH="ffmpeg"
DEFAULT_MAX_SIZE="1024"
DEFAULT_MAX_FPS="30"
DEFAULT_FRAME_FPS="2"

4.添加到MCP客户端

克劳德桌面 (%APPDATA%\Claude\claude_desktop_config.json 在Windows上):

{
  "mcpServers": {
    "android": {
      "command": "node",
      "args": ["C:/path/to/mcp-scrcpy-vision/dist/index.js"],
      "env": {
        "SCRCPY_SERVER_PATH": "C:/scrcpy/scrcpy-server",
        "SCRCPY_SERVER_VERSION": "3.2"
      }
    }
  }
}

光标 (设置>MCP):

{
  "android": {
    "command": "node",
    "args": ["C:/path/to/mcp-scrcpy-vision/dist/index.js"],
    "env": {
      "SCRCPY_SERVER_PATH": "C:/scrcpy/scrcpy-server",
      "SCRCPY_SERVER_VERSION": "3.2"
    }
  }
}

5.连接设备

  1. 在Android设备上启用USB调试(设置>开发人员选项>USB调试)
  2. 通过USB连接
  3. 在设备上接受RSA指纹提示
  4. 验证: adb devices 应该显示您的设备

______________________________________________________________________

运作原理

两种操作模式

1.快照模式(无需流式传输)

  • 用途 android.vision.snapshot 用于截图
  • 输入使用ADB shell命令(每次操作约100-300ms)
  • 无需scrcpy/ffmpeg即可工作
  • 最适合简单的自动化或流媒体不可用时

2.流媒体模式(推荐)

  • 开始 android.vision.startStream
  • 通过资源URI提供连续JPEG帧
  • 输入使用scrcpy控制协议(每个动作~5-10ms)
  • 速度快10-20倍 比快照模式
  • 最适合实时控制和快速交互

性能比较

操作快照模式流模式
轻击~100-300ms~5-10ms
滑动~300-500ms~50-100ms
键入文本~50ms/字符~5ms总计
屏幕截图~500ms~33ms(30fps)

______________________________________________________________________

工具参考(32个工具)

设备管理

工具参数说明
android.devices.list-列出连接的设备
android.devices.infoserial获取设备信息(型号、SDK等)
android.adb.enableTcpipserial, port?启用WiFi调试
android.adb.getDeviceIpserial获取设备WiFi IP
android.adb.connectWifiipAddress, port?通过WiFi连接
android.adb.disconnectWifiipAddress?断开WiFi连接

视觉

工具参数说明
android.vision.startStreamserial, maxSize?, maxFps?, frameFps?启动连续流(实现快速输入)
android.vision.stopStreamserial停止流
android.vision.snapshotserial拍摄PNG屏幕截图(无需流媒体)
android.ui.dumpserial获取UI层次结构XML
android.ui.findElementserial, text?, resourceId?, className?, contentDesc?使用水龙头坐标查找元素

输入控制

注: 这些在流式传输时自动使用快速scrcpy控制,否则将回退到ADB。

工具参数说明
android.input.tapserial, x, y点击坐标
android.input.swipeserial, x1, y1, x2, y2, durationMs?滑动手势
android.input.longPressserial, x, y, durationMs?长按
android.input.pinchserial, centerX, centerY, startDistance, endDistance, durationMs?捏住变焦
android.input.dragDropserial, startX, startY, endX, endY, durationMs?拖放
android.input.textserial, text键入文本
android.input.keyeventserial, keycode发送密钥代码

应用程序控制

工具参数说明
android.app.startserial, packageName, activity?启动应用程序
android.app.stopserial, packageName强制停止应用程序
android.apps.listserial, system?列出已安装的应用程序
android.activity.currentserial获取前台活动

系统

工具参数说明
android.shell.execserial, command执行shell命令
android.file.pushserial, localPath, remotePath将文件推送到设备
android.file.pullserial, remotePath, localPath从设备中提取文件
android.file.listserial, path列表目录
android.clipboard.getserial获取剪贴板
android.clipboard.setserial, text设置剪贴板
android.notifications.getserial获取通知

屏幕控制

工具参数说明
android.screen.wakeserial唤醒屏幕
android.screen.sleepserial睡眠屏幕
android.screen.isOnserial检查屏幕是否打开
android.screen.unlockserial解锁(仅不安全)

______________________________________________________________________

资源

服务器公开这些MCP资源:

  • android://devices -连接设备的JSON列表
  • android://device//frame/latest.jpg -最新JPEG帧(流式传输时)

______________________________________________________________________

使用示例

基本自动化回路(流模式)

1. Start stream: android.vision.startStream { serial: "ABC123" }
2. Read resource: android://device/ABC123/frame/latest.jpg
3. AI analyzes image, decides to tap "Login" button
4. Find element: android.ui.findElement { serial: "ABC123", text: "Login" }
5. Tap at returned coordinates: android.input.tap { serial: "ABC123", x: 540, y: 1200 }
6. Wait 500ms, read resource again, repeat
7. When done: android.vision.stopStream { serial: "ABC123" }

简单截图模式

1. Take screenshot: android.vision.snapshot { serial: "ABC123" }
2. AI analyzes image
3. Find and tap: android.ui.findElement + android.input.tap
4. Take another screenshot to verify

WiFi连接工作流程

1. Connect device via USB
2. android.adb.enableTcpip { serial: "ABC123" }
3. android.adb.getDeviceIp { serial: "ABC123" } → "192.168.1.50"
4. Disconnect USB cable
5. android.adb.connectWifi { ipAddress: "192.168.1.50" }
6. Now use "192.168.1.50:5555" as serial for all commands

应用程序测试示例

1. android.app.start { serial: "ABC123", packageName: "com.example.app" }
2. android.vision.startStream { serial: "ABC123" }
3. Wait for app to load, read frame
4. android.ui.findElement { serial: "ABC123", resourceId: "username_field" }
5. android.input.tap { serial: "ABC123", x: 540, y: 300 }
6. android.input.text { serial: "ABC123", text: "testuser@example.com" }
7. android.input.keyevent { serial: "ABC123", keycode: 66 }  // Enter
8. Read frame, verify login succeeded
9. android.vision.stopStream { serial: "ABC123" }

______________________________________________________________________

通用钥匙码

密钥代码密钥代码
主页3返回4
VOLUME_UP24VOLUME_DOWN25
电源26输入66
删除67选项卡61
菜单82APP_SWITCH187
唤醒224睡眠223

______________________________________________________________________

故障排除

未找到设备

adb kill-server
adb start-server
adb devices

确保已启用USB调试并接受RSA指纹。

Scrcpy版本不匹配

SCRCPY_SERVER_VERSION 必须与scrcpy服务器文件完全匹配。检查您下载的scrcpy发布版本。

未找到ffmpeg

  • 视窗:从下载https://ffmpeg.org/download.html,提取,将bin文件夹添加到PATH
  • macOS: brew install ffmpeg
  • Linux: apt install ffmpegyum install ffmpeg

或设置 FFMPEG_PATH 在.env中添加完整路径。

uiautomator转储失败

某些设备需要打开屏幕。请尝试 android.screen.wake 第一。

剪贴板无法工作(Android 10+)

Android 10+限制剪贴板访问。使用UI自动化进行粘贴。

流无法启动

  1. 检查scrcpy服务器路径是否正确
  2. 验证版本号是否匹配
  3. 首先尝试独立运行scrcpy以验证其是否正常工作

______________________________________________________________________

注意事项和限制

  • 流媒体播放时输入速度快:当流处于活动状态时,点击/滑动/文本/按键事件使用scrcpy控制协议(~5-10ms延迟)。没有流媒体,回落到 adb shell input (约100-300ms)。
  • 每个设备一个流 一次
  • 快照无需scrcpy即可工作 -不需要流媒体时的有用回退
  • 剪贴板 在Android 10上有平台限制+
  • 通知 可能需要在较新的Android上获得权限
  • 捏手势 目前模拟单指;真正的多点触控需要流媒体会话

______________________________________________________________________

安全警告

此MCP服务器提供 完全控制 通过连接的Android设备:

  • 执行任意shell命令
  • 在设备上读/写文件
  • 控制UI和输入
  • 访问剪贴板和通知

仅连接您拥有并信任AI代理的设备。

______________________________________________________________________

发展

npm run dev     # Development with tsx
npm run build   # Compile TypeScript
npm start       # Run production build

claude.md 用于开发人员文档。 看 特工.md 用于AI代理集成指南。

______________________________________________________________________

许可证

麻省理工学院

目录标签

目录标签

TypeScriptClaude设备控制Android自动化本地部署实时视觉UI自动化多设备管理

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

session

部署方式(deploymentType,部署类型)

local-only

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明sessionlocal-only

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP