Control Android devices over ADB from AI agents — safe-by-default, read-only by default, audited.
Connect Runs on your machine
claude mcp add mcp-android -e ANDROID_MODE=<ANDROID_MODE> -e ANDROID_ADB_PATH=<ANDROID_ADB_PATH> -e ANDROID_SERIAL=<ANDROID_SERIAL> -e ANDROID_TIMEOUT_MS=<ANDROID_TIMEOUT_MS> -e ANDROID_PACKAGE_ALLOWLIST=<ANDROID_PACKAGE_ALLOWLIST> -e ANDROID_PROTECTED_PACKAGES=<ANDROID_PROTECTED_PACKAGES> -e ANDROID_ALLOW_INSTALL=<ANDROID_ALLOW_INSTALL> -e ANDROID_ALLOW_SHELL=<ANDROID_ALLOW_SHELL> -e ANDROID_DRY_RUN=<ANDROID_DRY_RUN> -e ANDROID_AUDIT_LOG=<ANDROID_AUDIT_LOG> -- npx -y @dockndevai/[email protected]
{
"mcpServers": {
"mcp-android": {
"command": "npx",
"args": [
"-y",
"@dockndevai/[email protected]"
],
"env": {
"ANDROID_MODE": "<ANDROID_MODE>",
"ANDROID_ADB_PATH": "<ANDROID_ADB_PATH>",
"ANDROID_SERIAL": "<ANDROID_SERIAL>",
"ANDROID_TIMEOUT_MS": "<ANDROID_TIMEOUT_MS>",
"ANDROID_PACKAGE_ALLOWLIST": "<ANDROID_PACKAGE_ALLOWLIST>",
"ANDROID_PROTECTED_PACKAGES": "<ANDROID_PROTECTED_PACKAGES>",
"ANDROID_ALLOW_INSTALL": "<ANDROID_ALLOW_INSTALL>",
"ANDROID_ALLOW_SHELL": "<ANDROID_ALLOW_SHELL>",
"ANDROID_DRY_RUN": "<ANDROID_DRY_RUN>",
"ANDROID_AUDIT_LOG": "<ANDROID_AUDIT_LOG>"
}
}
}
}
{
"mcpServers": {
"mcp-android": {
"command": "npx",
"args": [
"-y",
"@dockndevai/[email protected]"
],
"env": {
"ANDROID_MODE": "<ANDROID_MODE>",
"ANDROID_ADB_PATH": "<ANDROID_ADB_PATH>",
"ANDROID_SERIAL": "<ANDROID_SERIAL>",
"ANDROID_TIMEOUT_MS": "<ANDROID_TIMEOUT_MS>",
"ANDROID_PACKAGE_ALLOWLIST": "<ANDROID_PACKAGE_ALLOWLIST>",
"ANDROID_PROTECTED_PACKAGES": "<ANDROID_PROTECTED_PACKAGES>",
"ANDROID_ALLOW_INSTALL": "<ANDROID_ALLOW_INSTALL>",
"ANDROID_ALLOW_SHELL": "<ANDROID_ALLOW_SHELL>",
"ANDROID_DRY_RUN": "<ANDROID_DRY_RUN>",
"ANDROID_AUDIT_LOG": "<ANDROID_AUDIT_LOG>"
}
}
}
}
{
"servers": {
"mcp-android": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@dockndevai/[email protected]"
],
"env": {
"ANDROID_MODE": "<ANDROID_MODE>",
"ANDROID_ADB_PATH": "<ANDROID_ADB_PATH>",
"ANDROID_SERIAL": "<ANDROID_SERIAL>",
"ANDROID_TIMEOUT_MS": "<ANDROID_TIMEOUT_MS>",
"ANDROID_PACKAGE_ALLOWLIST": "<ANDROID_PACKAGE_ALLOWLIST>",
"ANDROID_PROTECTED_PACKAGES": "<ANDROID_PROTECTED_PACKAGES>",
"ANDROID_ALLOW_INSTALL": "<ANDROID_ALLOW_INSTALL>",
"ANDROID_ALLOW_SHELL": "<ANDROID_ALLOW_SHELL>",
"ANDROID_DRY_RUN": "<ANDROID_DRY_RUN>",
"ANDROID_AUDIT_LOG": "<ANDROID_AUDIT_LOG>"
}
}
}
}
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools
This server runs locally, so its tools are listed by your MCP client once it starts.
Environment variables
| Name | Description |
|---|---|
ANDROID_MODEOptional | Access mode: read-only | read-write | admin. |
ANDROID_ADB_PATHOptional | Path to the adb binary (default: adb on PATH). |
ANDROID_SERIALOptional | Target device serial from `adb devices`. Empty = the only connected device. |
ANDROID_TIMEOUT_MSOptional | Per-command adb timeout in milliseconds. |
ANDROID_PACKAGE_ALLOWLISTOptional | Comma-separated package allowlist for launch/uninstall/clear. Empty = all. |
ANDROID_PROTECTED_PACKAGESOptional | Packages that can be launched/inspected but never uninstalled or data-cleared. |
ANDROID_ALLOW_INSTALLOptional | Enable install_apk / uninstall_app / clear_app_data (requires admin mode too). |
ANDROID_ALLOW_SHELLOptional | Enable run_shell (arbitrary adb shell; requires admin mode too). |
ANDROID_DRY_RUNOptional | Validate + log write/admin actions without executing them on the device. |
ANDROID_AUDIT_LOGOptional | Emit a JSON audit line to stderr per guarded operation (default true). |
Details
| Package | @dockndevai/[email protected] (NPM, stdio) |
| First published | 14 Oct 2026 |
| Last updated | 14 Oct 2026 |
| Registry name | io.github.dockndevai/mcp-android |
More ai and media servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
