lg-tv-use-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TV_HOST | Yes | Required RFC1918 IPv4 TV address. | |
| TV_MODEL | No | Optional expected native model. | |
| TV_STATE_DIR | No | Credentials/state root. Default: ~/Library/Application Support/lg-tv-use on supported systems. | |
| TV_PROFILE_DIR | No | Optional addons directory; registry lives there too, credentials remain in TV_STATE_DIR. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| tv_discoverA | Find LG TVs without pairing or subnet scanning. |
| tv_observeB | Lightweight app/audio state. Auto captures unknown apps; always requests a fresh screen. |
| tv_appsC | Installed app versions, learned routes and native routes requiring visual discovery. |
| tv_devicesB | Known paired TVs. Select by name/ID; duplicate IPv4 addresses are ambiguous. |
| tv_selectB | Select a registered TV by name or ID and verify native device identity. Never pair implicitly. |
| tv_powerB | Power off natively or wake registered MACs, then verify native power state. Unreachable is not proof of power off. Wake requires TV network-standby support. |
| tv_app_actionC | Execute bounded native app route. Search uses advertised metadata; URL is LG browser only; video accepts YouTube ID. Unknown routes capture once for learning. |
| tv_ui_anchorB | Name exact page, focus, keyboard and modal state after inspecting a screenshot taken within 30 seconds. Selected tab alone is insufficient. Context expires after 60 seconds or an untracked command/reconnect. |
| tv_ui_recordB | From an inspected anchored state, run 1-20 press/wait/text/replace_text/submit steps and capture the result once. Inspect then tv_learn; text $VALUE parameterizes the route. Never learn loading as completed content, nor purchases, account edits or consent routes. |
| tv_ui_runC | Run generated UI addon without images only from its tracked origin and exact app version. Unknown/expired context returns a screenshot without executing. Tracked state is predicted, not TV focus readback; re-observe after external remote use. |
| tv_learnC | After visually verifying the latest native action or UI recording screenshot, compile its route into a reusable addon. Include what the image actually proved in notes. |
| tv_pressC | Bounded remote key; foreground state cannot identify focused control. Observe unknown navigation visually. |
| tv_moveC | Move relative pointer. Inspect unknown target before clicking. |
| tv_clickC | Click current pointer position; requires a known target or fresh visual observation. |
| tv_scrollC | Bounded scrolling, with lightweight state and automatic unknown-app fallback. |
| tv_typeB | Send focused-field text. Some apps including YouTube ignore it; acknowledgement does not verify insertion. |
| tv_launchC | Launch installed non-stub app; learned route avoids image capture. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 17 tools
Most tools target distinct actions (tv_press vs tv_click vs tv_move vs tv_scroll), but several boundaries blur: tv_ui_anchor and tv_observe both inspect state, tv_ui_record and tv_ui_run both execute UI sequences, and tv_launch overlaps with tv_app_action for starting apps. The verbose descriptions help separate them, but an agent could still misselect.
Every tool uses a consistent tv_ prefix with snake_case and a predictable verb/noun structure (tv_press, tv_move, tv_learn, tv_app_action, tv_ui_record). The tv_ui_* group is a coherent sub-namespace, and no conventions are mixed.
17 tools is slightly heavy but defensible for a domain spanning discovery, pairing, power, app launch, low-level input, and a UI-recording/learning pipeline. Each tool maps to a real capability, with little obvious redundancy.
The surface covers discovery, selection, power, app enumeration/launch, and a full input+observe+record+learn lifecycle, which is strong for TV control. Gaps remain around explicit volume/audio and channel control, though tv_observe reports audio state.