scrcpy-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ADB_PATH | No | Path to the ADB binary | adb |
| FFMPEG_PATH | No | Path to the ffmpeg binary | ffmpeg |
| ANDROID_SERIAL | No | Default device serial, overrides auto-detection | |
| SCRCPY_SERVER_PATH | No | Path to the scrcpy-server binary | |
| SCRCPY_SERVER_VERSION | No | Version of the scrcpy-server binary |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| start_sessionA | Start a scrcpy session for fast input control and screenshots. When a session is active, tap/swipe/text/screenshot are 10-50x faster. Requires scrcpy-server to be installed. |
| stop_sessionA | Stop the active scrcpy session. Tools will fall back to ADB commands. |
| device_listA | List all connected Android devices with their serial numbers, state, and model |
| device_infoA | Get detailed info about a device: model, Android version, screen size, SDK level, battery level |
| screen_onB | Wake the device screen (turn screen on) |
| screen_offB | Turn the device screen off |
| connect_wifiB | Enable WiFi ADB and connect to the device wirelessly. Returns the connection address. |
| disconnect_wifiB | Disconnect from a wireless ADB device |
| rotate_deviceB | Rotate the device screen (requires active scrcpy session) |
| expand_notificationsA | Expand the notification panel (requires active scrcpy session) |
| expand_settingsA | Expand the quick settings panel (requires active scrcpy session) |
| collapse_panelsA | Collapse all open panels (notification, settings) (requires active scrcpy session) |
| screenshotA | Take a screenshot of the Android device screen. Returns the image as base64. |
| screen_record_startA | Start recording the screen. Recording continues until screen_record_stop is called. |
| screen_record_stopA | Stop screen recording and optionally pull the file to the host. |
| tapA | Tap at the specified screen coordinates |
| swipeC | Perform a swipe gesture from one point to another |
| long_pressC | Perform a long press at the specified coordinates |
| drag_dropA | Perform a drag and drop gesture from one point to another. Uses input draganddrop on Android 8.0+ (API 26), falls back to swipe on older versions. |
| input_textA | Type text into the currently focused input field |
| key_eventB | Send a key event to the device. Supports keycodes like HOME, BACK, ENTER, VOLUME_UP, etc. |
| scrollB | Scroll at the specified position. dx and dy are scroll amounts (-1 to 1 range approximated for ADB). |
| app_startA | Launch an app on the device. Uses scrcpy START_APP when a session is active for faster launch, falls back to ADB |
| app_stopB | Force-stop an app on the device. |
| app_installB | Install an APK file on the device from the host machine. |
| app_uninstallC | Uninstall an app from the device. |
| app_listB | List installed packages on the device. Optionally filter by name or restrict to system/third-party apps. |
| app_currentA | Get the currently foregrounded app package name and activity. |
| clipboard_getA | Get the current clipboard content from the device. Uses scrcpy GET_CLIPBOARD when a session is active (works on Android 10+), falls back to ADB clipboard commands. |
| clipboard_setA | Set the clipboard content on the device. Uses scrcpy SET_CLIPBOARD when a session is active (with optional paste flag), falls back to ADB clipboard commands. |
| ui_dumpA | Dump the full UI hierarchy of the current screen as XML. Useful for understanding screen structure before using ui_find_element. |
| ui_find_elementA | Find UI elements on screen by text, resource ID, class name, or content description. Returns matching elements with their tap coordinates. At least one search criterion must be provided. |
| shell_execA | Execute an arbitrary ADB shell command on the device and return the output. Use this for any device operation not covered by other tools. |
| file_pushB | Push a file from the host machine to the device. |
| file_pullB | Pull a file from the device to the host machine. |
| file_listC | List directory contents on the device. |
| start_video_streamB | Start an HTTP MJPEG video stream of the device screen. Opens a native ffplay window that connects to the stream URL. Requires an active scrcpy session. |
| stop_video_streamA | Stop the HTTP MJPEG video stream and close the viewer window for a device. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 38 tools
Each tool has a clearly distinct purpose, with categories like app, clipboard, file, screen, input, UI, and session management. Overlaps are minimal and descriptions clarify any potential confusion.
Most tools follow a verb_noun or noun_verb pattern consistently within categories (e.g., app_*, file_*, screen_*). Minor deviations like 'drag_drop' and 'screenshot' are present but do not significantly impact predictability.
38 tools is on the higher side but still justified by the broad scope of device control (apps, files, input, screen, UI, streaming). Paired operations (start/stop) contribute to the count without redundancy.
The tool surface covers app lifecycle, file transfer, input gestures, key events, clipboard, screen management, UI inspection, recording, and streaming. The inclusion of 'shell_exec' as a catch-all ensures no operation is impossible.