ESP32MCPServer
使用说明(Markdown 格式)
-
项目简介
- 该仓库实现了一个完整的 MCP 服务器框架,部署在 ESP32 及相关开发板上,提供通过 JSON-RPC 2.0 的网络接口,向 AI 助手提供传感器数据、可调用的工具、以及可定制的提示模板等能力。
-
主要功能点
- MCP 协议核心:通过 WebSocket 使用 JSON-RPC 2.0 通信,支持资源发现、订阅、以及基于资源的推送通知。
- 资源管理:注册、查询、读取资源,支持资源订阅以便实时更新。
- 工具与扩展:支持在运行时注册和调用自定义方法,用来对 MCP 客户端暴露新功能。
- Prompts 与模板:提供可渲染的提示模板,用于构建与 LLM 的交互场景。
- 传输与发现:支持多路传输与端到端发现(mDNS/ UDP 广播),具备会话与能力声明。
- 硬件集成:内置 I2C 传感器、CAN/NMEA 总线等驱动,能在 MCU 上获取传感器数据供客户端使用。
- 测试与本地编译:包含丰富的本地化单元测试,便于离线开发与验证。
-
安装步骤
- 将代码克隆到本地并进入项目目录。
- 安装 PlatformIO 及其依赖(PlatformIO Core)。
- 根据目标开发板(如 ESP32-S3/ESP32-C3、nRF52840-DK 等)在 PlatformIO 中选择相应环境,如 esp32-s3-devkitc-1。
- 构建固件并刷写到设备:
- 平台命令示例:PlatformIO 的构建与上传流程通常包含以下步骤(在具体环境中执行):构建固件、上传到设备、打开串口监视输出。
- 通过串口监视器查看设备启动日志,首次运行时设备会广播并可通过网页端或 MCP 客户端连接。
-
服务器配置(MCP 客户端需要的最小连接信息,示例 JSON) { "serverName": "ESP32MCPServer", "command": "PlatformIO 上传并启动 ESP32 固件", "args": [ "-e esp32-s3-devkitc-1", "-t upload", "-t monitor" ], "description": "ESP32 设备上运行的 MCP 服务固件,启动后通过 ws://<设备IP>:9000 提供 MCP 服务。设备在首次连接时会进行 WiFi 配置与网络发现。客户端应以 WebSocket 连接到该地址并使用 JSON-RPC 调用。" } 说明:上述 command/args 为客户端配置示例,实际连接由设备固件在启动时自行运行与网络初始化,MCP 客户端只需知道服务器地址与端口即可建立连接。该配置适用于描述性文档,帮助在开发环境中理解服务器如何被启动和连接。
-
基本使用方法
- 启动与连接
- 在设备成功启动并连接到网络后,MCP 客户端应通过 WebSocket 连接到 ws://设备IP:9000。
- 常见请求
- initialize:获取服务器协议版本、能力等初始化信息。
- resources/list:列出已注册的资源。
- resources/read:读取某一资源的内容。
- resources/subscribe:订阅资源以接收变化通知。
- 通过自定义方法注册扩展能力,如传感数据读取、历史记录等。
- 订阅通知
- 订阅成功后,服务端在资源数据变更时会向订阅客户端推送通知,例如 notifications/resources/updated。
- 实践建议
- 客户端应实现 JSON-RPC 请求的超时处理与回退策略,确保长时间未响应时能够重连。
- 结合 mDNS/UDP 广播进行局域网内的服务发现,提升部署灵活性。
- 启动与连接
-
关键词 ESP32, JSON-RPC, WebSocket, CAN/NMEA, I2C, 局域网发现
-
分类 8