Tuya Audio Controller MCP Service 是涂鸦开源的智能音频播控服务,基于 Model Context Protocol (MCP) 标准构建,连接涂鸦 IoT 云平台与 AI 大模型客户端,使 AI Agent 通过自然语言完成音频设备的播放控制。
项目完全开源(MIT License),开发者可自由部署、修改和二次开发。
| 维度 | 规格 |
|---|---|
| 开源协议 | MIT License |
| 部署方式 | 开发者自部署(本地/云服务器) |
| MCP 框架 | FastMCP (Class-based) |
| 传输协议 | WebSocket + Streamable HTTP 双模 |
| 支持客户端 | Claude Desktop / Cline / Continue.dev 等 |
| 播控意图 | 9 种完整覆盖 |
| 语言支持 | 中/英/日多语言输入 |
| GitHub | https://github.com/tuya-community/tuya-audio-controller-mcp |
AI Client (Claude / Cline / Continue.dev)
│
▼ HTTPS + API Key (Streamable HTTP)
┌─────────────────────────────────────────┐
│ MCP Server (FastMCP) │
│ ┌─────────────┬────────────────────┐ │
│ │ query_tags │ music_play_ctrl │ │
│ └──────┬──────┴─────────┬──────────┘ │
│ │ │ │
│ Tag Service Intent Router │
│ │ ┌────┼────┐ │
│ │ Play Ctrl Mode │
└─────────┼───────────┼────┼────┼─────────┘
│ │ │ │
┌────▼────┐ ┌───▼────▼────▼───┐
│Tuya File│ │ Redis │
│Platform │ │ (State / Token │
│ API │ │ / Playlist) │
└─────────┘ └─────────────────┘
│
┌────▼────────────────┐
│ 涂鸦 IoT 云平台 │
│ (设备控制/MCP SDK) │
└─────────────────────┘
服务同时支持两种传输模式,适配不同接入场景:
| 模式 | 协议 | 适用场景 | 连接方式 |
|---|---|---|---|
| WebSocket | WS/WSS | 对接涂鸦 IoT 云,设备级消息通信 | 涂鸦 MCP SDK 长连接 |
| Streamable HTTP | HTTPS | AI 客户端直连 | RESTful 请求,无状态 |
WebSocket 模式面向设备侧通信(通过涂鸦 MCP SDK),Streamable HTTP 模式面向 AI 客户端(Claude Desktop 等),两种模式可同时运行。
| 组件 | 职责 | 技术选型 |
|---|---|---|
| MCP Server | 工具注册、请求路由、响应编排 | FastMCP (Class-based) |
| Tag Service | 音频标签管理与检索 | 涂鸦 File Platform API |
| Intent Router | 播控意图识别与分发 | 规则路由(Play/Ctrl/Mode 三分支) |
| State Manager | 播放状态、Token、播放列表管理 | Redis |
| Auth Module | 客户端认证与权限校验 | URL API Key + HMAC-SHA256 |
| 意图 | 标识 | 说明 | 参数 |
|---|---|---|---|
| 播放 | play |
按标签检索并播放音频 | tag(标签白名单) |
| 下一首 | next |
切换到播放列表下一首 | - |
| 上一首 | prev |
切换到播放列表上一首 | - |
| 暂停 | stop |
暂停当前播放 | - |
| 继续 | resume |
恢复暂停的播放 | - |
| 重播 | replay |
从头重新播放当前曲目 | - |
| 单曲循环 | single_loop |
设置当前曲目循环播放 | - |
| 顺序循环 | sequential_loop |
播放列表顺序循环 | - |
| 取消循环 | no_loop |
取消循环模式 | - |
服务注册两个 MCP Tool,供 AI 客户端调用:
| Tool | 功能 | 输入 |
|---|---|---|
query_tags |
查询可用音频标签列表 | 无参数 |
music_play_ctrl |
执行播控操作 | intent + tag(可选) |
Tool 描述遵循 MCP 规范,包含完整的参数校验规则和语义说明,确保大模型精准调用。
AI 大模型在调用工具时可能产生幻觉参数(编造不存在的标签或意图)。本服务通过以下机制防范:
| 机制 | 说明 |
|---|---|
| 标签白名单 | play 意图的 tag 参数必须命中白名单,非法标签直接拒绝 |
| 意图枚举 | intent 参数限定为 9 种合法值,非法意图返回错误 |
| 多语言保留 | 中/英/日原始输入直接透传,不做语义推测 |
| 严格校验 | Pydantic 模型确保参数类型和格式正确 |
MCP Tool 的描述质量直接影响大模型调用准确率。本服务的 Tool 描述设计原则:
| 层级 | 机制 | 保护对象 |
|---|---|---|
| 客户端→MCP Server | URL 参数 API Key | 防止未授权 AI 客户端接入 |
| MCP Server→涂鸦云 | HMAC-SHA256 签名 | OpenAPI 调用鉴权 |
| 依赖 | 版本/说明 |
|---|---|
| Python | 3.10+ |
| Redis | 用于状态存储和缓存 |
| 涂鸦开发者账号 | 获取 Access ID / Secret |
| 网络 | 可访问涂鸦 OpenAPI |
# 1. 克隆项目
git clone https://github.com/tuya-community/tuya-audio-controller-mcp.git
cd tuya-audio-controller-mcp
# 2. 配置环境变量
cp .env.example .env
# 编辑 .env,填写:
# TUYA_ACCESS_ID=<涂鸦 Access ID>
# TUYA_ACCESS_SECRET=<涂鸦 Access Secret>
# REDIS_URL=<Redis 连接地址>
# API_KEYS=<客户端认证 Key 列表>
# 3. 安装依赖
pip install -r requirements.txt
# 4. 启动服务
python scripts/manage_services.py start
# 5. 验证运行状态
python scripts/manage_services.py status
在 Claude Desktop / Cline / Continue.dev 中添加 MCP Server:
{
"mcpServers": {
"tuya-audio-controller": {
"url": "https://your-domain.com/mcp?key=your-api-key"
}
}
}
配置完成后即可通过自然语言控制音频设备:
"帮我播放一首周杰伦的歌" → play intent, tag 检索
"下一首" → next intent
"设置单曲循环" → single_loop intent
开源架构支持开发者进行二次开发:
| 扩展方向 | 修改位置 | 说明 |
|---|---|---|
| 新增播控意图 | Intent Router | 添加新的意图处理分支 |
| 扩展音频源 | Tag Service | 对接其他音频平台 API |
| 自定义认证 | Auth Module | 替换为 OAuth / JWT 等方案 |
| 增加设备类型 | MCP Tool 定义 | 扩展至视频设备、灯光等 |
| 调整状态管理 | State Manager | 替换 Redis 为其他存储 |
| 维度 | 传统语音控制 | 自建 API 集成 | Tuya Audio Controller MCP |
|---|---|---|---|
| 接入方式 | 语音助手绑定 | 手动编写调用代码 | MCP 标准协议,AI 客户端即插即用 |
| AI 兼容性 | 单一平台 | 需逐客户端适配 | Claude/Cline/Continue.dev 通用 |
| 防幻觉 | 不涉及 | 需自行处理 | 标签白名单 + 意图枚举 + 严格校验 |
| 部署权 | 厂商托管 | 自建 | 完全自部署(MIT 开源) |
| 扩展性 | 封闭 | 全自研成本高 | 开源架构,按需扩展 |
| 传输模式 | 单一 | 按需选择 | WebSocket + HTTP 双模同时支持 |
MCP(Model Context Protocol)是 AI Agent 工具调用的标准化协议,相比自定义 API 集成的优势:
| 维度 | 自定义 API | MCP 标准协议 |
|---|---|---|
| 客户端兼容 | 逐一适配 | 标准化,所有 MCP 客户端通用 |
| Tool 发现 | 需文档或手动配置 | 自动发现与描述 |
| 参数校验 | 自行实现 | 协议内置 Schema 校验 |
| 生态扩展 | 孤立 | MCP 生态互通 |
| 价值 | 说明 |
|---|---|
| 数据自主 | 音频控制数据不经第三方,满足隐私合规 |
| 可审计 | 代码完全开放,安全性可验证 |
| 可定制 | 按业务需求自由扩展意图、设备类型、认证方式 |
| 无供应商锁定 | MIT 协议,自由 fork 和修改 |
| 参考实现 | 作为 MCP Server 开发模板,可复用架构开发其他 IoT MCP 服务 |
| 场景 | 说明 |
|---|---|
| 智能家居音频控制 | 语音/文字控制家中音箱播放音乐 |
| AI Agent 工具链 | 作为 Agent 能力模块,赋予 AI 音频播控能力 |
| MCP 协议参考实现 | 完整的 MCP Server 开发模板,可复用于其他设备品类 |
| IoT + AI 教学 | 展示 AI 大模型与 IoT 设备连接的完整链路 |
| 企业私有部署 | 自部署满足数据合规要求 |
| 资源 | 地址 |
|---|---|
| GitHub 仓库 | https://github.com/tuya-community/tuya-audio-controller-mcp |
| MCP 协议规范 | https://modelcontextprotocol.io/ |
| 涂鸦 IoT 开放平台 | https://developer.tuya.com/ |
| FastMCP 框架 | https://github.com/jlowin/fastmcp |
| 贡献指南 | 仓库内 CONTRIBUTING.md |
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈