ESP32 NAT Router MCP Bridge
使用说明(Markdown 格式)
-
项目简介
- 该仓库包含一个 MCP 服务器实现,用于通过 MCP 客户端对 ESP32 NAT Router 进行远程管理。核心通过一个 Python 模块 esp_nat_bridge.py 实现,使用 fastmcp 框架定义工具(Tools),从而将路由器的功能暴露给 LLM/自动化代理等客户端。
-
主要功能点
- MCP 服务端:实现了基于 JSON-RPC 的 MCP 服务(工具接口,便于 LLM 调用)。
- 工具集合(Tools):提供 show_status、show_config、show_mappings、get_heap_info、get_version、get_byte_counts、reset_byte_counts、wifi_scan 等多种路由器状态与配置相关操作。
- 安全与连接:通过远程控制台(ESP32 的 Telnet/TCP 界面)实现对路由器的实际命令执行,桥接层负责在 MCP 客户端和 ESP32 远程控制台之间进行通信。
- 传输协议支持:支持 stdio、SSE、streamable-http 等传输方式,方便在不同环境中接入 MCP 客户端。
- 适配生态:README 中明确包含 MCP Bridge(AI-Ready)功能描述,适合与 AI 助手进行联动。
-
安装步骤
- 确保 Python 运行环境与依赖:
- 安装 Python 3.x
- 安装依赖:fastmcp、telnetlib3
- 获取代码后在服务器上执行 esp_nat_bridge.py
- 运行示例(具体命令见下方“服务器配置与启动参数”部分):将根据需要选择传输模式运行
- 确保 Python 运行环境与依赖:
-
服务器配置(MCP 客户端需要的配置示例,JSON 形式)
- server_name: ESP32 NAT Router MCP Bridge
- command: python esp_nat_bridge.py
- args: ["--transport", "stdio"] 或 ["--transport", "streamable-http", "--port", "8000"]
- env:
- ESP_NAT_HOST: "192.168.4.1" (ESP32 NAT Router 的管理端地址)
- ESP_NAT_PORT: "2323" (远程控制台端口)
- ESP_NAT_PASSWORD: "" (如果远程控制台需要认证,可配置密码)
- 注释说明:
- transport 指定 MCP 传输方式,stdio 适合直接 CLI 客户端接入,streamable-http 适合通过 HTTP 传输接入 MCP 客户端。
- host/port/password 与实际设备网络配置保持一致,以确保 MCP 服务端能正确连接 ESP32 的远程控制台。
-
基本使用方法
- 启动 MCP Bridge 服务后,使用 MCP 客户端连接该服务器,调用内部定义的工具接口(如 show_status、set_sta、portmap 等),获取路由器状态、执行配置变更、查询日志等。工具输出会以文本形式返回,便于将结果整合进你的对话/自动化工作流。
- 如需在生产环境中自动化调用,建议使用支持 JSON-RPC 的 MCP 客户端以便与工具进行清晰、可控的交互。
-
运行与调试要点
- 确保 ESP32 NAT Router 处于可访问状态,尤其远程控制台端口(默认 2323)和网络连通性。
- 若 ESP32 的远程控制台要求密码,请在 ESP_NAT_PASSWORD 环境变量中设置正确的密码。
- 根据硬件资源限制,注意启用的特性数量(如 PCAP、MQTT、Web UI 等会占用内存),避免超出设备资源导致服务不可用。
-
注意事项
- 该实现以桥接方式工作,将 MCP 客户端请求转发到 ESP32 的远程控制台执行命令,结果输出以文本形式返回。
- 由于远程控制台本身为未加密的明文 TCP 连接,请在受信任网络中使用,必要时在网络层增加加密与鉴权机制。