ESP32MCPServer

使用说明(Markdown 格式)

  • 项目简介

    • 该仓库实现了一个完整的 MCP 服务器框架,部署在 ESP32 及相关开发板上,提供通过 JSON-RPC 2.0 的网络接口,向 AI 助手提供传感器数据、可调用的工具、以及可定制的提示模板等能力。
  • 主要功能点

    • MCP 协议核心:通过 WebSocket 使用 JSON-RPC 2.0 通信,支持资源发现、订阅、以及基于资源的推送通知。
    • 资源管理:注册、查询、读取资源,支持资源订阅以便实时更新。
    • 工具与扩展:支持在运行时注册和调用自定义方法,用来对 MCP 客户端暴露新功能。
    • Prompts 与模板:提供可渲染的提示模板,用于构建与 LLM 的交互场景。
    • 传输与发现:支持多路传输与端到端发现(mDNS/ UDP 广播),具备会话与能力声明。
    • 硬件集成:内置 I2C 传感器、CAN/NMEA 总线等驱动,能在 MCU 上获取传感器数据供客户端使用。
    • 测试与本地编译:包含丰富的本地化单元测试,便于离线开发与验证。
  • 安装步骤

    1. 将代码克隆到本地并进入项目目录。
    2. 安装 PlatformIO 及其依赖(PlatformIO Core)。
    3. 根据目标开发板(如 ESP32-S3/ESP32-C3、nRF52840-DK 等)在 PlatformIO 中选择相应环境,如 esp32-s3-devkitc-1。
    4. 构建固件并刷写到设备:
      • 平台命令示例:PlatformIO 的构建与上传流程通常包含以下步骤(在具体环境中执行):构建固件、上传到设备、打开串口监视输出。
    5. 通过串口监视器查看设备启动日志,首次运行时设备会广播并可通过网页端或 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 客户端只需知道服务器地址与端口即可建立连接。该配置适用于描述性文档,帮助在开发环境中理解服务器如何被启动和连接。

  • 基本使用方法

    1. 启动与连接
      • 在设备成功启动并连接到网络后,MCP 客户端应通过 WebSocket 连接到 ws://设备IP:9000。
    2. 常见请求
      • initialize:获取服务器协议版本、能力等初始化信息。
      • resources/list:列出已注册的资源。
      • resources/read:读取某一资源的内容。
      • resources/subscribe:订阅资源以接收变化通知。
      • 通过自定义方法注册扩展能力,如传感数据读取、历史记录等。
    3. 订阅通知
      • 订阅成功后,服务端在资源数据变更时会向订阅客户端推送通知,例如 notifications/resources/updated。
    4. 实践建议
      • 客户端应实现 JSON-RPC 请求的超时处理与回退策略,确保长时间未响应时能够重连。
      • 结合 mDNS/UDP 广播进行局域网内的服务发现,提升部署灵活性。
  • 关键词 ESP32, JSON-RPC, WebSocket, CAN/NMEA, I2C, 局域网发现

  • 分类 8

服务器信息