ACP

Give an LLM full control of an Android device through one MCP connection.

// build.gradle.kts
dependencies {
  implementation("dev.acpsdk:runtime:1.0.0")
  ksp("dev.acpsdk:compiler:1.0.0")
}

What it does

ACP is an Android hub app that runs an MCP server on-device. It exposes 25+ tools for tapping, swiping, typing, sending SMS, making calls, managing contacts, launching apps, toggling settings, and reading any screen.

It works with every app through accessibility. Apps that integrate the SDK get structured screen data, named actions, and direct tool calls instead of raw trees and coordinate guessing.

Use cases

Automated testing

LLM writes code, builds, installs, tests the actual UI. No mocking.

Device automation

Send messages, manage contacts, control apps through natural language.

E2E flow testing

Navigate real flows, verify screens, interact with elements. Catch what unit tests miss.

Integration testing

Test cross-app behavior on a real device. Launch A, switch to B, verify.

Built-in tools

These work with every app on the device. No SDK needed.

Device

device.tap device.swipe device.type device.scroll device.screenshot device.get_tree device.press_key device.long_press

Communication

sms.send sms.read call.dial call.answer contacts.search contacts.create notifications.list notifications.reply

System

apps.launch apps.list apps.close system.battery system.wifi system.bluetooth system.volume clipboard.get clipboard.set

SDK integration levels

Apps don't need full integration. Each level adds capability.

Level 0 - No SDK. Hub uses accessibility + screenshots. Works everywhere, just slower.
Level 1 - Tools + screens. Hub can navigate and track which screen is active.
Level 2 - Annotated content. Structured field names and values instead of raw text.
Level 3 - Named actions. Invoke by name, not coordinates. Survives layout changes.
Level 4 - Full annotation. Lists, items, overlays. Complete structured screen representation.

Get started