ESP32 MCP Server 使用说明

项目简介

ESP32MCPServer 是一个在 ESP32 微控制器上运行的 MCP (Model Context Protocol) 服务器实现。它旨在为大型语言模型 (LLM) 客户端提供一个轻量级、低功耗的上下文数据服务后端。通过 WebSocket 协议,ESP32MCPServer 允许客户端发现、访问和订阅设备上的资源,为物联网 (IoT) 应用场景中的 LLM 交互提供基础支持。

请注意: 仓库的 README 标记状态为 "Not Compiling",可能需要用户自行解决编译问题后才能正常使用。

主要功能点

  • MCP 协议实现 (v0.1.0): 实现了基础的 Model Context Protocol,支持客户端以标准化的方式与服务器交互。
  • WebSocket 服务器: 使用 WebSocket 协议进行双向通信,提供实时数据推送和命令接收能力。
  • 资源发现与监控: 支持客户端查询和订阅服务器管理的资源,获取最新的资源状态和数据。
  • WiFi 配置: 通过简单的 Web 界面进行 WiFi 网络配置,方便设备接入网络。
  • 异步处理: 采用异步处理机制,确保服务器在高并发请求下的稳定性和响应速度。
  • 集成测试: 包含全面的测试套件,用于验证服务器功能的正确性和稳定性。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/navado/ESP32MCPServer.git
    cd ESP32MCPServer
  2. 安装依赖:
    pio pkg install
    这个命令会使用 PlatformIO 安装项目所需的库依赖。
  3. 构建并上传文件系统:
    pio run -t uploadfs
    此步骤将文件系统镜像上传到 ESP32,其中可能包含 Web 配置页面等静态资源。
  4. 构建并上传固件:
    pio run -t upload
    此命令编译项目代码并将固件上传到 ESP32 开发板。

服务器配置

MCP 客户端需要配置连接 MCP 服务器的信息。对于 ESP32MCPServer,你需要配置 WebSocket 连接地址。以下是一个 MCP 客户端配置示例 (JSON 格式):

{
  "server name": "ESP32MCPServer",
  "command": "ws://YOUR_ESP32_IP:9000",  // MCP 服务器的 WebSocket 连接地址,请将 YOUR_ESP32_IP 替换为 ESP32 的实际 IP 地址
  "args": {} //  WebSocket 连接通常不需要额外的启动参数,此处为空
}

配置参数说明:

  • server name: MCP 服务器的名称,可以自定义,用于客户端识别。
  • command: 连接 MCP 服务器的命令,对于 WebSocket 服务器,这里是 WebSocket 的 URL 地址,端口默认为 9000。请务必将 'YOUR_ESP32_IP' 替换为你的 ESP32 设备在网络中分配到的 IP 地址。 你可以在 ESP32 连接 WiFi 后,通过串口监视器或者网络状态页面获取 ESP32 的 IP 地址。
  • args: 启动参数,WebSocket 连接通常不需要参数,所以配置为空 JSON 对象 '{}'。

基本使用方法

  1. 首次配置 WiFi:
    • 上电启动 ESP32 后,它会创建一个名为 'ESP32_XXXXXX' 的 WiFi 接入点 (AP)。
    • 使用电脑或手机连接到该 WiFi 网络。
    • 打开浏览器,访问地址 'http://192.168.4.1',进入 WiFi 配置页面。
    • 在配置页面中填写你的 WiFi 网络名称 (SSID) 和密码,保存后 ESP32 会尝试连接到你的 WiFi 网络。
  2. 连接 MCP 服务器:
    • 待 ESP32 连接到 WiFi 网络后,获取其在网络中的 IP 地址。
    • 在 MCP 客户端中,根据 "服务器配置" 章节的说明,配置 MCP 服务器的连接信息,主要是将 'command' 字段设置为 'ws://ESP32_IP:9000',并将 'ESP32_IP' 替换为实际的 IP 地址。
    • 启动 MCP 客户端,客户端会尝试通过 WebSocket 连接到 ESP32MCPServer。
  3. 使用 MCP 功能:
    • 成功连接后,客户端可以发送 MCP 请求与服务器交互,例如:
      • 发送 'initialize' 请求进行初始化。
      • 发送 'resources/list' 请求获取可用资源列表。
      • 发送 'resources/read' 请求读取指定资源的数据。
      • 发送 'resources/subscribe' 请求订阅资源更新通知。
    • 具体请求格式和资源 URI 需要参考 MCP 协议文档以及 ESP32MCPServer 具体实现的资源定义。

请注意: 由于仓库状态为 "Not Compiling",实际使用中可能遇到编译错误或其他问题,需要具备一定的 ESP32 开发和调试能力。

信息

分类

桌面与硬件