adb-tv-mcp
Enables AI agents to control Android TV/Android devices through ADB, including screen capture, remote control, app management, and more.
README
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.
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-mcp -
Install the dependencies:
npm install -
Build 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 |
|---|---|
adb_devices |
Lists the connected devices and their state. |
adb_pair |
Pairs with a device that uses Android 11 wireless debugging. |
adb_connect |
Connects to a device endpoint. |
adb_disconnect |
Disconnects a device, or all devices. |
adb_screenshot |
Captures the screen and returns a PNG image. |
adb_screenrecord |
Records the screen and saves the video to a local file. |
adb_key |
Sends a remote-control or D-pad key. |
adb_tap |
Touches the screen at a pixel position. |
adb_swipe |
Swipes from one position to another. |
adb_text |
Types text into the active field. |
adb_launch |
Starts an application by package name. |
adb_open_url |
Opens a web address on the device. |
adb_start_intent |
Sends an Android intent with am start. |
adb_list_apps |
Lists installed packages. |
adb_current_app |
Reports the application in the foreground. |
adb_install |
Installs an APK file. |
adb_uninstall |
Removes an application. |
adb_push |
Copies a file to the device. |
adb_pull |
Copies a file from the device. |
adb_getprop |
Reads device properties. |
adb_settings |
Reads or writes an Android setting. |
adb_logcat |
Reads recent log lines. |
adb_reboot |
Restarts the device. |
adb_shell |
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 |
|---|---|
ADB_PATH |
The path to the adb program. The default value is adb on the PATH. |
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 server
Contributing
See CONTRIBUTING.md for the contribution process and the coding standards.
License
This project uses the MIT License. See LICENSE.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.