tv-mcp

tv-mcp

Build, deploy, and debug Smart TV web apps on Samsung Tizen and LG webOS TVs from any AI agent.

Category
Visit Server

README

tv-mcp

Build, deploy, and debug Smart TV web apps from any AI agent.

tv-mcp is a Model Context Protocol server that gives MCP clients (Claude Code, Cursor, VS Code, ...) hands-on access to real Samsung Tizen and LG webOS televisions: package and sign apps, install them on test TVs, take screenshots, read the JS console, evaluate code in the running app, and press remote-control keys.

The goal: an agent loop of edit code → build → install → screenshot → read console → fix that runs hands-free on physical TVs.

Who this is for

Smart TV development has the worst inner loop in web development: two vendor SDKs, certificate ceremonies, dev-mode timers, and a screen on the other side of the room. This hits hardest in hospitality and B2B TV — hotel IPTV, cruise ships, hospitals, digital signage, sports bars — where teams ship one web app to fleets of mixed Samsung/LG panels.

If that's you, this project is for you.

How it works

Your TV app is a web app in a native wrapper (.wgt / .ipk). Both platforms expose the webview's Chrome DevTools Protocol remote inspector. So tv-mcp splits into:

  • a platform plane per vendor (build/sign/install/launch via tizen/sdb and ares-* CLIs), and
  • a shared CDP plane (screenshot, console, JS eval) that works identically on both — because underneath it's just Chromium.
MCP client ── stdio ── tv-mcp
                         ├── TizenDriver  → tizen / sdb        → Samsung TV
                         ├── WebOSDriver  → ares-*             → LG TV
                         └── CdpBridge    → DevTools Protocol  → the app's webview (both)

Progressive disclosure

A fresh session exposes only 3 tools (list_devices, connect_device, docs). Connecting a device unlocks the app-lifecycle tier; launching with debug: true unlocks the inspector tier (screenshot, console_logs, eval_js). Deep platform knowledge (Tizen signing/DUIDs, webOS dev-mode expiry, pairing flows) ships as MCP resources fetched on demand — your agent's context stays small until it actually needs the detail.

Tier Unlocked by Tools
0 always list_devices, connect_device, docs
1 device connected build_app, install_app, launch_app, stop_app, uninstall_app, device_logs, remote_key
2 debug launch screenshot, console_logs, eval_js

Prerequisites

tv-mcp orchestrates the vendor toolchains — it does not replace them. You need:

Samsung (Tizen) LG (webOS)
On this machine Node ≥ 20 · Tizen Studio CLI (tizen, sdb on PATH) Node ≥ 20 · webOS TV CLI: npm i -g @webos-tools/cli (ares-* on PATH)
On the TV, once Developer mode: Apps → type 1 2 3 4 5 → ON → set Host PC IP to this machine's address on the TV's subnet → reboot the TV Developer Mode app from LG Content Store (needs an LG developer account) → Dev Mode ON → note the on-screen passphrase
Signing Certificate profile in Tizen Studio's certificate manager. Real TVs reject the generic Tizen distributor cert — you need a Samsung-issued cert that includes the TV's DUID (sdb shell 0 getduid) none (dev installs ride the Dev Mode session)
Network TV and this machine on the same subnet; port 26101 open only while dev mode is armed same subnet; SSH on 9922 via the Dev Mode app; sessions expire after ~50h

Common trap (learned on real hardware): a multi-homed machine has several IPs — the Host PC IP on the TV must be the one on the TV's subnet, or the TV silently drops every connection. docs topic device-setup has the full checklist; the server's errors point there when connect/install fails.

Quick start

npm install
npm run build
cp devices.example.yaml devices.yaml   # edit for your TVs and project

Claude Code:

claude mcp add tv -- node /path/to/tv-mcp/dist/index.js --config /path/to/devices.yaml

Then, in a session:

connect to lab-samsung-q80, build the xtv project for tizen, install and launch it in debug mode, and screenshot it

Status

Early. Honest capability matrix:

Capability Tizen webOS
discover / connect ✅ ✅
package (+sign) ✅ ✅
install / launch / stop ✅ ✅
debug attach (CDP) ✅ ✅
screenshot / console / eval ✅ ✅
remote key injection ✅ (one-time on-screen pairing) ✅ (one-time on-screen pairing)
dev-mode auto-renew n/a 🚧 planned
emulator / simulator targets 🚧 🚧
commercial panels (Pro:Centric, SSSP) 🚧 🚧

Roadmap

  • v0.2 — ✅ remote-key pairing (Samsung remote WS API, LG SSAP)
  • v0.2.x — webOS dev-mode auto-renew
  • v0.3 — Android TV driver (#1): adb platform plane + the same CDP debug plane (Android TV webapps are Chromium WebViews too)
  • v0.3 — Tizen emulator + webOS simulator targets, CI-friendly headless mode
  • v0.4 — streamable-HTTP transport + device locking: one shared TV lab, whole team's agents
  • v1.0 — commercial hospitality panels (LG Pro:Centric / webOS Signage, Samsung SSSP / HTV)

Sponsoring

Commercial-panel support (Pro:Centric, SSSP) needs hardware and vendor-portal access that individual maintainers don't have. If your company ships hospitality TV apps and wants this to exist, sponsorship or hardware loans move the roadmap directly — see FUNDING or open a discussion.

Contributing

PRs welcome — see CONTRIBUTING.md. The TVDriver interface in src/types.ts is the extension point; a Vizio/Roku/Android TV driver would slot right in.

License

MIT

Recommended Servers

playwright-mcp

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.

Official
Featured
TypeScript
Magic Component Platform (MCP)

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.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

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.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

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.

Official
Featured
TypeScript
Kagi MCP Server

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.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

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.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured