玩转小智AI MCP学习总结
·
1.效果预览
1.1 小智MCP控制舵机
1.2 MCP控制步进电机
2.课程正文
2.1 课程介绍
- 普通的对话机器人,无法控制一些硬件。
- MCP:把聊天的对话转成真实的控制
2.2 MCP介绍
- MCP:给所有的工具统一了一套通用语言,是AI世界的USB标准
2.3 官方MCP示例实操
- 通过示例搭建一个自己的MCP,从Github上下载示例代码。然后还要配置MCP示例项目
- 主要分三步配置我们的示例MCP

- 复制我们的克隆代码地址,然后cd 路径,后面跟上第一步
- 配置环境变量。变量值是接入点地址


- 第三步cd 路径 然后计算器的pathon代码。


- 这里的cacul是计算的MCP服务
2.4 MCP交互流程介绍
- MCP 是小智机器人用来"听懂人话、调用工具"的中间层协议:你说话 → AI 理解意图 → 通过 WebSocket/HTTP 调用你写的本地代码(如
calculator.py)→ 结果返回给 AI → 语音播报给你。 
2.5 ESP32简单MCP入门
- 把esp32作为MCP服务端
- 以esp32 dev开发板创建一个Clion的文件
- 引入第三方库:xiaozhi-mcp,ArduinoJson,WebSockets
- 然后在.pio里面打开示例代码。
- 目的:在小智MCP里面添加控制亮灯的命令。

2.6 简单改造MCP
- 通过改造json的形式改造MCP闪烁指令。
- 格式JSON规范
- 通过终端也能上传代码:

- 目的:通过改造JSON的指令,让MCP功能更加完善
2.7 JSON学习
- JSON是一种文本规范或一种字符串规范
- Json文本本质是一条字符串

2.8 MCP控制舵机
- 怎么自己创建一个MCP

- 这个函数的第四个参数是这样的形式

- 创建一个新的MCP流程:

- 温湿度读取工具的举例。
-
// 步骤1 WebSocketMCP::ToolResponse readDHT(const String& args) { float temp = dht.readTemperature(); float hum = dht.readHumidity(); return WebSocketMCP::ToolResponse( "{\"success\":true,\"temp\":" + String(temp) + ",\"hum\":" + String(hum) + "}" ); } // 步骤2+3(放 registerMcpTools 里) mcpClient.registerTool( "read-dht", "读取 DHT11 温湿度传感器数据", "{\"type\":\"object\",\"properties\":{}}", // 无参数的纯读取工具 readDHT ); // 步骤4(放 setup 里) // dht.begin(); 像这样初始化传感器
2.9 MCP控制WS2812灯珠
- 先把WS2812以及ESP32连接好。然后增加MCP代码指令。
- 氛围灯(WS2812)和小灯(板载)区分

2.10 MCP控制步进电机
- 根据JSON格式写处理函数代码的。
-
WebSocketMCP::ToolResponse motorControl(const String &args) { JsonDocument doc; deserializeJson(doc, args); auto dir = doc["dir"].as<boolean>(); auto speed = doc["speed"].as<String>(); auto turns = doc["turns"].as<double>(); driveMotor(dir, speed, turns); return WebSocketMCP::ToolResponse("{\"success\":true}"); } - 回调函数写主要的逻辑代码。

- 注意变化

- 一共跟着老师学了4个MCP功能

3.项目总结
- 以后只要加一个新硬件,照这四步抄就行(你后来加的每个工具都是这么做的):

-
PlatformIO + Arduino 框架,统一套路:每个工具 = 处理函数 + JSON Schema + setup 初始化(MCP 四步模板)
-
ESP32也需要联网才能加载出MCP模块,完全不需要同一个网。 上图就是通信链路——ESP32 和小智之间没有直连,都各自连到 api.xiaozhi.me 云端服务器中转。
-


所有评论(0)