Loading languages...
AN

android-adb-controller

@sankhodeep

This MCP server enables AI agents to control Android devices via ADB commands. It provides tools for: - Listing connected devices - Executing screen taps - (Extensible for more ADB commands)

android
adb
device control
mobile
automation

Android ADB Controller MCP Server

Overview

This MCP server enables AI agents to control Android devices via ADB commands. It provides tools for:

  • Listing connected devices
  • Executing screen taps
  • (Extensible for more ADB commands)

Setup Guide

Prerequisites

  1. Android device with USB debugging enabled
  2. ADB installed and working (adb devices should show your device)
  3. Node.js v16+

Installation Steps

  1. Create MCP Server:
npx @modelcontextprotocol/create-server android-adb-controller
cd android-adb-controller
  1. Install Dependencies:
npm install adbkit @types/adbkit
  1. Configure MCP Settings: Add to mcp_settings.json:
{
  "mcpServers": {
    "android-adb": {
      "command": "node",
      "args": ["android-adb-controller/build/index.js"]
    }
  }
}

Implementation Details

Key Components

  1. ADB Client Initialization:
this.adbClient = adb.createClient();
  1. Command Execution:
private async executeADBCommand(deviceId: string, command: string) {
  const device = this.adbClient.getDevice(deviceId);
  return await device.shell(command);
}
  1. Tool Definitions:
  • list_devices: Lists connected Android devices
  • tap_screen: Executes screen taps at specified coordinates

Troubleshooting Guide

Common Issues & Solutions

  1. ADB Command Not Found:
  • Ensure ADB is installed and in system PATH
  • Verify platform-tools are extracted correctly
  1. Device Not Detected:
  • Check USB debugging is enabled
  • Verify USB cable connection
  • Run adb devices to confirm detection
  1. TypeScript Errors: Solution: Added proper type definitions in adbkit.d.ts:
declare module 'adbkit' {
  interface Device {
    id: string;
    type: string;
  }
  // ... other type definitions
}
  1. MCP Server Connection Issues:
  • Verify server is running (node build/index.js)
  • Check MCP settings configuration

Extending Functionality

To add new commands:

  1. Define new tool in ListToolsRequestSchema
  2. Implement handler in CallToolRequestSchema
  3. Add corresponding ADB command execution

Example for text input:

{
  name: "input_text",
  description: "Input text on device",
  inputSchema: {
    type: "object",
    properties: {
      deviceId: { type: "string" },
      text: { type: "string" }
    }
  }
}

Development Workflow

  1. Make code changes
  2. Rebuild:
npm run build
  1. Restart server:
node build/index.js

Architecture

MCP Server (Node.js) ↔ ADB Interface ↔ Android Device
                ↑
                |
          AI Control System

Future Improvements

  • Add swipe gestures
  • Implement screenshot capability
  • Add device monitoring
  • Support multiple simultaneous devices

# mcpServer Config

{
  "mcpServers": {
    "android-adb": {
      "command": "node",
      "args": [
        "android-adb-controller/build/index.js"
      ]
    }
  }
}

# stdio

node android-adb-controller/build/index.js
Transport:
stdio
Language:
JavaScript
Created: 3/29/2025
Updated: 3/29/2025