本文以「AI 美食管家」为实践案例,详细解析如何基于涂鸦 MCP SDK 构建自定义 MCP 服务,实现 AI Agent 与外部数据源(天气 API、高德地图)及 IoT 设备(烤箱、电饭煲等厨电)的多工具协同编排。
本案例展示的核心技术能力:
| 能力 | 技术实现 |
|---|---|
| 多数据源融合推荐 | 天气、地理位置、用户偏好等多维度上下文注入 |
| IoT 设备联动 | 通过 MCP 工具调用智能厨电设备 |
| 知识库检索增强 | RAG 模式下的菜谱领域知识召回 |
| 自定义 MCP 服务 | 基于涂鸦 MCP SDK 的标准化工具注册与服务接入 |
┌─────────────────────────────────────────────────────┐
│ AI Agent (智能体) │
│ ┌───────────┬───────────┬───────────┬───────────┐ │
│ │ 天气技能 │ 高德地图 │ 智能家居 │ Cook MCP │ │
│ └─────┬─────┴─────┬─────┴─────┬─────┴─────┬─────┘ │
└────────┼───────────┼───────────┼───────────┼────────┘
│ │ │ │
天气 API 高德 API IoT 设备 自定义 MCP 服务
│
┌────────────┼────────────┐
│ │ │
菜谱知识库 LLM 推荐引擎 缓存层
cook/__main__.py)| 设计特性 | 说明 |
|---|---|
| 依赖管理 | 自动协调服务启动顺序,解决组件间依赖 |
| 健康检查 | 实时监控服务状态,支持故障自动修复 |
| 弹性设计 | 网络中断自动重连,指数退避算法 |
| 信号处理 | 优雅关闭 + 资源自动清理 |
cook/recipe_mcp/recipe_mcp_server.py)| 设计特性 | 说明 |
|---|---|
| 双协议支持 | HTTP API + WebSocket,适配不同客户端接入场景 |
| 声明式工具注册 | 通过装饰器快速添加工具,降低开发门槛 |
| 类型安全 | 基于 Pydantic 模型的参数校验 |
| 健康监控 | 内置状态检查与性能指标采集 |
cook/recipe_agent.py)| 设计特性 | 说明 |
|---|---|
| 数据代理 | 统一数据源访问接口,屏蔽底层差异 |
| LLM 代理 | 封装智能推荐算法,支持多场景推荐与智能去重 |
| 多级缓存 | 减少重复网络请求,提升响应性能 |
| 配置管理 | 支持运行时参数灵活调整 |
src/mcp_sdk/)| 设计特性 | 说明 |
|---|---|
| 认证机制 | 签名验证 + 访问控制 |
| 连接管理 | WebSocket 连接池 + 心跳检测 |
| 消息路由 | 高效消息分发与处理 |
| 异常恢复 | 网络故障自动重连与状态恢复 |
完整源码参考:https://github.com/flyhawk1010/cook-mcp
涂鸦 MCP SDK 负责处理自定义 MCP 服务与涂鸦 AI 云平台之间的通信,核心职责包括:
# 涂鸦 MCP SDK 核心配置
config = {
"client_id": "<平台分配的 Client ID>",
"client_secret": "<平台分配的 Client Secret>",
"data_center": "<数据中心区域>", # 如 cn, us, eu
}
from fastmcp import FastMCP
mcp = FastMCP("cook-service")
@mcp.tool()
def get_recipes_by_category(category: str) -> list:
"""按分类查询菜谱"""
# 业务逻辑实现
pass
@mcp.tool()
def recommend_recipes_for_dinner(
people_count: int,
weather: str,
location: str
) -> list:
"""基于多维上下文的智能菜谱推荐"""
# 融合天气、位置、人数等因素
pass
工具通过装饰器声明式注册,SDK 自动完成:
| 依赖项 | 版本要求 |
|---|---|
| Python | 3.10+ |
| LLM 模型 | qwen3-30b-a3b-instruct-2507(阿里云平台获取 API Key) |
| 网络 | 可访问涂鸦平台 + LLM API |
| 资源 | 获取方式 |
|---|---|
| 涂鸦开发者账号 | https://platform.tuya.com/ |
| MCP 服务管理 | https://platform.tuya.com/exp/ai/mcp |
| 智能体管理 | https://platform.tuya.com/exp/ai |
| MCP 开发文档 | https://developer.tuya.com/cn/docs/iot/custom-mcp?id=Kety4zbdvwdn8 |
# 1. 克隆项目
git clone https://github.com/flyhawk1010/cook-mcp
cd cook-mcp
# 2. 安装依赖
pip install -r requirements.txt
# 3. 配置环境变量(MCP SDK 认证信息 + LLM API Key)
cp .env.example .env
# 编辑 .env 填入配置
# 4. 启动服务
python -m cook
Step 1:创建自定义 MCP 服务
在涂鸦 AI 云开发者平台 → MCP 管理 → 添加自定义 MCP:
| 配置项 | 值 |
|---|---|
| 服务名称 | 美食管家 |
| 服务描述 | 基于 AI 的智能菜谱推荐和膳食计划服务,支持根据天气、位置、人数等因素提供个性化饮食建议 |
Step 2:配置数据中心并获取认证信息
在服务详情页添加数据中心,获取 client_id 和 client_secret 用于 SDK 初始化。
Step 3:验证服务连接
服务启动后,在平台服务详情页确认连接状态为「已连接」。
平台提供在线调试能力,支持对已注册工具进行试运行:
// 测试用例 1:按分类查询
{
"tool": "get_recipes_by_category",
"params": { "category": "水产类" }
}
// 测试用例 2:智能推荐(多上下文融合)
{
"tool": "recommend_recipes_for_dinner",
"params": {
"people_count": 4,
"weather": "晴天 32°C",
"location": "杭州"
}
}
调试通过后,工具即可被智能体在运行时动态调用。
通过知识库为智能体注入领域专业知识(菜谱数据),提升推荐质量和回答准确性。本质上是 RAG(Retrieval-Augmented Generation)模式的应用。
| 维度 | 最佳实践 |
|---|---|
| 内容格式 | 统一字段结构:菜品名称、食材、烹饪温度、烹饪时间、步骤 |
| 标签分类 | 按场景标注:早餐/午餐/晚餐、荤菜/素菜、快手菜/慢炖菜 |
| 设备兼容性 | 明确标注适用设备类型和品牌型号(如烤箱温度范围、电饭煲模式) |
| 数据导入 | 支持手动添加和批量导入两种方式 |
创建 → 编辑(草稿) → 发布 → 维护更新
↓
智能体绑定引用
支持状态管理(已发布/草稿/未发布)、内容搜索与筛选。
最终智能体集成以下技能,形成完整的多工具协同链路:
| 技能类型 | 具体技能 | 协同作用 |
|---|---|---|
| 官方技能 | 天气查询 | 为菜谱推荐提供气候上下文 |
| 官方技能 | 高德地图关键字搜索 | 推荐附近食材采购点/餐馆 |
| 官方技能 | 智能家居设备控制 | 联动厨电设备执行烹饪操作 |
| 自定义 MCP | 美食管家(Cook MCP) | 菜谱查询、智能推荐、膳食规划 |
| 知识库 | 菜谱知识库 | RAG 增强,提供领域专业知识 |
用户输入:「今天 4 个人吃晚餐,有什么推荐的?」
用户输入
→ Agent 意图识别
→ 调用【天气技能】获取当前天气
→ 调用【Cook MCP: recommend_recipes_for_dinner】
参数: { people_count: 4, weather: "晴天 32°C", location: "杭州" }
→ 融合知识库检索结果
→ 生成推荐回复
Agent 自动编排多工具调用顺序,将天气查询结果作为菜谱推荐的输入上下文,实现跨工具的数据流转。
智能体提示词应覆盖以下维度:
| 维度 | 内容 |
|---|---|
| 角色设定 | 专业美食管家,熟悉中西餐烹饪 |
| 核心任务 | 基于用户需求和环境上下文推荐菜谱 |
| 规则约束 | 必须考虑过敏原、人数、天气等因素 |
| 工具使用策略 | 何时调用天气、何时调用地图、何时联动设备 |
| 维度 | 涂鸦 MCP SDK | 技术价值 |
|---|---|---|
| 接入方式 | 声明式装饰器注册 | 零学习成本,Python 原生体验 |
| 协议支持 | WebSocket 长连接 | 低延迟、双向通信、连接复用 |
| 可靠性 | 自动重连 + 指数退避 | 生产级容错能力 |
| 安全性 | 签名认证 + 访问控制 | 企业级安全标准 |
| 调试体验 | 平台在线调试 + 本地开发 | 快速迭代验证 |
| 阶段 | 建议 |
|---|---|
| 架构设计 | 微服务架构,服务间松耦合与独立扩展 |
| 工具定义 | 工具描述清晰,参数类型细分准确(影响 Agent 调用准确率) |
| 异常处理 | 覆盖所有可能的错误情况,实现完善的重试机制 |
| 性能优化 | 多级缓存避免重复计算,减少外部 API 调用次数 |
| 测试策略 | 本地优先测试 → 平台调试验证 → 渐进式功能扩展 |
| 可观测性 | 启用详细日志,快速定位工具调用链路问题 |
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈