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
- Android device with USB debugging enabled
- ADB installed and working (
adb devicesshould show your device) - Node.js v16+
Installation Steps
- Create MCP Server:
npx @modelcontextprotocol/create-server android-adb-controller
cd android-adb-controller
- Install Dependencies:
npm install adbkit @types/adbkit
- Configure MCP Settings:
Add to
mcp_settings.json:
{
"mcpServers": {
"android-adb": {
"command": "node",
"args": ["android-adb-controller/build/index.js"]
}
}
}
Implementation Details
Key Components
- ADB Client Initialization:
this.adbClient = adb.createClient();
- Command Execution:
private async executeADBCommand(deviceId: string, command: string) {
const device = this.adbClient.getDevice(deviceId);
return await device.shell(command);
}
- Tool Definitions:
list_devices: Lists connected Android devicestap_screen: Executes screen taps at specified coordinates
Troubleshooting Guide
Common Issues & Solutions
- ADB Command Not Found:
- Ensure ADB is installed and in system PATH
- Verify platform-tools are extracted correctly
- Device Not Detected:
- Check USB debugging is enabled
- Verify USB cable connection
- Run
adb devicesto confirm detection
- TypeScript Errors:
Solution: Added proper type definitions in
adbkit.d.ts:
declare module 'adbkit' {
interface Device {
id: string;
type: string;
}
// ... other type definitions
}
- MCP Server Connection Issues:
- Verify server is running (
node build/index.js) - Check MCP settings configuration
Extending Functionality
To add new commands:
- Define new tool in
ListToolsRequestSchema - Implement handler in
CallToolRequestSchema - 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
- Make code changes
- Rebuild:
npm run build
- 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
Recommend MCP Servers 💡
android-mcp-server
An MCP server for programmatic control over Android devices through ADB, exposing various device management capabilities.
fetcher-mcp
MCP server for fetching web page content using Playwright headless browser.
mcp-task-orchestrator
MCP server that breaks down complex tasks into structured workflows with specialized AI roles and workspace-aware management
mcp-server-js
YepCode's MCP server enables AI agents to securely execute AI-generated Node.js or Python code snippets in cloud sandboxes, integrating with APIs and services as MCP tools.
thezuck/page_control_mcp
A Node.js MCP server that enables AI editors to control web pages via STDIO or SSE, with tools for querying, modifying, and interacting with web pages
n8n-workflow-manager
Manages n8n workflows within Docker containers, providing tools for listing, updating, backing up, and troubleshooting workflows.