adb-tv-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@adb-tv-mcp take a screenshot"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
adb-tv-mcp
An MCP server that lets an AI agent control an Android TV or Android device through ADB.
Overview
adb-tv-mcp is a local server for the Model Context Protocol. The server gives an AI agent a set of tools. The agent uses the tools to control an Android device. The device must be reachable through the Android Debug Bridge (ADB).
The agent can do these tasks:
Capture the screen as an image.
Send remote-control and D-pad key presses.
Start, install, and remove applications.
Open a web address.
Type text and touch the screen.
Transfer files.
Read device properties, settings, and logs.
Run shell commands.
Pair with a device that uses Android 11 wireless debugging.
The server sends each request to the adb program. The server does not modify the device firmware.
Related MCP server: scrcpy-mcp
Demo
Figure 1 shows a status display that the server sent to a TCL C6K television with the adb_open_url tool. The page runs in the television browser.

Features
Screen capture. The
adb_screenshottool returns the screen as a PNG image. Vision-capable agents can see the screen and then act.Remote control. The tools send D-pad keys, media keys, and system keys, and also touch and text input.
Application control. The tools start, list, install, and remove applications, and open web addresses.
Wireless pairing. The
adb_pairtool completes the Android 11 pairing sequence.File transfer. The tools copy files to and from the device.
Diagnostics. The tools read properties, settings, and logs, and record the screen.
Requirements
Node.js version 18 or later.
The Android platform-tools package. This package supplies the
adbprogram.An Android device with developer options and debugging turned on.
Installation
Clone the repository:
git clone https://github.com/mosesmrima/adb-tv-mcp.git cd adb-tv-mcpInstall the dependencies:
npm installBuild the project:
npm run build
Configuration
Add the server to the configuration file of your MCP client.
To use the published package, run it with npx. You do not need to clone the repository.
{
"mcpServers": {
"adb-tv": {
"command": "npx",
"args": ["-y", "adb-tv-mcp"],
"env": { "ADB_PATH": "/path/to/platform-tools/adb" }
}
}
}To use a local build instead, set the command to node and give the absolute path to the built file:
{
"mcpServers": {
"adb-tv": {
"command": "node",
"args": ["/absolute/path/to/adb-tv-mcp/dist/index.js"],
"env": { "ADB_PATH": "/path/to/platform-tools/adb" }
}
}
}Set the ADB_PATH variable only if the adb program is not on the PATH of the client process. Restart the client after you change the configuration.
Connect to a device
Android 11 or later (wireless debugging)
On the device, open Developer options.
Select Wireless debugging.
Select Pair device with pairing code. The device shows a 6-digit code and an address in the form
host:port.Tell the agent to run
adb_pairwith the host, the port, and the code.Tell the agent to run
adb_connectwith the host and the connect port. The device shows the connect port on the main Wireless debugging screen.
Note: The pairing port and the connect port are different. The command adb mdns services also finds these endpoints.
USB or earlier Android
Turn on network ADB on the device.
Tell the agent to run
adb_connectwith the device address and port 5555.
Tools
Tool | Description |
| Lists the connected devices and their state. |
| Pairs with a device that uses Android 11 wireless debugging. |
| Connects to a device endpoint. |
| Disconnects a device, or all devices. |
| Captures the screen and returns a PNG image. |
| Records the screen and saves the video to a local file. |
| Sends a remote-control or D-pad key. |
| Touches the screen at a pixel position. |
| Swipes from one position to another. |
| Types text into the active field. |
| Starts an application by package name. |
| Opens a web address on the device. |
| Sends an Android intent with |
| Lists installed packages. |
| Reports the application in the foreground. |
| Installs an APK file. |
| Removes an application. |
| Copies a file to the device. |
| Copies a file from the device. |
| Reads device properties. |
| Reads or writes an Android setting. |
| Reads recent log lines. |
| Restarts the device. |
| Runs a shell command. |
For the adb_key tool, use one of these key names, or a numeric Android key code:
UP, DOWN, LEFT, RIGHT, ENTER, BACK, HOME, MENU, POWER, VOLUME_UP, VOLUME_DOWN, MUTE, PLAY_PAUSE, NEXT, PREV, FAST_FORWARD, REWIND, SEARCH, ASSIST, SETTINGS, APP_SWITCH, CHANNEL_UP, CHANNEL_DOWN.
Environment variables
Variable | Description |
| The path to the |
Security
Read this section before you use the server.
The server controls real hardware.
The
adb_shelltool runs any shell command. Theadb_rebootandadb_uninstalltools also make changes to the device.Use the server only with devices that you own or that you have permission to control.
Do not connect the server to devices on a network that you do not trust.
Give the agent only the autonomy that the task needs.
To report a security problem, see SECURITY.md.
How it works
The server calls the adb command-line program with execFile. Each MCP tool is a wrapper around one adb operation. The server exposes the tools over the stdio transport of the MCP SDK.
The adb_screenshot tool reads the output of screencap -p and returns it as an MCP image block. An agent that supports images can see the screen and then choose the next action.
Development
npm run dev # run from source with tsx
npm run build # compile TypeScript to dist/
npm start # run the compiled serverContributing
See CONTRIBUTING.md for the contribution process and the coding standards.
License
This project uses the MIT License. See LICENSE.
Available Tools
24 toolsadb_connectB
Connect to a device ADB endpoint host:port (wireless-debug 'connect' port).
Inputs: host (required), port (required).
adb_current_appB
Report the foreground app/activity.
Inputs: serial.
adb_devicesB
List connected ADB devices with serial + state.
Inputs: no named parameters.
adb_disconnectC
Disconnect a device (host:port) or all if omitted.
Inputs: host, port.
adb_getpropB
Read device properties (all, or filter by substring).
Inputs: filter, serial.
adb_installB
Install an APK from a local file path onto the device.
Inputs: apk_path (required), serial.
adb_keyA
Press a remote/D-pad key by name (UP DOWN LEFT RIGHT ENTER BACK HOME POWER MENU VOLUME_UP PLAY_PAUSE SEARCH ASSIST ...) or numeric keycode.
Inputs: key (required), serial.
adb_launchC
Launch an app by package name (e.g. com.spotify.tv.android).
Inputs: package (required), serial.
adb_list_appsB
List installed packages; third_party=true for user-installed only.
Inputs: serial, third_party.
adb_logcatB
Dump recent logcat lines (optionally grep-filtered).
Inputs: lines, filter, serial.
adb_open_urlC
Open a URL on the device (cast a webpage/dashboard/game you built to the TV).
Inputs: url (required), serial.
adb_pairB
Pair with an Android 11+ device via Wireless debugging (6-digit code + IP:port from 'Pair device with pairing code').
Inputs: code (required), host (required), port (required).
adb_pullC
Copy a file from the device to local.
Inputs: local (required), remote (required), serial.
adb_pushB
Copy a local file to the device.
Inputs: local (required), remote (required), serial.
adb_rebootC
Reboot the device. mode: normal | recovery | bootloader.
Inputs: mode, serial.
adb_screenrecordB
Record the screen for N seconds, pull it to a local mp4, return the path.
Inputs: serial, seconds, local_path.
adb_screenshotA
Capture the screen as a PNG image so the agent can SEE the device.
Inputs: serial.
adb_settingsC
Get or put an Android setting. namespace = system|secure|global.
Inputs: key (required), action (required), namespace (required), value, +1 more.
adb_shellC
Run a shell command on the device. Use only with devices that you own.
Inputs: command (required), serial.
adb_start_intentA
Fire a generic Android intent via am start (advanced). Pass raw am args, e.g. ['-n','pkg/.Activity'].
Inputs: args (required), serial.
adb_swipeC
Swipe/drag from x1,y1 to x2,y2 over duration ms.
Inputs: x1 (required), x2 (required), y1 (required), y2 (required), +2 more.
adb_tapC
Tap the screen at pixel x,y.
Inputs: x (required), y (required), serial.
adb_textC
Type a string into the focused field.
Inputs: text (required), serial.
adb_uninstallC
Uninstall an app by package name.
Inputs: package (required), serial.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 24 tools
Most tools have clearly distinct purposes (screenshot vs screenrecord vs tap vs swipe are all different actions). The only mild overlap is adb_shell vs adb_start_intent vs adb_open_url, since all involve running commands on the device, but their descriptions clarify distinct use cases. Overall agents can distinguish between them well.
The adb_ prefix is applied to all 24 tools, giving a strong and clear prefix pattern. However, the verb portion varies in style: verbs like screenshot, reboot, shell, push, pull are nouns/imperatives mixed together, and there's no action-object convention (e.g. adb_launch vs adb_launch_app). The ubiquitous adb_ prefix creates consistency, but the verb style is somewhat inconsistent.
24 tools is near the high end of what feels appropriate for a device-management server, and the count is justified by the breadth of ADB capabilities (network, input, apps, screen, properties). Each tool addresses a distinct real operation, making the size defensible, though it does edge toward heavy.
The surface covers the core ADB workflows well: connectivity (pair/connect/disconnect/devices), input (tap/swipe/key/text), screen (screenshot/record), app lifecycle (launch/install/uninstall/list/current), file transfer (push/pull), properties/settings, shell, logcat, and URL/intent launching. Minor gaps include no clear reboot/couple of state management helper, but the essential ADB operations are present with no dead ends.
Maintenance
Related MCP Connectors
Control Android TV from any AI. 38 MCP tools: playback, recap, recommend, smart-home, schedules.
Give your AI agent a real cloud Android phone: push APKs, drive it, get screenshots and logs.
Let AI agents control Android and iOS devices on Mobilerun Cloud: screen, input, apps, workflows.
Cloud Android phones for AI agents: create a phone, read the screen, tap, type, install APKs, park.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with Android devices and emulators via ADB, providing tools for screenshots, UI inspection, touch and text input, app management, and device control.42204 npm21MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to visually perceive and directly control Android devices via ADB and screen-control tooling, including screenshots, taps, swipes, typing, app management, UI inspection, file transfer, shell commands, and audio/video streaming.374 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to see and control Android devices through ADB and scrcpy, supporting screenshots, input, app management, UI automation, shell/file access, and audio/video streaming.374 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to see and control Android devices through ADB and screen mirroring, supporting screen capture, touch input, app management, UI element finding, file transfer, shell commands, clipboard access, and audio/video streaming.374 npmMIT