SkillAgentSearch skills...

ha-adb-mcp

Home Assistant app (add-on) that turns network ADB into an MCP server: Claude and other AI assistants see and control Android TVs, Fire TVs, phones and tablets - shell, screenshots, UI taps, text input, app installs, logcat.

Install / Use

claude mcp add st412m -- npx -y github:st412m/ha-adb-mcp

If the server publishes to npm under a different name, use that package instead — check the repo README.

About this skill
🔌

MCP Server

Model Context Protocol server

Quality Score

75/100

Supported Platforms

Claude Code
Claude Desktop

Tags

Our assessment of ha-adb-mcp

ha-adb-mcp scores 75/100 on our quality scale, 3730th of 4,624 Development & Engineering skills we index.

Its MCP Server is 8.4 KB long, well organised into 10 sections with 3 code examples: a thorough specification that gives an agent plenty to work with.

It has 3 GitHub stars, so there is little community track record yet; judge it on its content.

Substance
29/30
Structure
18/20
Description
15/15
Adoption
3/20
Freshness
15/15

Maintenance, license and trust

  • The repository was last updated 5 days ago, so ha-adb-mcp is actively maintained.
  • It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
  • Its trust signals score 92/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

ha-adb-mcp compared with similar skills

All 4 of these similar skills score higher than ha-adb-mcp; compare them before choosing.

SkillScoreStarsUpdatedFormat
ha-adb-mcp (this skill)by st412m7535d agoMCP Server
Agent-Reachby Panniantong10091.8k20d agoCLAUDE.md
headroomby headroomlabs-ai10074.5ktodayCLAUDE.md
CowAgentby zhayujie10047.2ktodayCLAUDE.md
ai-job-searchby MadsLorentzen10045.0ktodayCLAUDE.md

Frequently asked questions

How do I install ha-adb-mcp?
Run claude mcp add st412m -- npx -y github:st412m/ha-adb-mcp. The install tabs above show the steps for each supported agent.
Which AI agents does ha-adb-mcp work with?
It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
Is ha-adb-mcp safe to use?
It is MIT-licensed and scores 92/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is ha-adb-mcp still maintained?
The repository was last updated 5 days ago, so ha-adb-mcp is actively maintained.

ADB MCP Server — Home Assistant App (Add-on)

MCP (Model Context Protocol) server for controlling Android devices over network ADB, packaged as a Home Assistant app. It lets AI assistants — claude.ai custom connectors, Claude Desktop and other MCP clients — see and control Android TVs, Fire TVs, phones, tablets and watches on your LAN: run shell commands, take screenshots, inspect and tap the UI, type text including Unicode, install apps, transfer files and read logcat.

Transport is MCP Streamable HTTP (POST /mcp, plain JSON responses, immune to SSE buffering in CDNs and tunnels). Authentication is a secret path prefix, /private_<token>, the same pattern as ha-filesystem-mcp.

Home Assistant ships its own MCP Server integration, which does a different job: it exposes the HA conversation agent and the intents an assistant already understands. It gives no shell, no screen and no package manager. This app works below the level where entities exist and talks to Android over ADB directly. If what you want is an entity, use the official integration; if what you want is a terminal and a screen, use this.

Requirements

| Requirement | Detail | |---|---| | Home Assistant | a Supervisor-managed install (HAOS or Supervised) | | Architectures | amd64, aarch64 | | Device side | Android with ADB over the network reachable from the HA host | | Ports | 3200/tcp for the MCP endpoint; 5037/tcp optional, for sharing the adb daemon |

Installation

Home Assistant renamed add-ons to apps; on an older core the two menus below are called Add-ons and Add-on Store.

1. Add this repository

Open your Home Assistant instance and show the add app repository dialog with a specific repository URL pre-filled.

By hand: Settings → Apps → App Store → ⋮ → Repositories → + Add, paste https://github.com/st412m/ha-adb-mcp, select Add. If the badge opens the App Store without a dialog, use the manual path (my.home-assistant.io#698).

2. Install and configure

In the ADB MCP Server card: Install, set a long random token in Configuration, then Start.

3. Enable ADB on the devices

  • Fire TV / Android TV: Settings → Developer Options → ADB Debugging → ON. Network ADB listens on port 5555.
  • Phones and tablets on Android 10 or older: enable USB debugging, connect over USB once, run adb tcpip 5555. This resets on reboot.
  • Phones and tablets on Android 11+: Wireless debugging → "Pair device with pairing code" → call adb_pair with the shown ip:port and 6-digit code, keeping the dialog open → adb_connect to the ip:port from the main Wireless debugging screen.

4. Auto-connect stable devices at startup

token: "your-long-random-token"
devices:
  - "192.0.2.50"          # port 5555 implied
  - "192.0.2.51:5555"
allow_shell: true
allow_uninstall: false
log_requests: false

5. Accept the debugging prompt

On first connection, accept the "Allow USB debugging?" dialog on each device and check "Always allow". ADB keys persist in /data/.android across app restarts and updates.

Configuration

| Option | Default | Description | |---|---|---| | token | changeme | Secret path token. Change it. | | devices | [] | ip or ip:port entries auto-connected at startup | | allow_shell | true | false disables the raw adb_shell tool; internal plumbing keeps working | | allow_uninstall | false | true unlocks adb_app mode=uninstall | | log_requests | false | HTTP access log in the proxy and a per-tool-call log in the server |

Longer notes, including what stays available with allow_shell: false and how arguments are masked in the log, are in docs/configuration.md.

Connecting claude.ai

Expose port 3200 through a reverse proxy (Caddy, nginx, Cloudflare Tunnel), then add a custom connector pointing at:

https://your-domain/private_<token>/mcp

Tools

18 tools. Full semantics, guard rails, refusal rules and per-tool timeouts are in docs/tools.md.

Session

  • adb_devices — list connected devices with serial, state and description
  • adb_connect — connect a network device, ip or ip:port
  • adb_disconnect — drop one host, or every transport
  • adb_pair — pair an Android 11+ device over Wireless Debugging

Shell and logs

  • adb_shell — run any shell command, return stdout
  • adb_logcat — non-blocking log dump, filterspec or substring, filtered on-device

Screen and input

  • adb_screenshot — JPEG screenshot plus a line giving the screen size, image size and scale
  • adb_ui_dump — compact UI hierarchy with tap coordinates
  • adb_tap — tap a coordinate, optionally in screenshot coordinates, with optional verify
  • adb_swipe — swipe between two points; same point plus a long duration is a long-press
  • adb_key — send a keyevent by name or numeric code
  • adb_text — type into the focused field; non-ASCII goes through ADBKeyBoard
  • adb_find_and_tap — find an element by label and activate it, tapping or walking the focus

Apps and files

  • adb_install — install one .apk, a split set, or one .apks/.xapk/.apkm bundle; by default it only reports, dry_run=false installs
  • adb_uninstall — uninstall by package name
  • adb_app — package operations with guard rails: list, launch, stop, clear, disable, uninstall, back up, restore
  • adb_push — copy a file from /media or /share to the device
  • adb_pull — copy a file from the device to /media or /share

Limitations

  • The tool list is cached per chat. After updating the app, an already-open chat keeps the old tool schemas; start a new chat to see changed tools or parameters.
  • A gateway timeout of roughly 60 s applies per tool call. Long-running shell commands are cut off by the connector, not by the app. Background them on-device and poll.
  • aarch64 is build-verified, not device-verified: the image builds and starts and the screenshot smokes pass, but the ADB tools themselves have not been exercised on that architecture.
  • Screenshots wake devices. screencap on a sleeping Android TV wakes it, and HDMI-CEC will switch on the attached television.
  • One ADB session per device. Android's adbd does not tolerate two independent TCP clients; to run the androidtv integration alongside this app, route it through this app's adb server — see docs/coexistence-androidtv.md.

Troubleshooting

INSTALL_FAILED_VERIFICATION_FAILURE — the on-device verifier rejects ADB installs:

adb_shell settings put global verifier_verify_adb_installs 0

device offline / device not found — the TCP session died: adb_disconnect that host, then adb_connect again. On Android 11+ wireless debugging the port changes after every reboot.

A black screenshot — read the warning under the image. screen: Asleep means the device is asleep, so adb_key WAKEUP first; FLAG_SECURE means the system is hiding the content.

Everything else is in docs/troubleshooting.md.

Security

  • ADB is not a sandbox. adb_uninstall removes app data, and disabling system packages can leave a device unbootable. Start with allow_shell: false, and keep a way to recover each device.
  • The token in the URL path is the only auth layer. Use a long random value and serve it over HTTPS.
  • adb_shell is full device shell access. Disable it if you only need screenshots and UI control.
  • adb_push, adb_pull and adb_install are restricted to /media and /share on the HA side.
  • adb_app writes APK backups and its rollback snapshot under store, default /media/adb-mcp. Those APKs are readable by anything else with access to /media.
  • Never expose port 5037 beyond your LAN — the adb server has no auth at all.
  • With log_requests: true, adb_text input and adb_pair codes are masked in the log and in error text; adb_shell.command is not, since it has no fixed shape to mask. Type secrets through adb_text.

Links

Related Skills

View on GitHub
GitHub Stars3
CategoryDevelopment
Updated5d ago
Forks0

Languages

JavaScript

Trust signals

92/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

1 low