scrcpy-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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. |
| versionA | Report which scrcpy version is being used by the MCP server. The version is detected from the SCRCPY_SERVER_VERSION environment variable, the scrcpy --version binary, or a built-in default. |
| 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_onA | Wake the device screen (turn screen on) |
| screen_offB | Turn the device screen off |
| connect_wifiA | Enable WiFi ADB and connect to the device wirelessly. Returns the connection address. |
| disconnect_wifiB | Disconnect from a wireless ADB device |
| rotate_deviceA | 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_stopB | Stop screen recording and optionally pull the file to the host. |
| tapB | Tap at the specified screen coordinates |
| swipeB | Perform a swipe gesture from one point to another |
| long_pressB | Perform a long press at the specified coordinates |
| drag_dropB | 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 input field. Reports device context (screen, app, session). When submit=true, auto-detects and taps the send button. Optionally target a specific input field by text label, resource ID, or content description instead of auto-focus. |
| key_eventB | Send a key event to the device. Supports keycodes like HOME, BACK, ENTER, VOLUME_UP, etc. |
| scrollA | Scroll at the specified position. dy=negative scrolls UP (reveals content above), dy=positive scrolls DOWN (reveals content below). Use large values (e.g. -400, 500) for meaningful scroll distance. |
| app_startA | Launch an app by package name. PREFERRED over swiping the app drawer / manual UI navigation. Uses scrcpy START_APP (fast) when session is active, falls back to ADB |
| app_stopC | Force-stop an app on the device. |
| app_installB | Install an APK file on the device from the host machine. |
| app_uninstallA | Uninstall an app from the device. |
| app_listA | List installed packages on the device. Optionally filter by name or restrict to system/third-party apps. Use to find package names for app_start. |
| 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. |
| ui_find_elementA | Find UI elements on screen by text, resource ID, class name, or content description. Returns matching elements with their tap coordinates. |
| ui_tap_elementA | Find a UI element by text, resource ID, class name, or content description, and immediately tap it. Smartly finds the nearest input field when targeting a label. |
| ui_get_stateA | Dump the UI and return a clean Markdown-like tree of visible and clickable elements with viewport coordinates. NOTE: WebView elements may report identical y-coordinates when scrolled; use scroll_to_element first to bring target fields into view. |
| ui_wait_for_elementB | Wait for a UI element to appear on screen. Polls the UI until the element matches criteria or timeout is reached. |
| ui_smart_fillA | Find a UI element, tap it, inject text, and optionally press ENTER. Smartly finds the nearest input field when targeting a label. |
| waitA | Wait for a specified number of milliseconds. Use between actions to wait for animations, page loads, or network responses. |
| scroll_to_elementB | Scroll the page to bring a specific UI element into view. Tries to find the element by text, then swipes up/down until it becomes visible or timeout is reached. |
| form_fillB | Fill a multi-field form. Provide an array of {label, value} pairs. For each pair, finds the nearest input field to the label text, taps it, and types the value. Handles checkboxes and dropdowns by label matching. |
| 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_pushA | Push a file from the host machine to the device. |
| file_pullC | Pull a file from the device to the host machine. |
| file_listB | List directory contents on the device. |
| start_video_streamA | Start an HTTP MJPEG video stream of the device screen and open a viewer window (ffplay). Starts a scrcpy session automatically if needed. |
| 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 | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/1999AZZAR/scrcpy-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server