mcp-android-emulator
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ADB_PATH | No | Path to ADB executable | adb |
| SCREENSHOT_DIR | No | Directory for temporary screenshots | /tmp/android-screenshots |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| screenshotA | Take a screenshot of the Android device/emulator and return it as a base64 image |
| get_ui_treeA | Get the UI element tree of the device (like DOM but for Android). Returns clickable elements with their coordinates. |
| tapB | Tap at the specified coordinates on the screen |
| tap_textA | Find an element by its text content and tap on it |
| type_textA | Type text into the currently focused input field. Unicode is supported via URL-encoding. Shell metacharacters (; & | ` $ ( ) < > \ quotes) are rejected. |
| swipeC | Perform a swipe gesture on the screen |
| scrollB | Scroll the screen in a direction |
| press_keyA | Press a system key (BACK, HOME, ENTER, etc) |
| launch_appA | Launch an application by its package name (e.g., com.android.chrome). Package name is validated against the Android package naming convention. |
| install_apkA | Install an APK file on the device. Path must end in .apk and contain no shell metacharacters. |
| list_packagesA | List installed packages on the device. Optional filter is applied in-process (JavaScript), never on the device shell. |
| get_logsB | Get device logs (logcat). Filtering is applied in-process, never on the device shell. |
| device_infoC | Get information about the connected device |
| clear_app_dataC | Clear all data for an application |
| force_stopB | Force stop an application |
| get_current_activityB | Get the currently focused activity/screen |
| wait_for_elementB | Wait for a UI element with specific text to appear |
| long_pressA | Perform a long press at the specified coordinates (useful for context menus) |
| clear_inputA | Clear the currently focused text input field |
| select_allA | Select all text in the currently focused input field |
| set_textA | Clear the current input field and type new text. Unicode is supported via URL-encoding. Shell metacharacters are rejected. |
| dragA | Perform a drag gesture from one point to another (slower than swipe, for drag & drop) |
| double_tapC | Perform a double tap at the specified coordinates |
| get_screen_sizeA | Get the screen dimensions and density of the device |
| is_element_visibleB | Check if an element with specific text or resource-id is visible on screen |
| get_element_boundsA | Get the exact bounds and center coordinates of an element |
| scroll_to_textA | Scroll the screen until an element with specific text is visible |
| wait_for_ui_stableA | Wait for the UI to stop changing (useful after animations) |
| wait_for_element_goneB | Wait for an element to disappear from the screen |
| multi_tapB | Perform multiple rapid taps at the same position |
| pinch_zoomA | Perform a pinch zoom gesture (requires Android 8+) |
| set_clipboardA | Set text to the device clipboard. Text is transferred via |
| get_clipboardA | Get the current device clipboard content |
| rotate_deviceA | Rotate the device to portrait or landscape orientation |
| tap_safeA | Tap at coordinates while avoiding system navigation bars |
| tap_elementA | Find and tap an element by text or resource-id (more reliable than tap_text) |
| get_focused_elementB | Get information about the currently focused UI element |
| assert_screen_containsC | Assert that specific text is visible on screen (useful for testing) |
| get_all_textA | Get all visible text elements on screen (useful for debugging and verification) |
| get_clickable_elementsA | Get all clickable elements on screen with their text, resource-id, and coordinates (useful when tap_text fails) |
| is_keyboard_visibleA | Check if the soft keyboard is currently visible on screen |
| get_focused_input_valueA | Get the current text value of the focused input field |
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/Anjos2/mcp-android-emulator'
If you have feedback or need assistance with the MCP directory API, please join our Discord server