ESP32 MCP服务器

基于ESP32的MCP服务器,实现AI助手与物理设备的实时交互控制,适用于智能家居、实验室设备控制和教育演示等场景。

  • by jurgen178
  • C++
  • 本地部署
  • 8 星标
  • 更新于
在 GitHub 查看 jurgen178/esp32-mcp

使用说明

在ESP32上构建MCP服务器:将AI助手连接到现实世界的设备

通过模型上下文协议将人工智能与物理世界连接起来

详见 StickyMCP:即使在云端也能坚持的笔记MCP服务器为人工智能系统与现实世界的工具进行交互打开了大门,远远超出了它们通常的静态训练数据和存在无聊的饮食。

该项目汇集了两项尖端技术:模型上下文协议(MCP)和Arduino微控制器。结果是一个直接在Arduino Nano ESP32上运行的MCP服务器,允许AI助手实时控制物理硬件。


视频:
(有些提示输入有点错误,因为我的相机挡住了路,但Copilot Chat根本不介意)





由于没有官方的C++MCP SDK,我构建了一个针对嵌入式系统优化的SDK。具有自动JSON模式生成、基于注册表的工具发现和内存安全执行功能。架构反映了官方SDK(TypeScript/Python),同时解决了嵌入式约束。证明完全符合硬件控制工具的协议。我保持了它的小和可读性,并使其能够运行简单的工具,如开关灯。


这是怎么一回事?

该项目在Arduino Nano ESP32微控制器上实现了一个完全兼容的JSON-RPC 2.0 MCP服务器。它将硬件控件(在这种情况下为LED)作为MCP“工具”公开,AI助手可以通过自然语言命令调用这些工具。

主要特点

  • MCP协议支持:通过正确的初始化、工具列表和工具执行实施MCP 2024-11-05规范
  • JSON-RPC 2.0合规性:用于可靠通信的标准协议接口
  • 带二维码的OLED显示屏:将服务器URL显示为可扫描的二维码,便于移动设备访问
  • WiFi已启用:在端口8000上运行web服务器,使其可以通过网络访问
  • 服务器发送事件(SSE):用于监控的实时通知和日志流
  • 多个LED控制:独立管理内置LED和RGB LED(红、绿、蓝)
  • 回声工具:用于测试和演示的简单文本回显

技术实现

服务器使用ESPAsyncWebServer库处理HTTP请求,使用ArduinoJson进行JSON解析/序列化。它暴露了两个主要端点:

  • POST /mcp -所有MCP方法的JSON-RPC 2.0主端点
  • GET /sse -服务器发送实时通知的事件流

每个LED都被实现为一个MCP工具,带有一个简单的布尔参数来打开或关闭它。服务器处理所有MCP生命周期方法,包括初始化、能力协商和工具调用。

实际应用

该项目展示了人工智能助手如何无缝控制物理设备。不用编写自定义脚本或手动API调用,你只需告诉人工智能助手“打开红色LED”,它就会发生。这为以下方面开辟了可能性:

  • 由自然语言控制的智能家居自动化
  • 通过人工智能助手控制实验室设备
  • 人工智能硬件集成教育示范
  • 具有对话界面的物联网设备的快速原型制作

技术栈:

  • Arduino纳米ESP32
  • 特别:
  • ArduinoJson
  • 模型上下文协议(MCP)2024-11-05
  • JSON-RPC 2.0

另请参阅我的 BitBlog