Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.dev-jackson/androidbuild-mcp

NPM · @ASJACKSON/ANDROIDBUILD-MCP · SCANNED SEP 30

Build, deploy, drive and debug Android apps: Gradle, emulators, adb, logcat, UI automation

0 this week 83 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 42 of 118 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability80
  • AI-judged instruction clarity (excellent).Pass
  • Tool/resource definitions use about 4101 tokens (~77/item across 53 items; 53 tools + 0 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "uninstall_app" implies "uninstall" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 53 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the io.github.dev-jackson/androidbuild-mcp server?

io.github.dev-jackson/androidbuild-mcp runs locally as an npm package, launched with npx -y @asjackson/androidbuild-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @asjackson/androidbuild-mcp

# add to Claude Code
claude mcp add dev-jackson-androidbuild-mcp -- npx -y @asjackson/androidbuild-mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "dev-jackson-androidbuild-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@asjackson/androidbuild-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "dev-jackson-androidbuild-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@asjackson/androidbuild-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add dev-jackson-androidbuild-mcp -- npx -y @asjackson/androidbuild-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "dev-jackson-androidbuild-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@asjackson/androidbuild-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add dev-jackson-androidbuild-mcp --command npx --arg -y --arg @asjackson/androidbuild-mcp
# ~/.hermes/config.yaml
mcp_servers:
  dev-jackson-androidbuild-mcp:
    command: "npx"
    args: ["-y", "@asjackson/androidbuild-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "dev-jackson-androidbuild-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@asjackson/androidbuild-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add dev-jackson-androidbuild-mcp -t stdio -c npx -a -y @asjackson/androidbuild-mcp
// mcp.json
{
  "mcpServers": {
    "dev-jackson-androidbuild-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@asjackson/androidbuild-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 30 Sept 26 0
    • Stability: 0.97 → pass security
  • 29 Sept 26 +1
    • Security disclosure: unverified → fail ▼ functional
  • 28 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 27 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 25 Sept 26 −2
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 24 Sept 26 0
    • Stability: 0.97 → pass security
  • 23 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 21 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 30 Sept 2026 · Analysed npm/@asjackson/androidbuild-mcp@0.1.1

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Dependencies 118 packages
Packages resolved 118
Stale 42
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 53 exposed · ~4,101 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
boot_emulator ~89

Boot an AVD in the background and wait until Android finishes booting. Returns the adb serial. Set wipeData to factory-reset the AVD on boot.

NameTypeReqDescription
avdNamestringyesAVD name from list_avds
timeoutSecondsinteger–Boot timeout (default 180)
wipeDataboolean–Factory-reset the AVD (erases all data)

No output schema declared.

No examples provided.

build_app ~92

Build an APK with Gradle (assemble<Variant>). On failure returns compact compiler errors with file:line. On success returns the APK path.

NameTypeReqDescription
modulestring–Gradle module, e.g. 'app' (defaults to session)
projectDirstring–Project root (defaults to session)
variantstring–Build variant, e.g. 'debug' (defaults to session)

No output schema declared.

No examples provided.

build_run ~130

Build the APK, install it on a device/emulator (adb install -r), and launch the app. Needs appId (session default or argument) to launch.

NameTypeReqDescription
appIdstring–Application id to launch (defaults to session)
modulestring–Gradle module, e.g. 'app' (defaults to session)
projectDirstring–Project root (defaults to session)
serialstring–Device serial (defaults to session or the only device)
variantstring–Build variant, e.g. 'debug' (defaults to session)

No output schema declared.

No examples provided.

clean ~29

Run gradle clean for the project.

NameTypeReqDescription
projectDirstring–Project root (defaults to session)

No output schema declared.

No examples provided.

clear_app_data ~59

Clear all data of an app (pm clear) — resets it to a fresh-install state.

NameTypeReqDescription
appIdstring–Application id (defaults to session)
serialstring–Device serial (defaults to session or the only device)

No output schema declared.

No examples provided.

create_avd ~102

Create an AVD from an installed system image (e.g. 'system-images;android-35;google_apis;arm64-v8a'). If systemImage is omitted, lists the installed images to choose from.

NameTypeReqDescription
devicestring–Device profile, e.g. 'pixel_7' (default: generic)
namestringyesName for the new AVD
systemImagestring–Installed system-images package id

No output schema declared.

No examples provided.

delete_avd ~27

Delete an AVD permanently.

NameTypeReqDescription
namestringyesAVD name to delete

No output schema declared.

No examples provided.

discover_projects ~65

Find Android/Gradle projects (directories with settings.gradle[.kts]) under a path. Use the result to session_set_defaults projectDir.

NameTypeReqDescription
maxDepthinteger–Max directory depth (default 3)
searchPathstringyesDirectory to search from

No output schema declared.

No examples provided.

doctor ~45

Check the Android development environment: SDK location, adb, emulator, avdmanager, Java, and connected devices. Run this first if any other tool fails with a missing-binary error.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

drag ~203

Drag an element from one point to another (input draganddrop). Instead of pixels you can pass screen percentages (0-1): safer when estimating positions from a screenshot image.

NameTypeReqDescription
durationMsinteger–Drag duration (default 800ms)
serialstring–Device serial (defaults to session or the only device)
x1integer–Start X in device pixels
x1Pctnumber–Start X as fraction of width (0-1)
x2integer–End X in device pixels
x2Pctnumber–End X as fraction of width (0-1)
y1integer–Start Y in device pixels
y1Pctnumber–Start Y as fraction of height (0-1)
y2integer–End Y in device pixels
y2Pctnumber–End Y as fraction of height (0-1)

No output schema declared.

No examples provided.

get_apk_path ~79

Locate the most recent built APK for a module/variant without building.

NameTypeReqDescription
modulestring–Gradle module, e.g. 'app' (defaults to session)
projectDirstring–Project root (defaults to session)
variantstring–Build variant, e.g. 'debug' (defaults to session)

No output schema declared.

No examples provided.

get_app_id ~81

Get the applicationId (package name) of a module, parsed from its build.gradle(.kts). Needed by install/launch/log tools.

NameTypeReqDescription
modulestring–Module name (defaults to session)
projectDirstring–Project root (defaults to session)
variantstring–Variant, used to warn about applicationIdSuffix

No output schema declared.

No examples provided.

get_app_info ~60

Get installed-app info from the device: version, target/min SDK, install path, running PID.

NameTypeReqDescription
appIdstring–Application id (defaults to session)
serialstring–Device serial (defaults to session or the only device)

No output schema declared.

No examples provided.

get_coverage_report ~131

Run a coverage Gradle task (Kover or Jacoco) and summarize line coverage per package. Tries koverXmlReport<Variant> by default; pass 'task' for a custom one (e.g. jacocoTestReport). The project must apply a coverage plugin.

NameTypeReqDescription
modulestring–Module (defaults to session)
projectDirstring–Project root (defaults to session)
skipRunboolean–Only parse an existing report without running Gradle
taskstring–Coverage task to run, e.g. 'koverXmlReportDebug'

No output schema declared.

No examples provided.

get_crash_logs ~55

Dump the crash log buffer (Java exceptions, native crashes, ANRs).

NameTypeReqDescription
linesinteger–Max lines (default 300)
serialstring–Device serial (defaults to session or the only device)

No output schema declared.

No examples provided.

get_file_coverage ~77

Show covered/uncovered line numbers of one source file from the latest coverage report (run get_coverage_report first).

NameTypeReqDescription
filestringyesSource file name, e.g. 'BookRepository.kt'
modulestring–Module (defaults to session)
projectDirstring–Project root (defaults to session)

No output schema declared.

No examples provided.

get_logs ~92

One-shot dump of recent logcat lines, optionally filtered by app (must be running) and/or tag.

NameTypeReqDescription
appIdstring–Filter to this app (defaults to session appId if running)
linesinteger–Max lines (default 200)
serialstring–Device serial (defaults to session or the only device)
tagstring–Filter to this log tag

No output schema declared.

No examples provided.

install_app ~60

Install an APK on a device/emulator (adb install -r).

NameTypeReqDescription
apkPathstringyesPath to the APK (from build_app / get_apk_path)
serialstring–Device serial (defaults to session or the only device)

No output schema declared.

No examples provided.

key_press ~69

Press a hardware/navigation key: BACK, HOME, ENTER, TAB, DELETE, ESCAPE, MENU, APP_SWITCH, DPAD_*, or any KEYCODE_ name.

NameTypeReqDescription
keystringyesKey name
serialstring–Device serial (defaults to session or the only device)

No output schema declared.

No examples provided.

key_sequence ~48

Press several keys in order (same names as key_press).

NameTypeReqDescription
keysarrayyesKeys in press order
serialstring–Device serial (defaults to session or the only device)

No output schema declared.

No examples provided.

kill_emulator ~37

Shut down a running emulator (adb emu kill).

NameTypeReqDescription
serialstring–Emulator serial (defaults to session or the only device)

No output schema declared.

No examples provided.

launch_app ~53

Launch an app by application id (resolves the launcher activity automatically).

NameTypeReqDescription
appIdstring–Application id (defaults to session)
serialstring–Device serial (defaults to session or the only device)

No output schema declared.

No examples provided.

lint ~78

Run Android Lint (lint<Variant>) and return the textual report summary.

NameTypeReqDescription
modulestring–Gradle module, e.g. 'app' (defaults to session)
projectDirstring–Project root (defaults to session)
variantstring–Build variant, e.g. 'debug' (defaults to session)

No output schema declared.

No examples provided.

list_avds ~21

List available Android Virtual Devices and which ones are currently running.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_devices ~27

List connected devices and emulators with serial, state, model, Android version and API level.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_modules ~36

List modules declared in settings.gradle(.kts) of the project.

NameTypeReqDescription
projectDirstring–Project root (defaults to session)

No output schema declared.

No examples provided.

list_variants ~66

List build variants of a module by inspecting its Gradle assemble tasks (runs './gradlew <module>:tasks').

NameTypeReqDescription
modulestring–Module name, e.g. 'app' (defaults to session)
projectDirstring–Project root (defaults to session)

No output schema declared.

No examples provided.

long_press ~135

Long-press the screen at coordinates. Instead of pixels you can pass screen percentages (0-1): safer when estimating positions from a screenshot image.

NameTypeReqDescription
durationMsinteger–Press duration (default 1000ms — launchers ignore shorter holds)
serialstring–Device serial (defaults to session or the only device)
xinteger–X in device pixels
xPctnumber–X as fraction of screen width (0-1)
yinteger–Y in device pixels
yPctnumber–Y as fraction of screen height (0-1)

No output schema declared.

No examples provided.

record_video_start ~66

Start recording the device screen (adb screenrecord, max 3 minutes). Returns a recordingId for record_video_stop.

NameTypeReqDescription
serialstring–Emulator serial (defaults to session or the only device)
timeLimitSecondsinteger–Auto-stop after (default 180)

No output schema declared.

No examples provided.

record_video_stop ~36

Stop a screen recording and pull the MP4 to the local machine.

NameTypeReqDescription
recordingIdstringyesId from record_video_start

No output schema declared.

No examples provided.

scaffold_android_project ~94

Create a new minimal Jetpack Compose app project (single module, version catalog, Gradle wrapper included) ready to build with build_app.

NameTypeReqDescription
appNamestringyesApp name, e.g. 'My Notes'
directorystringyesDirectory to create the project in (must not exist or be empty)
packageNamestringyesApplication id, e.g. 'com.example.mynotes'

No output schema declared.

No examples provided.

screenshot ~87

Take a screenshot of the device/emulator screen and return it as an image. With annotate: true (needs the Google android CLI), UI elements get numbered bounding boxes — including text inside images/WebViews that snapshot_ui cannot see.

NameTypeReqDescription
annotateboolean–Draw labeled bounding boxes around UI elements (vision-based)
serialstring–Device serial (defaults to session or the only device)

No output schema declared.

No examples provided.

scroll ~101

Scroll the screen in a direction (computes a safe swipe in the middle of the screen, avoiding the status bar and navigation areas). Prefer this over raw swipe for scrolling.

NameTypeReqDescription
amountnumber–Fraction of screen to scroll (default 0.5)
directionstringyes'down' reveals content below (finger moves up), 'up' reveals content above
serialstring–Device serial (defaults to session or the only device)

No output schema declared.

No examples provided.

session_clear_defaults ~35

Clear all session defaults, or only the listed keys.

NameTypeReqDescription
keysarray–Keys to clear; omit to clear everything

No output schema declared.

No examples provided.

session_set_defaults ~117

Set default projectDir/module/variant/serial/appId used by other tools when the corresponding argument is omitted. Set these once after discovering the project.

NameTypeReqDescription
appIdstring–Application id (package name)
modulestring–Gradle module, e.g. 'app'
projectDirstring–Absolute path to the Gradle project root
serialstring–adb device serial, e.g. emulator-5554
variantstring–Build variant, e.g. 'debug'

No output schema declared.

No examples provided.

session_show_defaults ~15

Show the current session defaults.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

set_appearance ~52

Switch a device/emulator between dark and light mode (cmd uimode night).

NameTypeReqDescription
modestringyesAppearance to set
serialstring–Emulator serial (defaults to session or the only device)

No output schema declared.

No examples provided.

set_emulator_location ~58

Set the GPS location of a running emulator.

NameTypeReqDescription
latitudenumberyesLatitude in decimal degrees
longitudenumberyesLongitude in decimal degrees
serialstring–Emulator serial (defaults to session or the only device)

No output schema declared.

No examples provided.

show_gradle_config ~52

Show toolchain versions: Gradle (from wrapper properties) and everything in the version catalog (AGP, Kotlin, Compose, ...).

NameTypeReqDescription
projectDirstring–Project root (defaults to session)

No output schema declared.

No examples provided.

snapshot_ui ~96

Dump the current UI as a compact list of actionable elements (text, id, content-desc, tap coordinates). Use the @(x,y) centers with tap/long_press. Text-heavy screens are capped; pass 'filter' to search within them.

NameTypeReqDescription
filterstring–Only include elements whose text/desc/id contains this (case-insensitive)
serialstring–Device serial (defaults to session or the only device)

No output schema declared.

No examples provided.

start_log_capture ~130

Start capturing logcat to a file in the background. Filter by app (via its pid) and/or tag. Returns a sessionId for stop_log_capture. The app must be running to filter by appId.

NameTypeReqDescription
appIdstring–Only capture logs of this app (defaults to session appId; must be running)
clearboolean–Clear the log buffer first (default true)
serialstring–Device serial (defaults to session or the only device)
tagstring–Only capture this log tag (logcat '<tag>:V *:S')

No output schema declared.

No examples provided.

statusbar_demo_mode ~87

Enable clean status bar for screenshots (fixed clock, full battery, full signal) or disable it.

NameTypeReqDescription
clockstring–Clock as hhmm, e.g. '1200' (default 1200)
enabledbooleanyestrue to enter demo mode, false to exit
serialstring–Emulator serial (defaults to session or the only device)

No output schema declared.

No examples provided.

stop_app ~49

Force-stop a running app (am force-stop).

NameTypeReqDescription
appIdstring–Application id (defaults to session)
serialstring–Device serial (defaults to session or the only device)

No output schema declared.

No examples provided.

stop_gradle ~41

Stop the project's Gradle daemons (use when a build hangs or to free memory).

NameTypeReqDescription
projectDirstring–Project root (defaults to session)

No output schema declared.

No examples provided.

stop_log_capture ~55

Stop a log capture session and return the file path plus the last lines.

NameTypeReqDescription
sessionIdstringyesSession id from start_log_capture
tailLinesinteger–Lines of tail to inline (default 60)

No output schema declared.

No examples provided.

swipe ~210

Swipe from one point to another (scrolling, dismissing). For drag-and-drop use drag instead. Instead of pixels you can pass screen percentages (0-1): safer when estimating positions from a screenshot image.

NameTypeReqDescription
durationMsinteger–Swipe duration (default 300ms)
serialstring–Device serial (defaults to session or the only device)
x1integer–Start X in device pixels
x1Pctnumber–Start X as fraction of width (0-1)
x2integer–End X in device pixels
x2Pctnumber–End X as fraction of width (0-1)
y1integer–Start Y in device pixels
y1Pctnumber–Start Y as fraction of height (0-1)
y2integer–End Y in device pixels
y2Pctnumber–End Y as fraction of height (0-1)

No output schema declared.

No examples provided.

tap ~129

Tap the screen. Coordinates from snapshot_ui are exact device pixels — prefer them over estimating positions by looking at a screenshot image. Instead of pixels you can pass screen percentages (0-1): safer when estimating positions from a screenshot image.

NameTypeReqDescription
serialstring–Device serial (defaults to session or the only device)
xinteger–X in device pixels
xPctnumber–X as fraction of screen width (0-1)
yinteger–Y in device pixels
yPctnumber–Y as fraction of screen height (0-1)

No output schema declared.

No examples provided.

tap_element ~85

Tap element #N from the most recent screenshot { annotate: true } capture — no coordinate math needed. The mapping is exact even if your client displays the image scaled. Re-capture after the UI changes: element numbers go stale.

NameTypeReqDescription
elementintegeryesElement number from the annotated screenshot
serialstring–Device serial (defaults to session or the only device)

No output schema declared.

No examples provided.

test_app ~115

Run local JVM unit tests (test<Variant>UnitTest) and return a parsed pass/fail summary with failure messages.

NameTypeReqDescription
modulestring–Gradle module, e.g. 'app' (defaults to session)
projectDirstring–Project root (defaults to session)
testsstring–Filter passed to --tests, e.g. 'com.foo.MyTest' or '*MyTest*'
variantstring–Build variant, e.g. 'debug' (defaults to session)

No output schema declared.

No examples provided.

test_instrumented ~95

Run instrumented tests on a connected device/emulator (connected<Variant>AndroidTest) and return a parsed summary. Requires a booted device.

NameTypeReqDescription
modulestring–Gradle module, e.g. 'app' (defaults to session)
projectDirstring–Project root (defaults to session)
variantstring–Build variant, e.g. 'debug' (defaults to session)

No output schema declared.

No examples provided.

Common questions

What is the io.github.dev-jackson/androidbuild-mcp server?

io.github.dev-jackson/androidbuild-mcp is listed in the public MCP registry as io.github.dev-jackson/androidbuild-mcp. Build, deploy, drive and debug Android apps: Gradle, emulators, adb, logcat, UI automation. This page covers its npm package (@asjackson/androidbuild-mcp).

Is the io.github.dev-jackson/androidbuild-mcp server safe to use?

io.github.dev-jackson/androidbuild-mcp scores 83 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 30 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.dev-jackson/androidbuild-mcp server expose?

io.github.dev-jackson/androidbuild-mcp exposes 53 tools: doctor, session_set_defaults, session_show_defaults, session_clear_defaults, discover_projects, and 48 more. Their descriptions and schemas cost roughly 4,101 tokens of context every time the server is loaded.

Is the io.github.dev-jackson/androidbuild-mcp server still maintained?

io.github.dev-jackson/androidbuild-mcp is still listed as active in the MCP registry. We last reached this channel on 30 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the io.github.dev-jackson/androidbuild-mcp server under?

io.github.dev-jackson/androidbuild-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.