# martingeidobler/android-mcp-server [Health: Active]

**Category:** 📂 File Systems  
**Repository:** https://github.com/martingeidobler/android-mcp-server  
**GitHub Stars:** 66  
**npm Downloads (last month):** 709  
**Views:** 3  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/martingeidobler-android-mcp-server

## Description
21-tool Android device control via ADB — screenshots with compression, UI tree inspection, touch automation, logcat, and compound actions like tap-and-wait. One-command install via npx android-mcp-server.

## Tools
Capabilities this server exposes over MCP:

- **list_devices** — List connected Android devices and emulators
- **list_avds** — List available Android Virtual Devices
- **start_emulator** — Start an Android emulator. Waits up to 60s for it to come online.
- **screenshot** — Take a screenshot of the Android device. Returns the image for visual analysis. Optionally saves to a file path.
- **get_ui_tree** — Get the UI element hierarchy of the current screen. Returns interactive elements with their bounds, text, resource IDs, and state. Use this to find elements before tapping.
- **tap** — Tap at specific screen coordinates
- **tap_element** — Tap a UI element by its resource-id, text, or content-desc. Finds the element in the UI tree and taps its center.
- **tap_and_wait** — Tap element then wait for UI to settle and return the new UI tree. Combines tap + wait + get_ui_tree into a single fast operation.
- **type_text** — Type text into the currently focused input field
- **press_key** — Press a hardware/software key
- **swipe** — Perform a swipe gesture on the screen
- **long_press** — Long press at screen coordinates. Useful for context menus, drag handles, and press-and-hold interactions.
- **double_tap** — Double tap at screen coordinates. Useful for zoom-in gestures and double-tap interactions.
- **multi_tap** — Tap at the same coordinates multiple times with a fixed interval. Use for spam-tapping, incrementing counters, or testing rapid repeat actions.
- **tap_sequence** — Execute a multi-step action sequence. Supports taps, waits, text input, key presses, and swipes in any order.
- **scroll_to_element** — Scroll down repeatedly until an element matching the given criteria is visible
- **wait_for_element** — Wait for a UI element to appear on screen. Polls every 500ms.
- **launch_app** — Launch an Android app by package name
- **install_apk** — Install an APK file on the device
- **get_current_activity** — Get the currently displayed app and activity
- **adb_shell** — Run an arbitrary ADB shell command
- **get_logs** — Get device logcat output. Use to find crashes, exceptions, and errors after reproducing a bug.
- **clear_logs** — Clear the logcat buffer. Call this before reproducing a bug to get clean logs.
- **get_device_info** — Get device details: model, manufacturer, Android version, API level, screen size, and DPI.
- **pull_file** — Pull a file from the Android device to the local filesystem.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "android-mcp-server": {
    "command": "npx",
    "args": ["-y","android-mcp-server"]
  }
}
```

## Documentation

## What martingeidobler/android-mcp-server MCP server does

The martingeidobler/android-mcp-server MCP server connects an MCP-compatible assistant to Android devices and emulators through ADB. It covers both device management and application interaction, so an agent can discover connected targets, start an available Android Virtual Device, inspect the current screen, and operate the device without an SDK integration inside the application.

Screen analysis includes screenshots returned for visual inspection and UI hierarchy data containing element bounds, text, resource IDs, and state. Interaction tools support coordinate-based taps, element-based taps, typing into the focused field, key presses, swipes, long presses, double taps, repeated taps, scrolling, and waits for elements to appear. The `tap_and_wait` operation combines an element tap, UI settling delay, and updated tree retrieval.

## How it works

The server invokes ADB against a connected Android device or emulator. Agents can use `list_devices` and `list_avds` to identify targets, then use device-specific operations for multi-device workflows. `start_emulator` waits up to 60 seconds for the selected emulator to become available.

Application workflows can install an APK, launch an app by package name, inspect the foreground activity, and pull files from the device. `adb_shell` provides access to arbitrary ADB shell commands. For troubleshooting, an agent can clear the logcat buffer before reproducing a problem, then retrieve logs filtered by package, severity, or time. The server also reuses an ADB shell session and caches device information during a session, according to the project documentation.

## Setup and configuration

Install the martingeidobler/android-mcp-server MCP server with Node.js 18 or later and configure it as a local stdio MCP server:

```json
{
  "command": "npx",
  "args": ["-y", "android-mcp-server"]
}
```

The machine must have the Android SDK, ADB platform-tools, and the Android emulator available. A running emulator or connected Android device is also required for device operations. The server looks for the SDK in the default macOS location or through `ANDROID_HOME`; set that variable in the MCP client configuration when the SDK is installed elsewhere.

The README provides configurations for Claude Desktop, Cursor, and Windsurf, as well as a build-from-source path using `npm install`, `npm run build`, and the generated `dist/index.js` entry point. No application-side SDK changes are needed because interaction occurs through ADB.

## Tools and capabilities

- Discover connected devices and configured AVDs.
- Start an emulator and wait for it to connect.
- Capture compressed screenshots, optionally saving them locally.
- Read UI trees and target elements by resource ID, text, or content description.
- Automate taps, gestures, text entry, key presses, scrolling, waits, and action sequences.
- Install APKs, launch packages, inspect activities, and pull device files.
- Read and clear logcat output, including filtered diagnostic logs.
- Query model, manufacturer, Android version, API level, display size, and DPI.
- Run arbitrary ADB shell commands.

## Limitations and notes

This tool depends on a working local Android development environment and ADB connectivity. It is intended for Android devices and emulators, not remote device infrastructure described in the supplied material. Element-based actions depend on the target UI exposing matching text, resource IDs, or content descriptions; coordinate actions require suitable screen coordinates. The README describes screenshot compression with a maximum dimension of 1280 pixels, which may affect visual detail.

_Full upstream README: https://allmcps.com/mcp/martingeidobler-android-mcp-server/readme_

