MCP Remote Control

MCP Remote Control

An MCP server that enables AI assistants to control TVs on a local network through natural language commands. It currently supports Roku devices, allowing users to launch apps, manage playback, and navigate menus.

Category
访问服务器

README

MCP Remote Control

MCP Remote Control

A Model Context Protocol (MCP) server that enables AI assistants and agentic systems to control TVs on your local network.

Currently supports: Roku TVs via the External Control Protocol (ECP).

What is MCP?

The Model Context Protocol is an open standard that allows AI models to securely interact with external tools and data sources. This server exposes TV controls as MCP tools, enabling LLMs like Claude to control your TV through natural language commands.

Architecture

This project is designed with future extensibility in mind. The Roku-specific implementation is isolated in roku_bridge.py, separating the ECP protocol details from the MCP server layer. While the current implementation is Roku-specific, the structure provides a foundation for supporting additional TV brands and control protocols in the future.

Why Use This?

  • Natural Language Control: Tell your AI assistant "turn on Netflix" or "increase the volume" without touching a remote
  • Smart Home Integration: Integrate TV control into agentic workflows and automation systems
  • Accessibility: Control your TV through conversational interfaces
  • Development: Build custom applications that leverage AI-powered TV control

Prerequisites

TV Setup

Before using this server, you need to enable external control on your Roku TV:

  1. Enable Network Control:

    • Go to Settings > System > Advanced system settings
    • Select Control by mobile apps
    • Choose Network access and set to Default or Permissive
  2. Find Your TV's IP Address:

    • Go to Settings > Network > About
    • Note the IP address (e.g., 192.168.1.100)
  3. Set Environment Variable:

    export HOST_IP=192.168.1.100  # Replace with your TV's IP
    

System Requirements

  • Python: 3.12 or higher
  • Network: TV and computer must be on the same local network
  • MCP Client: An MCP-compatible client like Claude Desktop, Claude Code, Goose or custom implementations

Features

  • Remote Control: Simulate button presses (navigation, playback, volume, power)
  • App Launching: Launch apps by name (e.g., "Netflix", "YouTube")
  • App Discovery: List all available apps and their IDs
  • Device Info: Query device information

Getting Started

Installation

The package is available on PyPI.

The easiest way to use this server is via uvx, which runs the package directly from PyPI without requiring a separate install step:

uvx mcp-remote-control

Alternatively, install globally with pip:

pip install mcp-remote-control

Using with Claude Desktop

Add this server to your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "tv-control": {
      "command": "uvx",
      "args": ["mcp-remote-control"],
      "env": {
        "HOST_IP": "192.168.1.100"
      }
    }
  }
}

Replace 192.168.1.100 with your TV's IP address.

After updating the config, restart Claude Desktop. You can then ask Claude to control your TV:

  • "Turn on my TV and launch Netflix"
  • "Increase the volume"
  • "What apps are available on my Roku?"

Using with Claude Code

Install the server using the MCP server manager in Claude Code. See the Claude Code documentation for details.

Using with Other MCP Clients

This server uses the standard MCP protocol over stdio. See the MCP documentation for connecting local servers to your MCP client.

Local Development

If you want to modify the server or contribute to development, clone the repository and install in editable mode:

git clone https://github.com/AaronGoldsmith/mcp-remote-control.git
cd mcp-remote-control
pip install -e .
# or with uv:
uv pip install -e .

To use your local development version with Claude Desktop, point to the cloned directory:

{
  "mcpServers": {
    "tv-control": {
      "command": "uv",
      "args": ["--directory", "/absolute/path/to/mcp-remote-control", "run", "mcp-remote-control"],
      "env": {
        "HOST_IP": "192.168.1.100"
      }
    }
  }
}

Replace /absolute/path/to/mcp-remote-control with the actual path to your cloned repository.

Available Tools

press_key(key_name)

Simulates a button press on the TV remote.

  • Navigation: Home, Up, Down, Left, Right, Select, Back
  • Playback: Play, Pause, Rev (Rewind), Fwd (FastForward)
  • Volume: VolumeUp, VolumeDown, VolumeMute
  • Power: PowerOff, PowerOn
  • Other: Info, InstantReplay, Search

launch_app(app_name)

Launches an app by name (case-insensitive). Examples:

  • launch_app("Netflix")
  • launch_app("youtube")
  • launch_app("Disney+")

list_apps()

Lists all available apps with their names and Roku channel IDs.

get_device_info()

Retrieves device information as XML.

power_on()

Powers on the TV.

Supported Apps

The following apps are supported and can be launched by name using launch_app(). App names are case-insensitive and some apps have multiple accepted names (e.g., "Prime Video" or "Amazon Prime Video").

App Name Channel ID Alternative Names
Netflix 12 -
YouTube 837 -
Amazon Prime Video 13 Prime Video
Hulu 2285 -
Disney+ 291097 Disney Plus
HBO Max 61322 -
Apple TV+ 551012 Apple TV
Peacock 593099 -
Paramount Plus 31440 Paramount+
ESPN 34376 -
Tubi 41468 -
Sling TV 46041 -
STARZ 65067 -
CBS 619667 -
CNN 65978 -
Pluto TV 74519 -
SHOWTIME 8838 -

Use list_apps() to see the complete list programmatically.

Example Usage

Once connected to an MCP client, you can use natural language to control your TV:

User: "Turn on my TV and launch Netflix"
Assistant: *uses power_on() and launch_app("Netflix")*

User: "Show me what apps are available"
Assistant: *uses list_apps() to display all installed apps*

User: "Navigate down 3 times and select"
Assistant: *uses press_key("Down") three times, then press_key("Select")*

User: "Pause what's playing"
Assistant: *uses press_key("Pause")*

Learn More

MCP Resources

Roku Resources

Troubleshooting

  • Connection Failed: Ensure your TV and computer are on the same network and the TV's IP address is correct
  • Control Not Working: Verify that "Control by mobile apps" is enabled in your TV settings
  • App Not Launching: Check that the app is installed on your TV using list_apps()
  • Environment Variable: Make sure HOST_IP is set in your shell or MCP client configuration

License

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选