Mbotmcp について
Mbotmcpは、Spring AI、MCP、MQTTを使ってmBot2を制御するプロジェクトです。ロボットとAIクライアントを連携させる開発者向けで、探索や移動、ビープ音などのコマンドをツールとして公開し、MQTTでロボットに送ります。
主な機能
- 01ロボット制御ツールの公開
- 02探索、停止、ビープ音に対応
- 03前後左右への移動
- 04MQTTによるコマンド転送
- 05自然言語によるロボット操作
活用シーン
- 01AIクライアントから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 を点灯させながら「ビープ」コマンドを実行する様子を確認します!
利用可能なロボットコマンド
BotService クラスでは、ロボットが認識できるすべての MCP ツールを定義しています。
mbotExplore()- 「探索」ルーチンを実行しますmbotStop()- ロボットを停止しますmbotBeep()- ロボットからビープ音を鳴らしますmbotLeft()- ロボットを左に曲げますmbotRight()- ロボットを右に曲げますmbotForward()- ロボットを前進させますmbotBackward()- ロボットを後退させます
AI モデルとの連携
すべてが動作したら、MCP に対応した LLM クライアントと連携できます。 個人的には、この用途には Goose をおすすめします。 クライアントからサーバーに接続するだけで、自然言語によるリクエストに基づいて、ロボットを自律的に制御できます。
自然言語コマンドの例:
- 「部屋を探索して」
- 「右に曲がって前進して」
- 「ビープ音を鳴らして」
仕組み
- Spring アプリケーションは、
@Toolアノテーションを使ってロボットコマンドをツールとして公開します - Spring の MCP サーバーが、これらのツールを外部と接続します
- AI がロボットを制御する際、プロトコルを通じてこれらのメソッドを呼び出します
- コマンドは MQTT 経由でロボットに送信されます
- ロボットは受信したメッセージに基づいてコマンドを実行します
免責事項
ロボットが世界征服を企て始めても、作者は一切責任を負いません。 電源を抜いて走って逃げてください! 😂
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。