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 云端服务器中转。

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。