MCP server for Smart TV app development — build, deploy, and debug web apps on Samsung Tizen and LG webOS TVs from any MCP client
tv-mcp demonstrates solid tool design with clear naming (verb_noun pattern), comprehensive parameter schemas using Zod, and detailed descriptions. All 16 tools have explicit registrations with inputSchema and descriptions. Progressive disclosure (Tier 0/1/2) is well-architected. However, output schemas are not formally documented, responses are text-wrapped without structured field definitions. Error handling exists but lacks recovery guidance. Some parameter descriptions could be more prescriptive about constraints and formats.
Run the project's web build once, then package for the target platform (.wgt or .ipk).
Connect to a TV by configured name or by host+platform. Unlocks app lifecycle tools.
Retrieve buffered console output (console.log, console.error, exceptions) from the running app. Requires an active debug session.
Tail platform logs from a TV (Tizen showlog_dump or webOS journalctl).
Deep docs for platform pain points (signing, dev mode, packaging, pairing). Call without a topic to list topics.
Check vendor toolchains, Tizen signing profiles, and TV reachability in one pass. Run first when anything fails.
Output schemas not formally documented. All tools return text-wrapped responses without structured field definitions. LLMs cannot plan downstream tool calls or extract typed data reliably.
Error handling lacks recovery guidance. TVMcpError exceptions are thrown but do not guide LLMs on next steps (retry, lookup, ask user). E.g., 'Provide either name, or host + platform' is clear, but most errors lack this actionable structure.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
Evaluate JavaScript in the app's context and return the JSON-serialized result. Requires an active debug session (launch_app with debug=true).
Install the last-built artifact (or an explicit path) on a TV.
Launch an app on a TV. debug=true attaches the web inspector and unlocks screenshot / console / JS-eval tools.
List configured and live-discovered Samsung (Tizen) / LG (webOS) TVs with reachability.
Send a remote-control key to a TV (arrow keys, OK, BACK, HOME, media controls, color buttons). First call to a device triggers a one-time on-screen pairing prompt.
Extend the webOS Dev Mode session without touching the TV. Reads the session token from the panel and hits LG's ResetDevModeSession endpoint.
PNG screenshot of the app's webview, base64-encoded. Requires an active debug session (launch_app with debug=true).
Stop a running app.
Remove an app from a TV.
Assert that VOD content or an advertisement is actually playing on the panel. Samples video element metrics (currentTime, decoded frames, dropped frames) twice and judges playback state. Requires an active debug session.
Parameter descriptions lack prescriptive constraints. E.g., 'lines' param in device_logs and console_logs has no min/max bounds; 'sampleMs' in verify_playback has no range guidance. LLMs may pass absurd values.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Risk classification is implicit in descriptions but not machine-readable. Agents cannot programmatically distinguish safe reads from destructive writes.
No confirmation/dry-run pattern for destructive operations. uninstall_app and eval_js (which modifies app state) execute immediately without user confirmation, risking accidental data loss.