关于 Mbotmcp
Mbotmcp 是一个使用 Spring AI、MCP 和 MQTT 控制 mBot2 机器人的项目,面向搭建机器人与 AI 客户端连接的开发者。它将探索、移动和鸣叫等命令作为工具提供,并通过 MQTT 转发给机器人。
主要功能
- 01提供机器人控制工具
- 02支持探索、停止与鸣叫
- 03控制机器人前后左右移动
- 04通过 MQTT 转发命令
- 05使用自然语言触发机器人操作
适用场景
- 01通过 AI 客户端让 mBot2 探索房间
- 02发送转向和移动指令
- 03控制机器人鸣叫或停止
MCP 相关
Spring 应用通过 MCP 向兼容客户端暴露 mBot2 控制工具,再通过 MQTT 将调用转发给机器人。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MBotMcp
https://github.com/user-attachments/assets/a11d68c5-dc52-4dab-9741-bc1cf47e2ec9
本项目演示如何使用 Spring AI 和 Model Context Protocol(MCP)控制 mBot2 机器人。 通过这套配置,AI 模型可以通过简单的自然语言命令(如“探索”或“左转”)控制实体机器人。
概览
系统由以下部分组成:
- 实现 Model Context Protocol 的 Spring Boot 应用
- 用于消息传递的 MQTT 代理
- 在 mBot2 机器人上运行的 Python 代码
- AI 客户端集成能力
Spring 应用将机器人控制命令作为可供 AI 调用的函数公开, 使 AI 模型能够通过自然语言控制实体机器人。
前提条件
- Java 21
- Maven
- mBot2 机器人和 mBlock IDE
- MQTT 代理(可在 Docker 中运行)
- Java 基础知识
设置说明
1. 设置 MQTT 代理(可选,如果你还没有)
运行附带的 Docker Compose 文件来设置 MQTT 代理:
cd mbotmcp/assets
docker-compose up -d
这会创建一个消息队列,用于在应用和机器人之间转发命令。
2. 配置 Spring Boot 应用
设置以下环境变量:
MQTT_USERNAME=your_username # leave blank if not configured
MQTT_PASSWORD=your_password # leave blank if not configured
MQTT_SERVER_URI=tcp://your_server:1883
这些变量用于告知应用如何连接到 MQTT 代理。
3. 设置 mBot2
将 Python 脚本上传到 mBot2:
- 通过 USB 将 mBot2 连接到电脑
- 在电脑上打开 mBlock IDE
- 点击“File”菜单并选择“Open”
- 导航到仓库中的
/assets目录 - 打开
mbot-mqtt.py文件 - 修改脚本,加入你的个人 WiFi 和 MQTT 配置:
ssid = "<your wifi ssid>" ssid_password = "<your wifi password>" mqtt_ip = "<ip of the mqtt broker>" mqtt_port = 1883 mqtt_user = "<your mqtt username>" mqtt_password = "<your mqtt password>" - 将脚本上传到 mBot2
- 打开 mBot2 电源
4. 构建 Spring Boot 应用
mvn clean package
测试设置
- 确保 MQTT 代理正在运行
- 打开 mBot2 电源,并确保它已连接到 WiFi
- 运行测试客户端:
mvn test -Dtest=ClientStdioTest - 看着机器人在蓝色 LED 灯光下执行“beep”命令!
可用的机器人命令
BotService 类定义了机器人能够理解的所有 MCP 工具:
mbotExplore()- 执行“explore”例程mbotStop()- 停止机器人mbotBeep()- 让机器人发出蜂鸣声mbotLeft()- 让机器人左转mbotRight()- 让机器人右转mbotForward()- 让机器人前进mbotBackward()- 让机器人后退
与 AI 模型集成
一切运行正常后,你可以与支持 MCP 的 LLM 客户端集成。 我个人推荐使用 Goose。 只需将这些客户端指向你的服务,它们就能根据自然语言请求自主控制机器人。
自然语言命令示例:
- “探索房间”
- “右转并前进”
- “发出蜂鸣声”
工作原理
- Spring 应用使用
@Tool注解将机器人命令公开为工具 - Spring 中的 MCP 服务将这些工具连接到外部世界
- AI 想要控制机器人时,会通过该协议调用这些方法
- 命令通过 MQTT 发送给机器人
- 机器人根据收到的消息执行命令
免责声明
如果你的机器人开始谋划统治世界,作者概不负责。 直接拔掉电源,然后快跑!😂
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。