Skip to content

sankhodeep/android-adb-controller

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors