io.github.us-all/android
Android MCP โ ADB-based device, apps, UI, logcat, emulator, files, system, debug
Ask AI about io.github.us-all/android
Powered by Claude ยท Grounded in docs
I know everything about io.github.us-all/android. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
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.
75 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-healthaggregation. Pure ADB, no Appium / uiautomator2 dependency. 2-tier security (write + shell gates).
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) andANDROID_MCP_ALLOW_SHELL(gates arbitraryadb 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_DISABLE9 categories,search-toolsmeta. - Apps SDK card โ
device-healthrenders 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=httpfor ChatGPT Apps SDK or remote clients (Bearer auth viaMCP_HTTP_TOKEN).
Try this โ 5 prompts
Connect the server to Claude Desktop or Claude Code, then paste any of these:
- Crash investigation โ "My app
com.us-all.apikeeps crashing on this Pixel 6 emulator. Pull the last crash log, the offending stack frames, and any recent permission changes." - Memory leak detection โ "Trace memory growth for
com.us-all.apiover the last 5 minutes. Show heap deltas, GC pressure, and the largest allocators." - Battery drain attribution โ "What's draining battery on this device? Top 5 consumers, duration of each, and current battery health."
- 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."
- 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) | |
|---|---|---|
| Platform | iOS + Android (cross-platform) | Android only (specialist) |
| Posture | Action-oriented ("drive the app via NL") | Diagnostic ("tell me why it broke") |
| UI surface | Accessibility-tree-first, action loops | UI hierarchy + screenshots + diagnostic dumps |
| Diagnostic depth | minimal | logcat / dumpsys / getprop / processes / crashes |
| Aggregations | โ | device-health, analyze-app |
| MCP Prompts | โ | 5 (diagnostic-themed) |
| Security gates | basic | 2-tier (write + shell separate) |
| Distribution | broad (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 packagepermission state and recent grants.
Install
Claude Desktop
{
"mcpServers": {
"android": {
"command": "npx",
"args": ["-y", "@us-all/android-mcp"],
"env": {
"ANDROID_MCP_ALLOW_WRITE": "true"
}
}
}
}
Claude Code
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
docker run --rm \
--device /dev/bus/usb \
-e ANDROID_MCP_ALLOW_WRITE=true \
ghcr.io/us-all/android-mcp-server:latest
Build from source
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 setADB_PATH) - Android device or emulator with USB debugging enabled
- For multi-device setups:
ANDROID_SERIAL=<serial>to target a specific one
Configuration
| Variable | Required | Default | Description |
|---|---|---|---|
ANDROID_HOME | โ | auto-detect | Android SDK path |
ADB_PATH | โ | adb (PATH) | Path to ADB binary |
ANDROID_SERIAL | โ | auto (single device) | Target device serial |
ANDROID_MCP_ALLOW_WRITE | โ | false | Enable write operations (install, tap, push) |
ANDROID_MCP_ALLOW_SHELL | โ | false | Enable 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 | โ | stdio | http to enable Streamable HTTP transport |
MCP_HTTP_TOKEN | conditional | โ | Bearer token. Required when MCP_TRANSPORT=http |
MCP_HTTP_PORT | โ | 3000 | HTTP listen port |
MCP_HTTP_HOST | โ | 127.0.0.1 | HTTP bind host (DNS rebinding protection auto-enabled for localhost) |
MCP_HTTP_SKIP_AUTH | โ | false | Skip 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
| Scenario | Tools | Schema tokens | vs default |
|---|---|---|---|
| default (all categories) | 75 | 9,200 | โ |
typical (ANDROID_TOOLS=device,ui,apps,logcat) | 37 | 5,000 | โ46% |
narrow (ANDROID_TOOLS=device,ui) | 19 | 2,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 devicesandroid://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 (75)
9 categories. Use search-tools to discover at runtime; full list collapsed below.
| Category | Tools |
|---|---|
| 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 / annotated tap-by-index / screen recording) | 13 |
| 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
UI Automation (13)
take-screenshot, dump-ui-hierarchy, tap, long-press, swipe, input-text, press-key, drag-and-drop, start-screen-recording, pull-screen-recording, double-tap, take-annotated-screenshot, tap-element
Logcat (4)
get-logcat, clear-logcat, search-logcat, get-crash-logs
Emulator (7)
list-avds, start-emulator, stop-emulator, list-snapshots, load-snapshot, save-snapshot, delete-snapshot
Files (4)
list-files, pull-file, push-file, delete-file
System (19)
get-battery-info, get-network-info, change-setting, get-setting, set-display-size, set-display-density, keep-screen-on, port-forward, reverse-forward, list-forwards, remove-forward, toggle-wifi, toggle-mobile-data, open-notification, lock-device, unlock-device, get-orientation, set-orientation, list-settings
Debug (5)
bugreport, get-mem-info, get-gfx-info, get-cpu-info, doctor
Shell (1)
execute-shell โ gated by ANDROID_MCP_ALLOW_SHELL
Aggregations
device-health โ battery + memory + cpu + network in one call (~7KB response, 4 sub-systems with caveats).
analyze-app โ package info + memory + activities aggregation.
Meta
search-tools โ query other tools by keyword; always enabled.
Architecture
Claude โ MCP stdio โ src/index.ts
โโโ adb.ts (execFile wrapper)
โโโ tools/utils.ts (wrapToolHandler, shellEscape, validation)
โโโ tools/{device,apps,ui,logcat,emulator,files,system,debug,shell,aggregations}.ts
โ
ADB CLI (USB / TCP-IP / Emulator)
โ
Android Device
Built on @us-all/mcp-toolkit:
extractFieldsโ token-efficient response projections (skipped for ADB flat-array endpoints)aggregate(fetchers, caveats)โ fan-out helper fordevice-health/analyze-appcreateWrapToolHandlerโWriteBlockedError/ShellBlockedErrorpassthrough + structured ADB errors ({code, stderr})wrapImageToolHandler(Android-only) โ base64 PNG sanitizationsearch-toolsmeta-tool
Security
- Read-only by default. Writes blocked without
ANDROID_MCP_ALLOW_WRITE=true. - Shell gating separate.
execute-shellblocked withoutANDROID_MCP_ALLOW_SHELL=trueeven with write enabled โ distinct trust levels. - Shell injection safe.
shellEscapefor single-quote-based escape; input validation via zod regex whitelists for setting keys, package names, permissions, components, broadcast actions/extras. - Path-traversal blocked. Device paths require absolute + no
..+ no shell metachars. - Error sanitization. API keys, tokens, passwords redacted from all error outputs.
Tech stack
Node.js 20+ โข TypeScript strict ESM โข pnpm โข @modelcontextprotocol/sdk 1.27+ โข zod v4 โข fast-xml-parser โข vitest (fork pool isolation).
