MCP远程控制
A. 模型上下文协议(MCP) 服务器,使人工智能助手和代理系统能够控制本地网络上的电视。
目前支持: Roku电视通过外部控制协议(ECP)。
什么是MCP?
模型上下文协议是一个开放标准,允许人工智能模型与外部工具和数据源安全地交互。此服务器将电视控件作为MCP工具公开,使Claude等LLM能够通过自然语言命令控制您的电视。
建筑
这个项目的设计考虑到了未来的可扩展性。Roku的具体实现被隔离在 roku_bridge.py,将ECP协议细节与MCP服务器层分离。虽然当前的实现是Roku特有的,但该结构为未来支持其他电视品牌和控制协议奠定了基础。
为什么使用这个?
- 自然语言控制:告诉你的AI助手“打开Netflix”或“增加音量”,而无需触摸遥控器
- 智能家居集成:将电视控制集成到代理工作流程和自动化系统中
- 无障碍:通过对话界面控制电视
- 发展:构建利用人工智能电视控制的自定义应用程序
先决条件
电视设置
在使用此服务器之前,您需要在Roku TV上启用外部控制:
- 启用网络控制:
- 首选 设置 > 系统 > 高级系统设置 - 选择 通过移动应用程序进行控制 - 选择 网络接入 并设置为 默认 或 宽松的
- 查找电视的IP地址:
- 首选 设置 > 网络 > 关于 - 注意IP地址(例如。, 192.168.1.100)
- 设置环境变量:
export HOST_IP=192.168.1.100 # Replace with your TV's IP系统要求
- python:3.12或更高
- 网络:电视和电脑必须在同一个本地网络上
特性
- 遥控器:模拟按钮按下(导航、播放、音量、电源)
- 应用程序启动:按名称启动应用程序(例如“Netflix”、“YouTube”)
- 应用发现:列出所有可用的应用程序及其ID
- 设备信息:查询设备信息
入门指南
安装
该套餐可在 PyPI.
使用此服务器的最简单方法是通过 uvx,它直接从PyPI运行包,不需要单独的安装步骤:
uvx mcp-remote-control或者,使用pip全局安装:
pip install mcp-remote-control与Claude Desktop一起使用
将此服务器添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"tv-control": {
"command": "uvx",
"args": ["mcp-remote-control"],
"env": {
"HOST_IP": "192.168.1.100"
}
}
}
}替换 192.168.1.100 使用电视的IP地址。
更新配置后,重新启动Claude Desktop。然后,你可以让克劳德控制你的电视:
- “打开我的电视并启动Netflix”
- “增加音量”
- “我的Roku上有哪些应用程序?”
使用Claude代码
使用Claude Code中的MCP服务器管理器安装服务器。看 Claude代码文档 了解详情。
与其他MCP客户端一起使用
此服务器通过stdio使用标准MCP协议。看 MCP文件 用于将本地服务器连接到MCP客户端。
地方发展
如果您想修改服务器或参与开发,请克隆存储库并以可编辑模式安装:
git clone https://github.com/AaronGoldsmith/mcp-remote-control.git
cd mcp-remote-control
pip install -e .
# or with uv:
uv pip install -e .要在Claude Desktop中使用本地开发版本,请指向克隆的目录:
{
"mcpServers": {
"tv-control": {
"command": "uv",
"args": ["--directory", "/absolute/path/to/mcp-remote-control", "run", "mcp-remote-control"],
"env": {
"HOST_IP": "192.168.1.100"
}
}
}
}替换 /absolute/path/to/mcp-remote-control 使用克隆存储库的实际路径。
可用工具
press_key(key_name)
模拟电视遥控器上的按钮按下。
- 导航:主页、向上、向下、向左、向右、选择、返回
- 回放:播放、暂停、倒退、快进
- 体积:音量上升、音量下降、音量移动
- 力量:关闭电源,打开电源
- 其他:信息、即时回放、搜索
launch_app(app_name)
按名称启动应用程序(不区分大小写)。示例:
launch_app("Netflix")launch_app("youtube")launch_app("Disney+")
list_apps()
列出所有可用的应用程序及其名称和Roku频道ID。
get_device_info()
以XML形式检索设备信息。
power_on()
打开电视电源。
支持的应用程序
支持以下应用程序,可以使用按名称启动 launch_app()。应用程序名称不区分大小写,有些应用程序有多个可接受的名称(例如“Prime Video”或“Amazon Prime Video”)。
| 应用程序名称 | 频道ID | 备选名称 |
|---|---|---|
| Netflix | 12 | - |
| YouTube | 837 | - |
| 亚马逊Prime视频 | 13 | Prime视频 |
| 葫芦 | 2285 | - |
| 迪士尼+ | 291097 | 迪士尼+ |
| HBO Max | 61322 | - |
| 苹果电视+ | 551012 | 苹果电视 |
| 孔雀 | 593099 | - |
| 派拉蒙Plus | 31440 | 派拉蒙+ |
| 特别是34376 | ||
| 管 | 41468 | |
| 吊索电视 | 46041 | - |
| 斯塔茨 | 65067 | - |
| 哥伦比亚广播公司 | 619667 | - |
| 美国有线电视新闻网 | 65978 | - |
| 冥王星电视 | 74519 | - |
| 放映时间 | 8838 | - |
使用 list_apps() 以编程方式查看完整列表。
示例用法
连接到MCP客户端后,您可以使用自然语言控制电视:
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")*了解更多
MCP资源
- 模型上下文协议文档 -MCP官方文件和规范
- **** -源代码和示例
- MCP服务器注册表 -社区MCP服务器集合
- 构建MCP服务器指南 -学习构建自己的MCP服务器
年度资源
- Roku ECP文件 -官方外部控制协议文件
- Roku开发者门户 -其他Roku开发资源
故障排除
- 连接失败:确保您的电视和电脑位于同一网络上,并且电视的IP地址正确
- 控件不工作:验证您的电视设置中是否启用了“移动应用程序控制”
- 应用程序未启动:使用以下命令检查您的电视上是否安装了该应用程序
list_apps() - 环境变量:确保
HOST_IP在shell或MCP客户端配置中设置
许可证
麻省理工学院
