Server data from the Official MCP Registry
Android TV remote: list devices, send keys, launch apps, play titles, and observe the screen.
About
Android TV remote: list devices, send keys, launch apps, play titles, and observe the screen.
Security Report
tvpilot is a TV remote-control MCP server that requires a bearer token and makes no unauthenticated calls, and its network and env var access match its stated purpose. The main concerns are that launch_app accepts arbitrary Intent URIs and URLs that the TV will open, that observe reads all visible screen content and sends it to the relay, and that the relay endpoint is an unpublished reconstruction that receives the bearer token by default. Supply chain analysis found 3 known vulnerabilities in dependencies (0 critical, 2 high severity). Package verification found 1 issue.
8 files analyzed · 10 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
Permissions Required
This plugin requests these system permissions. Most are normal for its category.
How to Install
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-cloudcorprecords-tvpilot": {
"args": [
"-y",
"@reneturcios/tvpilot"
],
"command": "npx"
}
}
}Documentation
View on GitHubFrom the project's GitHub README.
tvpilot
tvpilot controls a paired Android TV or Google TV: it lists the paired device, sends remote key events, launches apps and intents, resolves a spoken-style title to the right streaming provider and plays it, and reads back what is on the screen. One binary serves a command-line interface and a stdio MCP server.
Calls go through the TVWizard relay, which forwards them over a WebSocket to the bridge app running on the TV, so no same-network, VPN, or port-forwarding setup is needed. Pairing is done once in the bridge app: it shows a code, you claim it, and you receive a bearer token for your TV.
Configuration
Two environment variables configure the tool:
TVWIZARD_TOKEN(required) — the bearer token issued when you paired your TV. Without it every call fails with an error naming the variable; there are no unauthenticated or fake results.TVWIZARD_MCP_URL(optional) — the relay endpoint. It defaults tohttps://tv.djwizard.ai/api/mcp. Note: the public TVWizard documentation describes the relay architecture and its bearer auth but does not publish the relay's raw HTTP path, so this default endpoint is a documented reconstruction; override it if the relay publishes a different path.
Install
npx @reneturcios/tvpilot devices
Or run the container image:
docker run -i ghcr.io/cloudcorprecords/tvpilot
The container defaults to the MCP server (see below). Pass CLI arguments to use it as a CLI instead.
CLI
tvpilot devices
tvpilot key POWER
tvpilot launch https://www.youtube.com/watch?v=jNQXAC9IVRw --package com.google.android.youtube.tv
tvpilot apps
tvpilot play Stranger Things --country US --season 2 --episode 3 --year 2016 --provider netflix
tvpilot observe
tvpilot --version
Commands print the relay's JSON payload. Exit codes: 0 on
success, 1 when a call fails (including a missing token or an
upstream relay error), 2 for usage errors.
Keys for tvpilot key are POWER, HOME, UP, DOWN, LEFT,
RIGHT, OK, BACK, VOL_UP, and VOL_DOWN. Providers for
--provider are netflix, disney_plus, prime_video, max,
hulu, apple_tv_plus, paramount_plus, peacock, fubo_tv,
youtube, and stremio.
tvpilot observe needs the Android AccessibilityService granted
to the bridge app. The first call without it returns an
accessibility_not_granted error explaining that a setup prompt
was posted on the TV; tap it, then retry.
MCP server
One bin serves both faces. The mcp subcommand starts a stdio MCP
server:
npx -y @reneturcios/tvpilot mcp
MCP client configuration:
{
"mcpServers": {
"tvpilot": {
"command": "npx",
"args": ["-y", "@reneturcios/tvpilot", "mcp"],
"env": { "TVWIZARD_TOKEN": "<your token>" }
}
}
}
Tools
| Tool | Input | What it returns |
|---|---|---|
tv.list_devices | (none) | The TVs paired with the caller's token, each with an id and online flag. |
tv.send_key | key (required) | Sends one key event: one of the ten keys listed above. |
tv.launch_app | data (required), package (optional) | Opens an Intent URI, deep link, or URL, optionally in a named package. |
tv.list_apps | (none) | Installed apps with package, label, and a leanback flag for TV launchers. |
tv.play_title | title (required); country, season, episode, year, provider (optional) | Resolves the title to a provider deep link and plays it. |
tv.observe | (none) | Foreground package/activity, the focused element, and visible clickable nodes. |
Upstream failures — a title that cannot be found, no provider for the title in the chosen country, a relay with its resolver disabled, or accessibility not yet granted — are returned as error results carrying the relay's own message.
Development
npm install
npm run build # tsc -> dist/
npm test # node test runner over test/*.test.ts, no network (fake fetch fixtures)
npm run dev # run the CLI from source via tsx
License
MIT — see LICENSE.
Reviews
No reviews yet
Be the first to review this server!
More Developer Tools MCP Servers
Rea
Freeby Morluto · Developer Tools
Reverse engineer anything from your terminal or agent with one CLI and MCP server.
Paperclip
Freeby Paperclipai · Developer Tools
Trending hip-hop artist momentum scores across four cultural dimensions.
Fetch
Freeby Modelcontextprotocol · Developer Tools
Web content fetching and conversion for efficient LLM usage
Git
Freeby Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
Toleno
Freeby Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
MCP Marketplace
Freeby mcp-marketplace · Developer Tools
Search and install MCP servers from inside your AI client.
