Android logo

Android

Android MCP β€” ADB-based device, apps, UI, logcat, emulator, files, system, debug

Install Android

Pick your client, then add it in one click or paste the config.

STDIONode.js
~/Library/Application Support/Claude/claude_desktop_config.json
claude_desktop_config.json
{
  "mcpServers": {
    "android": {
      "command": "npx",
      "args": [
        "-y",
        "@us-all/android-mcp"
      ]
    }
  }
}

Settings β†’ Developer β†’ Edit Config, merge this into mcpServers, then fully quit and reopen Claude Desktop.

We couldn’t confirm it starts correctly

We ran the install command but it didn't respond within our test window β€” this can mean a slow first-time install rather than a real problem.

npx -y @us-all/android-mcp

No response to initialize.

This is an experimental automated check and can have false negatives β€” missing environment variables, a slow cold install, etc. It doesn’t necessarily mean something’s wrong. Last checked 6d ago.

Overview

Tools72

What Android lets your agent do. Expand a tool for its parameters.

Self-reported~240 tokens of context

Security & health

What it can reach and how reliably it runs β€” from our own checks, not the maintainer’s claims.

ActiveLast checked 3d ago

Recent health check succeeded.

5/5 checks healthy over the last 50d

Supply-chain signal

No high-severity advisories surfaced by our automated scan.

Critical 0High 0Medium 0Low 0

Scanned 12d ago via OSV.dev Β· @us-all/android-mcp (npm)

Adoption & maintenance

Factual signals from GitHub, npm, and our automated checks β€” not a rating.

GitHub stars14Stargazers on the source repository.
npm downloads528Package downloads in the last 30 days.
Last commit3mo agoMost recent push to the default branch.
Install checkInconclusiveDidn't respond in our test window β€” often a slow first install.
Tools exposed72Callable tools this server registers over MCP.
Directory activity7 viewsConfig copies, upvotes, and views on AllMCPs.

From the project README

Android MCP Server

The Android diagnostic & forensic MCP β€” when an app crashes, leaks memory, drains battery, or behaves unexpectedly, this is what you point at the device.

76 tools across logcat / dumpsys / package internals / system properties / processes. 5 MCP Prompts (crash-investigation, memory-leak-detection, permission-audit, app-startup-profile, ui-element-locator) and a device-health aggregation. Pure ADB, no Appium / uiautomator2 dependency. 2-tier security (write + shell gates).

npm downloads tools @us-all standard Glama MCP server

What it does that others don't

  • Diagnostic depth β€” logcat search/crash extraction, dumpsys (mem/gfx/cpu), getprop, processes, package internals, app intents, port forwards. Cross-platform competitors hide this surface.
  • MCP Prompts (5) β€” crash-investigation, memory-leak-detection, ui-element-locator, app-startup-profile, permission-audit. Workflow templates the model invokes directly.
  • Aggregation tools β€” device-health (battery + memory + cpu + network in one call), analyze-app (package info + memory + activities).
  • 2-tier security β€” ANDROID_MCP_ALLOW_WRITE (gates installs/taps/pushes) and ANDROID_MCP_ALLOW_SHELL (gates arbitrary adb shell) are separate flags. Distinct trust levels.
  • Pure ADB β€” no Appium, no uiautomator2, no Python bridge. Just the official Android Debug Bridge wrapped over child_process.
  • Token-efficient by design β€” 56 schema-trim sweep, ANDROID_TOOLS/ANDROID_DISABLE 9 categories, search-tools meta.
  • Apps SDK card β€” device-health renders as a snapshot card on ChatGPT clients (battery, RAM, Wi-Fi + 4-section grid) via _meta["openai/outputTemplate"]. Claude clients receive the same JSON content.
  • stdio + Streamable HTTP β€” defaults to stdio. Set MCP_TRANSPORT=http for ChatGPT Apps SDK or remote clients (Bearer auth via MCP_HTTP_TOKEN).

Try this β€” 5 prompts

Connect the server to Claude Desktop or Claude Code, then paste any of these:

  1. Crash investigation β€” "My app com.us-all.api keeps crashing on this Pixel 6 emulator. Pull the last crash log, the offending stack frames, and any recent permission changes."
  2. Memory leak detection β€” "Trace memory growth for com.us-all.api over the last 5 minutes. Show heap deltas, GC pressure, and the largest allocators."
  3. Battery drain attribution β€” "What's draining battery on this device? Top 5 consumers, duration of each, and current battery health."
  4. Permission audit β€” "Audit installed 3rd-party apps for dangerous permissions (location/camera/contacts/microphone). Flag any app that hasn't been used in the last 30 days but holds these."
  5. App startup profile β€” "Profile the cold-start of com.us-all.api β€” measure activity launch time, identify the slowest fragment init, and suggest where to add tracing."

When to use this vs mobile-next/mobile-mcp

mobile-next/mobile-mcp (4.7Kβ˜…) is the cross-platform action-oriented MCP. Different problem space:

mobile-mcp@us-all/android-mcp (this)
PlatformiOS + Android (cross-platform)Android only (specialist)
PostureAction-oriented ("drive the app via NL")Diagnostic ("tell me why it broke")
UI surfaceAccessibility-tree-first, action loopsUI hierarchy + screenshots + diagnostic dumps
Diagnostic depthminimallogcat / dumpsys / getprop / processes / crashes
Aggregationsβ€”device-health, analyze-app
MCP Promptsβ€”5 (diagnostic-themed)
Security gatesbasic2-tier (write + shell separate)
Distributionbroad (12+ IDE buttons)npm + Docker

Use both β€” they're complementary. mobile-mcp drives the device through your QA flows; this MCP tells you why it broke when something does. Especially:

  • mobile-mcp finds the bug via UI exploration β†’ this MCP captures the crash log + heap dump.
  • mobile-mcp can't tell you why startup is slow β†’ this MCP gives you dumpsys gfxinfo + activity launch timing.
  • mobile-mcp can't reproduce a permission denial β†’ this MCP shows the exact dumpsys package permission state and recent grants.

Install

Claude Desktop

config.json
{
  "mcpServers": {
    "android": {
      "command": "npx",
      "args": ["-y", "@us-all/android-mcp"],
      "env": {
        "ANDROID_MCP_ALLOW_WRITE": "true"
      }
    }
  }
}

Claude Code

Terminal
claude mcp add android -s user \
  -e ANDROID_MCP_ALLOW_WRITE=true \
  -e ANDROID_MCP_ALLOW_SHELL=true \
  -- npx -y @us-all/android-mcp

Docker

Terminal
docker run --rm \
  --device /dev/bus/usb \
  -e ANDROID_MCP_ALLOW_WRITE=true \
  ghcr.io/us-all/android-mcp-server:latest

Build from source

bash
git clone https://github.com/us-all/android-mcp-server.git
cd android-mcp-server && pnpm install && pnpm build
node dist/index.js

Prerequisites

  • ADB installed and on PATH (or set ADB_PATH)
  • Android device or emulator with USB debugging enabled
  • For multi-device setups: ANDROID_SERIAL=<serial> to target a specific one

Configuration

VariableRequiredDefaultDescription
ANDROID_HOME❌auto-detectAndroid SDK path
ADB_PATH❌adb (PATH)Path to ADB binary
ANDROID_SERIAL❌auto (single device)Target device serial
ANDROID_MCP_ALLOW_WRITE❌falseEnable write operations (install, tap, push)
ANDROID_MCP_ALLOW_SHELL❌falseEnable arbitrary adb shell execution
ANDROID_TOOLSβŒβ€”Comma-sep allowlist of categories. Biggest token saver.
ANDROID_DISABLEβŒβ€”Comma-sep denylist. Ignored when ANDROID_TOOLS is set.
MCP_TRANSPORT❌stdiohttp to enable Streamable HTTP transport
MCP_HTTP_TOKENconditionalβ€”Bearer token. Required when MCP_TRANSPORT=http
MCP_HTTP_PORT❌3000HTTP listen port
MCP_HTTP_HOST❌127.0.0.1HTTP bind host (DNS rebinding protection auto-enabled for localhost)
MCP_HTTP_SKIP_AUTH❌falseSkip Bearer auth β€” e.g. behind a reverse proxy that handles it

Categories (9): device, apps, ui, logcat, emulator, files, system, debug, shell (always-gated by ANDROID_MCP_ALLOW_SHELL), plus always-on meta.

When MCP_TRANSPORT=http: POST /mcp (Bearer-auth JSON-RPC) + GET /health (public liveness).

Token efficiency

ScenarioToolsSchema tokensvs default
default (all categories)769,200β€”
typical (ANDROID_TOOLS=device,ui,apps,logcat)375,000βˆ’46%
narrow (ANDROID_TOOLS=device,ui)192,500βˆ’73%

Plus search-tools meta-tool (always enabled) for runtime tool discovery.

Read-only mode (default)

By default, only read operations are permitted. Write operations (tap, install-app, push-file, etc.) return an error unless ANDROID_MCP_ALLOW_WRITE=true. Shell command execution requires a separate ANDROID_MCP_ALLOW_SHELL=true for additional security β€” even with write enabled, raw shell stays blocked unless this is explicitly set.

MCP Prompts (5)

Workflow templates available via MCP prompts/list:

  • crash-investigation β€” pull crash logs + stack frames + recent permission changes for a target package.
  • memory-leak-detection β€” track heap delta over a window; cluster by allocator.
  • ui-element-locator β€” find a UI element by visual + accessibility hints; return tap coordinates.
  • app-startup-profile β€” cold-start profile: activity launch + fragment init + first frame.
  • permission-audit β€” flag dangerous permissions held by under-used 3rd-party apps.

MCP Resources

URI-based read-only entities:

  • android://devices β€” connected devices
  • android://device/{serial} β€” device details (model/brand/version/display)
  • android://app/{packageName}/activities β€” activities exposed by a package (exported/launchable flags)
  • android://device/{serial}/processes β€” running processes

Tools (76)

9 categories. Use search-tools to discover at runtime; full list collapsed below.

CategoryTools
System (battery / network / settings / display / orientation / port-fwd / wifi / mobile-data)19
Apps (install / launch / permissions / intents / data clear)14
UI (tap / swipe / screenshot / hierarchy / accessibility / annotated tap-by-index / screen recording)14
Emulator (AVD start/stop, snapshot mgmt)7
Device (list / info / properties / wireless connect)5
Debug (bugreport / mem / gfx / cpu / doctor)5
Logcat (capture / filter / clear / crash extract)4
Files (list / pull / push / delete)4
Shell (gated execute-shell)1
Aggregations (device-health, analyze-app)2
Meta (search-tools)1
Full tool list

Device (5)

list-devices, get-device-info, get-device-properties, connect-device, disconnect-device

Apps (14)

list-packages, get-package-info, install-app, uninstall-app, launch-app, stop-app, clear-app-data, grant-permission, revoke-permission, open-url, send-broadcast, get-current-activity, is-app-installed, get-app-intents

Reviews

No reviews yet β€” be the first to share how it worked for you.

Frequently Asked Questions about Android

android is an MCP server that uses Android Debug Bridge (ADB) to diagnose Android devices, applications, and emulators. It provides 76 tools covering logcat, dumpsys, package internals, system properties, processes, files, and related inspection, plus five workflow prompts and device-health aggregation. It runs without Appium or uiautomator2.

The server diagnoses crashes, memory issues, battery drain, permissions, startup performance, and unexpected Android behavior. Its tools inspect logcat, dumpsys data, package internals, system properties, processes, app intents, port forwards, UI hierarchy, screenshots, and device health.

Yes, it includes crash-investigation and memory-leak-detection MCP prompts. These workflows can help retrieve crash logs and stack frames, examine memory growth and heap deltas, and investigate GC pressure or large allocators.

The server uses separate security gates for write operations and arbitrary shell commands. ANDROID_MCP_ALLOW_WRITE controls actions such as installs, taps, and pushes, while ANDROID_MCP_ALLOW_SHELL controls arbitrary adb shell access.

The server supports stdio and Streamable HTTP transports. Stdio is the default; setting MCP_TRANSPORT=http enables HTTP for ChatGPT Apps SDK or remote clients, with Bearer authentication configured through MCP_HTTP_TOKEN.

Related MCP servers

Add a badge to your READMEShow it’s listed β€” live SVG, Markdown or HTML.

AllMCPs Directory Badge

Full Badge Customizer

Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.

Badge Style:
Live Dynamic SVG PreviewAndroid AllMCPs Directory Badge
Markdown (GitHub README)
[![AllMCPs](https://allmcps.com/api/badge/android?style=directory)](https://allmcps.com/mcp/android)
HTML Embed
<a href="https://allmcps.com/mcp/android"><img src="https://allmcps.com/api/badge/android?style=directory" alt="Android on AllMCPs" /></a>