Provides comprehensive control of Android devices via ADB, including device management, UI inspection, input interaction, app management, debugging, performance profiling, network control, and accessibility testing for Flutter development and QA workflows.
Supports visual QA workflows by capturing screenshots with metadata for comparison with Figma designs, enabling design-to-implementation validation.
Enables Flutter-specific development workflows including Flutter log filtering, UI testing automation, visual QA with screenshot capture, performance testing with frame stats, and device simulation for responsive design testing.
Enhanced ADB MCP Server for Flutter/Android Development
A comprehensive MCP server for controlling Android devices via ADB, specifically designed for Flutter development, UI testing, and visual QA workflows.
Features
📱 Device Management
List connected devices with details
Get comprehensive device info (model, Android version, battery, etc.)
Screen specifications with DP calculations
📸 Visual Capture
Screenshots (base64 or file)
Screen recording with start/stop control
Capture with metadata for Figma comparison
🔍 UI Inspection
Full UI hierarchy dump (XML)
Find elements by text or resource ID
Get all clickable elements with coordinates
Extract all visible text for verification
🎯 Input & Interaction
Tap, double-tap, long-press
Swipe and scroll (up/down/to-text)
Text input and clear
Key events (HOME, BACK, ENTER, etc.)
Tap elements by text or ID
📦 App Management
Launch/stop/clear apps
Install/uninstall APKs
List packages with filtering
Get current activity
App info (version, install date, etc.)
🐛 Debugging & Logs
Logcat with filtering (tag, level, package)
Flutter-specific logs
Crash logs extraction
ANR traces
⚡ Performance Profiling
Memory usage per app
CPU monitoring
GPU rendering info
Frame stats for jank detection
Battery statistics
🌐 Network Control
Network info (WiFi status, IP)
Toggle WiFi/Airplane mode
Set/clear HTTP proxy
⚙️ Developer Options
Animation scale (speed up tests)
Show taps (for recordings)
Show layout bounds
Screen rotation control
Change resolution/density
♿ Accessibility Testing
Font scale adjustment
TalkBack toggle
High contrast mode
Color inversion
📍 Emulator Features
GPS location spoofing
Simulate SMS/calls
Prerequisites
ADB installed and in your PATH
adb versionAndroid device/emulator connected with USB debugging enabled
adb devicesPython 3.10+ with
uv(recommended) orpip
Installation
Configuration
Claude Desktop
Add to ~/.config/Claude/claude_desktop_config.json (Linux):
Cursor IDE
Add to .cursor/mcp.json:
Claude Code
Available Tools (60+)
Device Management
Tool | Description |
| List all connected devices |
| Comprehensive device details |
| Screen size, density, DP values |
Visual Capture
Tool | Description |
| Capture as base64 PNG |
| Save screenshot to file |
| Start recording (max 180s) |
| Stop recording |
| Download recordings |
| Screenshot with metadata |
UI Inspection
Tool | Description |
| Full UI tree as XML |
| All tappable elements with coordinates |
| Find by text content |
| Find by resource ID |
| Extract all visible text |
Input & Interaction
Tool | Description |
| Tap at coordinates |
| Tap by element identifier |
| Double tap |
| Long press |
| Swipe gesture |
/
| Scroll screen |
| Scroll until text visible |
| Type text |
| Clear current field |
| Press any key |
/
| Navigation buttons |
App Management
Tool | Description |
| Current foreground app |
| Launch by package name |
| Launch specific activity |
| Force stop app |
| Clear app data |
| List installed apps |
| App details |
| Install APK |
| Uninstall app |
Debugging & Logs
Tool | Description |
| Get logs |
| Clear log buffer |
| Flutter-specific logs |
| Crash/exception logs |
| ANR traces |
Performance
Tool | Description |
| Memory usage |
| CPU usage |
| Battery details |
| GPU rendering info |
| Frame timing stats |
Network
Tool | Description |
| WiFi status, IP |
| Enable/disable WiFi |
| Toggle airplane mode |
| Set HTTP proxy |
| Clear proxy |
Developer Options
Tool | Description |
| Visual tap feedback |
| Show layout bounds |
| Animation speed (0-1) |
| portrait/landscape/auto |
| Override resolution |
| Reset to default |
| Override DPI |
| Reset to default |
Accessibility
Tool | Description |
| System font size |
| Screen reader |
| High contrast text |
| Invert colors |
Files & Shell
Tool | Description |
| Copy to device |
| Copy from device |
| List directory |
| Read text file |
| Run any shell command |
| Reboot device |
Emulator Only
Tool | Description |
| Fake GPS location |
| Simulate SMS |
| Simulate incoming call |
Example Prompts
Basic Usage
"Take a screenshot of my phone"
"What's the current screen resolution and density?"
"List all installed apps containing 'flutter'"
"What's currently on screen? Get all the text"
UI Testing
"Find the login button and tap it"
"Scroll down until you find 'Settings'"
"Get all clickable elements and their positions"
"Type 'test@email.com' into the current field"
Debugging
"Show me the last 50 Flutter logs"
"Are there any crash logs for my app?"
"What's the memory usage of com.myapp?"
Visual QA
"Capture this screen for comparison with Figma"
"Take a screenshot and tell me about the UI structure"
"Set the font scale to 1.3 and take a screenshot for accessibility testing"
Performance Testing
"Set animation scale to 0 and run through the app"
"Get frame stats for my app - is there any jank?"
"What's the GPU rendering performance?"
Device Simulation
"Change the screen to 1080x1920 to simulate a smaller phone"
"Rotate to landscape mode"
"Set location to San Francisco (37.7749, -122.4194)"
Extending
Add new tools easily:
Tips for Flutter Development
Speed up tests: Use
set_animation_scale(0)to disable animationsVisual QA: Use
capture_screen_for_comparison()with Figma MCPDebug logs:
get_flutter_logs()filters Flutter-specific outputHot reload: Keep
flutter runterminal open, use device for interactionResponsive testing: Use
change_screen_size()andchange_density()
License
MIT