跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++AI

小智 AI 完整的 MCP 交互流程

ESP32 设备通过 WebSocket 连接小智 AI 服务器,建立 MCP 协议通信。初始化阶段注册常用工具并连接服务器。随后 AI 查询设备能力,ESP32 响应工具列表请求,包含音量控制等工具定义及参数 Schema。该流程展示了嵌入式设备与 AI 模型交互的标准 MCP 握手步骤。

1qazxsw2发布于 2025/12/3更新于 2026/10/24119 浏览

1. 初始化阶段 - 设备与 AI 服务器建立连接

// ESP32 设备启动时
void Application::Initialize() {
  // ...其他初始化
#if CONFIG_IOT_PROTOCOL_MCP
  McpServer::GetInstance().AddCommonTools(); // 注册 MCP 工具
#endif
  // 建立与小智 AI 的连接
  protocol_->Connect(); // WebSocket 连接到小智 AI
}

连接建立过程:

ESP32 设备 → 小智 AI 服务器 WebSocket 连接:wss://api.xiaozhi.me/mcp/device/{device_id}

2. 工具注册阶段 - AI 获取设备能力

当连接建立后,小智 AI 会查询设备的 MCP 工具列表:

AI 服务器发送工具列表请求:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/list",
  "params": {}
}

ESP32 设备响应(基于 mcp_server.cc):

// 在 McpServer::HandleRequest 中处理
void McpServer::HandleRequest(const std::string& request) {
  cJSON* json = (request.());
   method = (json, );
   ((method->valuestring, ) == ) {
    
    cJSON* response = ();
    cJSON* result = ();
    cJSON* tools = ();
    
    cJSON* volume_tool = ();
    (volume_tool, , );
    (volume_tool, , );
    
    cJSON* input_schema = ();
    (input_schema, , );
    cJSON* properties = ();
    cJSON* volume_prop = ();
    (volume_prop, , );
    
  }
}
cJSON_Parse
c_str
auto
cJSON_GetObjectItem
"method"
if
strcmp
"tools/list"
0
// 返回工具列表
cJSON_CreateObject
cJSON_CreateObject
cJSON_CreateArray
// 添加音量控制工具
cJSON_CreateObject
cJSON_AddStringToObject
"name"
"self.audio_speaker.set_volume"
cJSON_AddStringToObject
"description"
"Set the volume of the audio speaker. If the current volume is unknown, you must call self.get_device_status tool first and then call this tool."
// 添加工具参数 schema
cJSON_CreateObject
cJSON_AddStringToObject
"type"
"object"
cJSON_CreateObject
cJSON_CreateObject
cJSON_AddStringToObject
"type"
"integer"
// ...后续逻辑省略

目录

  1. 1. 初始化阶段 - 设备与 AI 服务器建立连接
  2. 2. 工具注册阶段 - AI 获取设备能力

更多推荐文章

查看全部
  • WebDriverAgent 技术深度解析
  • Qwen3-VL 结合 Dify 实现 OCR 增强与空间感知实战
  • 基于指数预定义时间控制的固定翼无人机轨迹跟踪控制(Matlab 仿真)
  • 5 款设计师必备的 Stable Diffusion 模型,涵盖 3D、电商与 B 端场景
  • DeepSeek-R1 大模型基于 MS-Swift 框架部署与微调实践
  • Python 海龟绘图实战:绘制哆啦 A 梦、海绵宝宝与皮卡丘
  • 彻底关闭Win10中烦人的365 Copilot弹窗的6种方法
  • 大模型 AI Agent 在企业应用中的 6 种基础类型
  • Neo4j 在 Windows 上的安装与配置指南
  • 国内主流 AI 工具对比:豆包、元宝、千问、Kimi 等七款模型
  • AI 写作辅助平台深度评测:炼字工坊与蛙蛙写作
  • 66 个可直接访问的机器人项目合集!涵盖科研 / 教育 / 工业 / 医疗(附详细介绍与项目代码链接)
  • Linux ELF 格式与可执行程序加载全解析:从磁盘文件到运行进程
  • Python 入门指南:初学者友好的编程语言详解
  • GPT-4o 多模态交互与端侧应用玩法解析
  • 用原生 JavaScript 和 Canvas 实现网页截图:从底层原理到下载
  • 2023 年网络安全行业前景预测
  • Transformer 核心机制解析:自注意力与多头机制
  • PX4 与 ROS 集成:无人机 Offboard 控制模式解析与实战
  • VS Code 无法下载 .vsix 插件的离线安装方案(以 C/C++ 插件为例)

相关免费在线工具

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online