Integrations
ros2-mcp-サーバー
ros2-mcp-server
、Model Context Protocol(MCP)をROS 2に統合したPythonベースのサーバーです。これにより、AIアシスタントがROS 2トピックを介してロボットを制御できるようになります。FastMCPを介してコマンドを処理し、ROS 2ノードとして動作し、 geometry_msgs/Twist
メッセージを/cmd_vel
トピックにパブリッシュしてロボットの動きを制御します。
この実装では、 pub_cmd_vel
という名前の/cmd_vel
パブリッシャーを使用して、「0.2 m/s で 5 秒間前進して停止する」などのコマンドをサポートします。
特徴
- MCP 統合: FastMCP を使用して、MCP クライアント (例: Claude) からのコマンドを処理します。
- ROS 2 ネイティブ: ROS 2 ノードとして動作し、
/cmd_vel
に直接公開します。 - 時間ベースの制御: 期間ベースの移動コマンドをサポートします (例: 指定された時間移動して停止する)。
- 非同期処理: FastMCP の
asyncio
と ROS 2 のイベント ループを組み合わせて効率的な操作を実現します。
前提条件
- ROS 2 : Humble ディストリビューションをインストールしてソースしました。
- Python : バージョン 3.10 (ROS 2 Humble との互換性のために必要)。
- uv : 依存関係管理用の Python パッケージ マネージャー。
- 依存関係:
rclpy
: ROS 2 Python クライアント ライブラリ (ROS 2 とともにインストールされます)。fastmcp
: MCP サーバー実装用の FastMCP フレームワーク。numpy
: ROS 2 メッセージ タイプで必須。
インストール
- リポジトリのクローンを作成します:Copy
- Pythonバージョン設定:このプロジェクトでは、ROS 2 Humbleの要件に従い、Python 3.10を使用しています。.python
.python-version
ファイルは既に設定されています。Copy - プロジェクトの依存関係:
pyproject.toml
ファイルは必要な依存関係で構成されています。Copy - UV環境を作成:Copy
- 仮想環境をアクティブ化します:コマンド プロンプトの先頭にCopy
(.venv)
が表示され、仮想環境がアクティブであることがわかります。 - 依存関係をインストール:Copy
MCP サーバーの構成
このサーバーをClaudeや他のMCPクライアントで使用するには、MCPサーバーとして設定する必要があります。設定方法は次のとおりです。
クロードデスクトップ向け
- Claude Desktop の設定を開き、MCP サーバー セクションに移動します。
- 次の構成で新しい MCP サーバーを追加します。重要:Copy
/path/to/ros2-mcp-server
リポジトリの実際のパスに置き換えてください。例えば、リポジトリを/home/user/projects/ros2-mcp-server
にクローンした場合は、そのパスを使用してください。 - 設定を保存し、Claude を再起動します。
Cline(VSCode拡張機能)の場合
- VSCode で、サイドバーの Cline アイコンをクリックして、Cline 拡張機能の設定を開きます。
- MCP サーバーの構成セクションに移動します。
- 次の構成で新しい MCP サーバーを追加します。重要: Claude Desktop の例のようにCopy
/path/to/ros2-mcp-server
リポジトリへの実際のパスに置き換えます。 - VSCode を再起動したり拡張機能を再ロードしたりすることなく、Cline MCP 設定インターフェースから直接サーバーのオン/オフを切り替えて接続を確認できます。
使用法
MCP サーバーが設定されると、Claude を使用してロボットにコマンドを送信できるようになります。
- コマンド例: クロードにロボットを 0.2 m/s で 5 秒間前進させるように指示します。Copy
- ツールの直接使用:
move_robot
ツールを直接使用することもできます。Copy - ROS 2 トピックの監視:
/cmd_vel
トピックの出力を確認します。Copy
テスト
- シミュレーターの場合:
- ROS 2 互換シミュレータ (例: TurtleBot3 を搭載した Gazebo) を起動します。Copy
- クロードを使用して移動コマンドを送信します。
- Gazebo でロボットが移動する様子を観察します。
- ROS 2 互換シミュレータ (例: TurtleBot3 を搭載した Gazebo) を起動します。
- 本物のロボットと一緒に:
- ロボットが
/cmd_vel
トピックにサブスクライブするように適切に設定されていることを確認します。 - クロードを使用して移動コマンドを送信します。
- ロボットはコマンドに従って動くはずです。
- ロボットが
- 期待される出力:
- サーバーは移動コマンドと停止コマンドを記録します。
- クロードは次のような応答を受け取ります:
"Successfully moved for 5.0 seconds and stopped"
。
トラブルシューティング
- ROS 2 ログ エラー: ログ ディレクトリ エラーが発生した場合は、
ROS_LOG_DIR
環境変数が書き込み可能なディレクトリ (例:/tmp
) に設定されていることを確認してください。 - Python バージョンの不一致: ROS 2 Humble はこのバージョン用にビルドされているため、Python 3.10 を使用していることを確認してください。
- 接続エラー: Claude が「接続が閉じられました」というエラーを報告する場合は、MCP サーバーの構成が正しいこと、およびすべての依存関係がインストールされていることを確認してください。
ディレクトリ構造
制限事項
- 単一トピック: 現在、
Twist
メッセージで/cmd_vel
をサポートしています。他のトピックやサービスについては、ros2-mcp-server.py
を拡張してください。 - 基本コマンド: 現在はシンプルな移動コマンドをサポートしています。より複雑な動作には追加の実装が必要です。
ライセンス
このプロジェクトでは、Apache License 2.0に基づいてライセンスされているFastMCPを使用しています。FastMCPコンポーネントの使用にも、このライセンスの条項が適用されます。
謝辞
This server cannot be installed
local-only server
The server can only run on the client's local machine because it depends on local resources.
モデル コンテキスト プロトコル (MCP) を ROS 2 と統合し、/cmd_vel トピックを介してロボットの動きに変換する自然言語コマンドを可能にすることで、AI アシスタントがロボットを制御できるようにする Python ベースのサーバーです。
Related MCP Servers
- -securityAlicense-qualityA Model Context Protocol (MCP) integration that allows AI assistants to control Home Assistant devices by searching for entities and controlling devices through natural language commands.Last updated -10PythonMIT License
- AsecurityAlicenseAqualityAn MCP (Model Context Protocol) server that integrates with the ArgoCD API, enabling AI assistants and large language models to manage ArgoCD applications and resources through natural language interactions.Last updated -106PythonMIT License
- AsecurityAlicenseAqualityA server that enables AI assistants to execute terminal commands and retrieve outputs via the Model Context Protocol (MCP).Last updated -36PythonMIT License
- -securityFlicense-qualityA Model Context Protocol server that allows AI assistants to interact with Prefect's workflow automation platform through natural language, enabling users to manage flows, deployments, tasks, and other Prefect resources via conversational commands.Last updated -4Python