MCP server for Android device control via ADB and scrcpy
If you already use Scrcpy, the scrcpy mcp server is the piece that lets your assistant work with it directly. MCP server for Android device control via ADB and scrcpy.
MCP server that gives AI agents full vision and control over Android devices via ADB and scrcpy.
The toolset is worth reading before you wire it up, because it tells you what the integration is really for:
scrcpy-first — uses scrcpy's binary control protocol for 10-50x faster input and near-instant screenshots (~33ms)Image — returning screenshots**: the AI actually sees the screen, not just a file pathRequirement — Installscrcpy — github.com/Genymobile/scrcpyffmpeg — apt install ffmpeg / brew install ffmpegstart_session — Start a scrcpy session. When active, input and screenshots use the fast path (10-50x faster)stop_session — Stop the scrcpy session. Tools fall back to ADBstart_video_stream — Start an HTTP MJPEG video stream and open an ffplay viewer window. Auto-starts a scrcpy session if neededstop_video_stream — Stop the video stream and close the viewer windowdevice_list — List all connected devices with serial, state, and modeldevice_info — Get model, Android version, screen size, SDK level, batteryscreen_on — Wake the device screenscrcpy-mcp on npm is all you need. Most clients run it directly, so configuration is a few lines and a restart.
Configuration is passed through the environment: SCRCPY_SERVER_PATH, SCRCPY_SERVER_VERSION, FFMPEG_PATH, FFPLAY_PATH. Treat anything key-shaped as a real credential — scope it to the minimum the server needs, and rotate it if it ever lands in a shared config.
Plenty of developer tooling servers cover similar ground. The differences that matter in practice are scope of access and how much setup stands between you and a working tool call. Scrcpy's toolset — scrcpy-first, Image, Requirement and 11 more — is a fair guide to whether it matches your workflow. It is maintained by JuanCF; worth a glance at recent repository activity before you build anything load-bearing on it.
We check each listing at SyncDev against the project's documentation before it goes live — if something here drifts out of date, it is a bug worth reporting.
| Tool | What it does |
|---|---|
| scrcpy-first | uses scrcpy's binary control protocol for 10-50x faster input and near-instant screenshots (~33ms) |
| Image | returning screenshots**: the AI actually sees the screen, not just a file path |
| Requirement | Install |
| scrcpy | [github.com/Genymobile/scrcpy](https://github.com/Genymobile/scrcpy/releases) |
| ffmpeg | apt install ffmpeg / brew install ffmpeg |
| start_session | Start a scrcpy session. When active, input and screenshots use the fast path (10-50x faster). |
| stop_session | Stop the scrcpy session. Tools fall back to ADB. |
| start_video_stream | Start an HTTP MJPEG video stream and open an ffplay viewer window. Auto-starts a scrcpy session if needed. |
| stop_video_stream | Stop the video stream and close the viewer window. |
| device_list | List all connected devices with serial, state, and model |
| device_info | Get model, Android version, screen size, SDK level, battery |
| screen_on | Wake the device screen |
| screen_off | Turn the screen off |
| rotate_device | Rotate the screen (requires active session) |
### OpenCode
Add to `.mcp.json`:
```json
{
"mcpServers": {
"android": {
"command": "npx",
"args": ["scrcpy-mcp"]
}
}
}Configuration as documented by the project. Restart the client after saving.
| Variable | Description | Required |
|---|---|---|
| SCRCPY_SERVER_PATH | Filesystem location the server is allowed to use. | Optional |
| SCRCPY_SERVER_VERSION | Configuration value read at startup. | Optional |
| FFMPEG_PATH | Filesystem location the server is allowed to use. | Optional |
| FFPLAY_PATH | Filesystem location the server is allowed to use. | Optional |
Kill hallucinated APIs — version-accurate, up-to-date library documentation injected straight into context.
Microsoft's official browser automation server — drive a real browser through the accessibility tree, no screenshots needed.
GitHub's official server — repos, issues, pull requests, Actions and code security, straight from your assistant.
Issue tracking at the speed of conversation — Linear's official hosted server with OAuth and zero install.
Local repository surgery — status, diffs, commits, branches and history for any repo on disk.
Timezone sanity for AI — current time anywhere and correct conversions, without the model doing date math.