mcp-server-adb

MCP.Pizza Chef: watabee

The mcp-server-adb is an MCP server that integrates Android Debug Bridge (ADB) functionality, allowing LLMs like Claude to interact with Android devices. It provides commands to list connected devices, query installed packages with detailed filters, and perform device management tasks. This server enables real-time, structured access to Android device data and control through the MCP protocol, facilitating automated workflows and device diagnostics.

Use This MCP server To

List all connected Android devices with detailed information Query installed apps on Android devices with filtering options Retrieve APK file paths and package installer details Filter packages by system, third-party, enabled, or disabled status Include uninstalled packages in package listings Enable LLM-driven Android device management and diagnostics Automate Android device inventory and app audits Integrate Android device data into AI-enhanced workflows

README

ADB MCP Server

MCP Server for Android Debug Bridge (ADB), enabling Claude to interact with Android devices.

Tools

  1. get-devices

    • List connected Android devices
    • Optional inputs:
      • showDetails (boolean, default: true): Show device details (-l)
    • Returns: List of connected devices with their details
  2. list-packages

    • List installed packages on the device
    • Optional inputs:
      • showPath (boolean, default: false): Show the APK file path (-f)
      • showDisabled (boolean, default: false): Show only disabled packages (-d)
      • showEnabled (boolean, default: false): Show only enabled packages (-e)
      • showSystem (boolean, default: false): Show only system packages (-s)
      • showThirdParty (boolean, default: false): Show only third party packages (-3)
      • showInstaller (boolean, default: false): Show package installer (-i)
      • includeUninstalled (boolean, default: false): Include uninstalled packages (-u)
    • Returns: List of packages based on specified filters
  3. input-text

    • Input text to the device
    • Required inputs:
      • text (string): Text to input
    • Returns: Text input confirmation
  4. install-apk

    • Install an APK file to the device
    • Required inputs:
      • apkPath (string): Path to the APK file
    • Optional inputs:
      • allowReinstall (boolean, default: true): Allow reinstalling (-r)
      • allowTestPackages (boolean, default: true): Allow test packages (-t)
      • allowDowngrade (boolean, default: true): Allow downgrade (-d)
      • grantPermissions (boolean, default: false): Grant all permissions (-g)
    • Returns: Installation result
  5. uninstall-apk

    • Uninstall an application
    • Required inputs:
      • packageName (string): Package name to uninstall
    • Optional inputs:
      • keepData (boolean, default: false): Keep app data and cache (-k)
    • Returns: Uninstallation result
  6. clear-app-data

    • Clear application data
    • Required inputs:
      • packageName (string): Package name to clear data
    • Returns: Operation result
  7. pull

    • Pull a file from device
    • Required inputs:
      • remotePath (string): Path to file on device
    • Optional inputs:
      • localPath (string): Local destination path
    • Returns: File transfer result
  8. push

    • Push a file to device
    • Required inputs:
      • localPath (string): Path to local file
      • remotePath (string): Destination path on device
    • Returns: File transfer result
  9. screencap

    • Take a screenshot
    • Required inputs:
      • remotePath (string): Path on device where to save the screenshot (e.g., /sdcard/screenshot.png)
    • Optional inputs:
      • usePng (boolean, default: true): Save as PNG (-p)
    • Returns: Screenshot capture result
  10. rm

    • Remove a file from the Android device
    • Required inputs:
      • path (string): Path to the file on device to remove
    • Optional inputs:
      • force (boolean, default: false): Force removal (-f)
      • recursive (boolean, default: false): Recursive removal (-r)
    • Returns: File removal result
  11. reset-permissions

    • Reset all permissions for an app
    • Required inputs:
      • packageName (string): Target package name
    • Returns: Permission reset result
  12. grant-permission

    • Grant a specific permission
    • Required inputs:
      • packageName (string): Target package name
      • permission (string): Permission to grant
    • Returns: Permission grant result
  13. revoke-permission

    • Revoke a specific permission
    • Required inputs:
      • packageName (string): Target package name
      • permission (string): Permission to revoke
    • Returns: Permission revocation result
  14. start-activity

    • Start an activity using am start
    • Optional inputs:
      • component (string): Component name
      • action (string): Intent action
      • data (string): Intent data URI
      • mimeType (string): MIME type
      • category (string[]): Intent categories
      • extras (array): Intent extras
      • flags (string[]): Intent flags
      • waitForLaunch (boolean, default: false): Wait for launch (-W)
      • debuggable (boolean, default: false): Debug mode (-D)
      • stopApp (boolean, default: false): Force stop app (-S)
    • Returns: Activity start result
  15. kill-server

    • Kill the ADB server process
    • No inputs required
    • Returns: Success message or error
  16. start-server

    • Start the ADB server process
    • No inputs required
    • Returns: Success message or error
  17. help

    • Show ADB help information
    • No inputs required
    • Returns: ADB help text

All tools support these device selection parameters:

  • deviceId (string, optional): Target specific device by ID
  • useUsb (boolean, default: false): Target USB device (-d)
  • useEmulator (boolean, default: false): Target emulator (-e)

Setup

  1. Install ADB:

    • Download Android SDK Platform Tools
    • Add ADB to your system PATH
    • Verify installation with adb version
  2. Enable USB Debugging:

    • On Android device, go to Settings > About phone
    • Tap Build number 7 times to enable Developer options
    • Enable USB debugging in Developer options

Install the Server

# Clone the repository
git clone [repository-url]
cd mcp-server-adb

# Install dependencies
npm install

# Build the project
npm run build

Usage with Claude Desktop

Add the following to your claude_desktop_config.json:

{
  "mcpServers": {
    "adb": {
      "command": "node",
      "args": [
        "-y",
        "/path/to/mcp-server-adb/build/index.js",
        "/path/to/adb"
      ]
    }
  }
}

Replace /path/to/adb with the actual path to your ADB executable.

License

This project is licensed under the MIT License - see the LICENSE file for details.

mcp-server-adb FAQ

How does mcp-server-adb connect to Android devices?
It uses the Android Debug Bridge (ADB) protocol to communicate with connected Android devices, exposing device data and commands via MCP.
Can I filter the list of installed packages on a device?
Yes, you can filter packages by system, third-party, enabled, disabled, and include uninstalled packages using various command options.
Does mcp-server-adb support multiple connected devices?
Yes, it can list and manage multiple Android devices connected simultaneously via ADB.
What LLMs can interact with mcp-server-adb?
It is designed to work with MCP-compatible LLMs such as Claude, GPT-4, and Gemini.
Is it possible to get detailed device information?
Yes, the server can show detailed device info like model, serial number, and status when listing devices.
Can I retrieve APK file paths for installed apps?
Yes, the list-packages command supports showing APK file paths for installed applications.
How secure is the communication between the MCP client and mcp-server-adb?
Communication follows MCP's secure, scoped, and observable interaction principles to ensure safe device access.
What platforms support running mcp-server-adb?
It requires a host environment with ADB installed and accessible, typically on Windows, macOS, or Linux.