使用说明
在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