使用说明
项目简介
MBot MCP Server 是一个基于 Spring Boot 框架构建的 MCP 服务器,旨在通过 Model Context Protocol (MCP) 协议,将 mBot2 机器人的控制能力以标准化的方式暴露给大型语言模型(LLM)。该项目允许开发者使用自然语言指令,通过支持 MCP 协议的客户端(如 Goose),远程控制 mBot2 机器人执行各种动作,例如移动、转向、发出声音等。
主要功能点
- 工具注册与执行: 通过 Spring AI 的 '@Tool' 注解,将 mBot2 机器人的控制命令(如前进、后退、左转、右转、停止、探索、蜂鸣)注册为 MCP 工具,供 LLM 客户端调用。
- MQTT 通信桥梁: 使用 MQTT 协议作为 MCP 服务器与 mBot2 机器人之间的通信桥梁。服务器接收到 LLM 客户端的工具调用请求后,通过 MQTT 协议向 mBot2 发送控制指令。
- Stdio 传输协议: MCP 服务器默认使用 Stdio (标准输入输出) 作为与 MCP 客户端的通信协议,方便本地测试和部署。
- Spring Boot 框架: 基于成熟的 Spring Boot 框架开发,易于配置、部署和扩展。
- 示例客户端: 提供基于 Stdio 传输协议的 Java 客户端示例 (ClientStdioTest.java),方便用户快速测试和理解 MCP 服务器的功能。
安装步骤
-
环境准备:
- 确保已安装 Java 21 及以上版本。
- 确保已安装 Maven 构建工具。
- 准备 mBot2 机器人 和 mBlock IDE 开发环境。
- 准备 MQTT Broker (消息队列服务器),例如可以使用 Docker 快速部署,或者使用已有的 MQTT 服务。
-
MQTT Broker 设置 (可选):
- 如果您没有 MQTT Broker,可以使用仓库 assets 目录下的 'docker-compose.yml' 文件快速启动一个 MQTT Broker (Mosquitto)。
cd mbotmcp/assets docker-compose up -d
- 如果您没有 MQTT Broker,可以使用仓库 assets 目录下的 'docker-compose.yml' 文件快速启动一个 MQTT Broker (Mosquitto)。
-
配置 Spring Boot 应用:
- 设置以下环境变量,配置 MCP 服务器连接 MQTT Broker 的信息。
注意: 请将 'your_username', 'your_password', 'your_server' 替换为您的 MQTT Broker 的实际配置信息。如果 MQTT Broker 运行在本地,'your_server' 可以设置为 'localhost' 或 '127.0.0.1'。MQTT_USERNAME=your_username # MQTT Broker 用户名,如果不需要认证则留空 MQTT_PASSWORD=your_password # MQTT Broker 密码,如果不需要认证则留空 MQTT_SERVER_URI=tcp://your_server:1883 # MQTT Broker 服务器地址,例如 tcp://localhost:1883 或 tcp://broker.example.com:1883
- 设置以下环境变量,配置 MCP 服务器连接 MQTT Broker 的信息。
-
mBot2 机器人设置:
- 使用 USB 数据线连接 mBot2 机器人到电脑。
- 打开 mBlock IDE 软件。
- 在 mBlock IDE 中,点击 "文件" -> "打开",导航到仓库的 '/assets' 目录。
- 打开 'mbot-mqtt.py' 文件。
- 修改 'mbot-mqtt.py' 文件中的 WiFi 和 MQTT 配置信息,替换为您自己的 WiFi 和 MQTT Broker 的信息。
ssid = "<your wifi ssid>" # 您的 WiFi SSID ssid_password = "<your wifi password>" # 您的 WiFi 密码 mqtt_ip = "<ip of the mqtt broker>" # MQTT Broker IP 地址,例如 "192.168.1.100" 或 MQTT Broker 的域名 mqtt_port = 1883 # MQTT Broker 端口,默认为 1883 mqtt_user = "<your mqtt username>" # MQTT Broker 用户名,如果不需要认证则留空 mqtt_password = "<your mqtt password>" # MQTT Broker 密码,如果不需要认证则留空 - 在 mBlock IDE 中,点击 "连接" -> "连接设备",连接到 mBot2 机器人。
- 点击 "上传" 按钮,将修改后的 'mbot-mqtt.py' 脚本上传到 mBot2 机器人。
- 上传完成后,断开 USB 连接,并 打开 mBot2 机器人的电源。确保 mBot2 机器人已连接到配置的 WiFi 网络。
-
构建 Spring Boot 应用:
- 在命令行终端中,进入 'mbotmcp' 仓库根目录。
- 执行 Maven 命令构建 Spring Boot 应用。
mvn clean package - 构建成功后,会在 'target' 目录下生成 'mbotmcp-0.0.1-SNAPSHOT.jar' 文件。
服务器配置
MCP 客户端需要配置 MCP 服务器的启动命令和参数才能连接并使用其功能。对于 'mbotmcp' 项目,您可以使用以下 JSON 格式配置信息:
{ "serverName": "mbotmcp-server", "command": "java", "args": [ "-jar", "./target/mbotmcp-0.0.1-SNAPSHOT.jar" ], "transport": "stdio" }
参数说明:
- 'serverName': 服务器名称,可以自定义,用于标识该服务器连接配置。
- 'command': 启动服务器的命令,这里是 'java',假设您的 Java 环境已配置到 PATH 环境变量中。
- 'args': 启动服务器命令的参数列表。
- '"-jar"': 指定以 JAR 包方式运行 Java 应用。
- '"./target/mbotmcp-0.0.1-SNAPSHOT.jar"': 指定要运行的 JAR 包文件路径,请确保该路径与您实际构建生成的 JAR 包文件路径一致。
- 'transport': 指定 MCP 客户端与服务器之间的传输协议,这里是 'stdio',表示使用标准输入输出进行通信。
MCP 客户端配置示例 (以 Goose 为例): 在 Goose 客户端的配置文件中,添加上述 JSON 配置信息到 'servers' 数组中。这样 Goose 客户端就能识别并连接到 'mbotmcp-server'。
基本使用方法
-
启动 MCP 服务器:
- 在命令行终端中,进入 'mbotmcp' 仓库根目录。
- 确保 MQTT Broker 已运行,mBot2 机器人已开机并连接到 WiFi。
- 执行以下命令启动 Spring Boot MCP 服务器。
java -jar ./target/mbotmcp-0.0.1-SNAPSHOT.jar - 服务器成功启动后,会监听 Stdio 的输入,等待 MCP 客户端的请求。
-
运行测试客户端 (可选):
- 在命令行终端中,进入 'mbotmcp' 仓库根目录。
- 执行 Maven 命令运行测试客户端 'ClientStdioTest'。
mvn test -Dtest=ClientStdioTest - 测试客户端会连接到 MCP 服务器,列出可用的工具,并调用 'mbotBeep' 工具,您应该能看到 mBot2 机器人发出蜂鸣声并闪烁蓝色 LED 灯。
-
使用 MCP 客户端 (例如 Goose) 控制 mBot2:
- 配置您的 MCP 客户端 (例如 Goose) 连接到 'mbotmcp-server' (使用上面提供的服务器配置 JSON)。
- 在 MCP 客户端中,可以使用自然语言指令指示 mBot2 机器人执行动作,例如:
- "让机器人探索房间"
- "向右转弯并前进"
- "发出哔哔声"
- MCP 客户端会将自然语言指令转换为对 MCP 工具的调用,MCP 服务器接收到调用后,会通过 MQTT 协议控制 mBot2 机器人执行相应的动作。
注意: 请确保 MQTT Broker、MCP 服务器和 mBot2 机器人都运行在同一个网络环境中,并且网络通信正常。
信息
分类
桌面与硬件