/ ディレクトリ / プレイグラウンド / ros-mcp-server
● コミュニティ robotmcp ⚡ 即起動

ros-mcp-server

作者 robotmcp · robotmcp/ros-mcp-server

ClaudeまたはGPTでROS接続ロボットを操縦 — トピック発行、サービス呼び出し、センサー読み取り — rosbridge経由で、コード変更不要です。

robotmcp/ros-mcp-serverはAIモデルをROS 1およびROS 2ロボットに接続します(rosbridge経由)。トピックへの発行・購読、サービスとアクションの呼び出し、パラメータ設定、センサーデータ読み取りが可能です。HumbleやJazzyを含むROS全ディストロで動作します。

なぜ使うのか

主な機能

ライブデモ

実際の動作

ros.replay ▶ 準備完了
0/0

インストール

クライアントを選択

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "ros": {
      "command": "uvx",
      "args": [
        "ros-mcp-server"
      ],
      "_inferred": true
    }
  }
}

Claude Desktop → Settings → Developer → Edit Config を開く。保存後、アプリを再起動。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "ros": {
      "command": "uvx",
      "args": [
        "ros-mcp-server"
      ],
      "_inferred": true
    }
  }
}

Cursor は Claude Desktop と同じ mcpServers スキーマを使用。プロジェクト設定はグローバルより優先。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "ros": {
      "command": "uvx",
      "args": [
        "ros-mcp-server"
      ],
      "_inferred": true
    }
  }
}

Cline サイドバーの MCP Servers アイコンをクリックし、"Edit Configuration" を選択。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "ros": {
      "command": "uvx",
      "args": [
        "ros-mcp-server"
      ],
      "_inferred": true
    }
  }
}

Claude Desktop と同じ形式。Windsurf を再起動して反映。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "ros",
      "command": "uvx",
      "args": [
        "ros-mcp-server"
      ]
    }
  ]
}

Continue はマップではなくサーバーオブジェクトの配列を使用。

~/.config/zed/settings.json
{
  "context_servers": {
    "ros": {
      "command": {
        "path": "uvx",
        "args": [
          "ros-mcp-server"
        ]
      }
    }
  }
}

context_servers に追加。保存時に Zed がホットリロード。

claude mcp add ros -- uvx ros-mcp-server

ワンライナー。claude mcp list で確認、claude mcp remove で削除。

ユースケース

実用的な使い方: ros-mcp-server

チャットからシミュレーテッドロボットを操縦する方法

👤 ROS学習者、ロボティクス開発者がビヘイビア試作する場合 ⏱ ~30 min intermediate

使うタイミング: 高レベルなロボット動作を素早くテストしたい場合。

前提条件
  • ROS 2(Humble/Jazzy)またはROS 1が実行されていること — Humbleのdockerコンテナは素早く開始するのに最適です
  • rosbridge_suiteがインストール・実行されていること — ros2 launch rosbridge_server rosbridge_websocket_launch.xml
  • Python 3.10+ および uvx — brew install [email protected] uv
フロー
  1. rosbridgeに接続
    MCPをROSBRIDGE_URL=ws://localhost:9090で設定し、接続を確認します。✓ コピーしました
    → アクティブトピックのリストが返される
  2. ロボットを移動
    /cmd_velに毎秒0.2 m前進するTwistメッセージを3秒間発行した後、停止します。✓ コピーしました
    → シミュレータでロボットが動く
  3. センサーを読み取る
    /scanに2秒間購読し、1m以内の障害物を報告します。✓ コピーしました
    → 範囲データの要約

結果: 自然言語コマンドに応答するライブロボット。

注意点
  • 速すぎる速度コマンドを送信するとロボットがクラッシュまたは転倒 — プロンプト内でコマンドをレート制限し、小さい速度から開始
  • 安全でない自律動作 — ジオフェンスなし — 常にシミュレーション(Gazebo)で最初に実行し、緊急停止なしで物理ロボットに接続しないでください

自然言語によるロボット健全性要約を作成する方法

👤 ロボティクス運用チーム ⏱ ~15 min beginner

使うタイミング: ロボットの現在状態を素早く把握したい場合。

フロー
  1. トピックをリスト
    すべてのアクティブトピックをリスト✓ コピーしました
    → トピックカタログ
  2. 主要センサーをサンプリング
    /battery_stateと/odomにそれぞれ3秒間購読し、要約します。✓ コピーしました
    → バッテリー% と姿勢要約
  3. パラメータを確認
    /navigation.max_velocityの値を取得します。✓ コピーしました
    → パラメータ値

結果: オペレータ向けロボット状態要約。

チャットからROSアクション(例:ポーズへのナビゲート)を呼び出す方法

👤 ナビゲーションスタックをテストするロボティクス開発者 ⏱ ~15 min intermediate

使うタイミング: クライアントを書かずにゴールをトリガーしたい場合。

フロー
  1. ゴールを送信
    アクション /navigate_to_poseをゴール x=2.0 y=1.0 yaw=0で呼び出します。✓ コピーしました
    → ゴール受け入れ、フィードバックがストリーム
  2. フィードバックを監視
    ゴール到達または30秒経過まで、フィードバックをストリーム✓ コピーしました
    → 進捗と結果

結果: クライアントを書かないナビゲーションテスト。

注意点
  • rosbridgeアクション対応はバージョンにより異なる — 最良のアクション対応にはROS 2 + rosbridge 2.xを使用

組み合わせ

他のMCPと組み合わせて10倍の力を

ロボット実行ログをディスクに記録して後で分析

/odomに60秒間購読し、軌跡を/logs/run-2026-04-14.csvに書き込みます。✓ コピーしました

ツール

このMCPが提供する機能

ツール入力呼び出すタイミングコスト
list_topics ロボットを検出 無料
publish_topic topic: str, type: str, msg: obj ロボットにコマンドを送信 無料
subscribe_topic topic: str, duration_s?: int センサーデータを読み取る 無料
call_service service: str, request: obj ロボットへのワンショットRPC 無料
send_action_goal action: str, goal: obj 長時間実行タスク(ナビゲーション、マニピュレーション) 無料
get_param name: str 設定を確認 無料
set_param name, value 実行時にチューニング 無料

コストと制限

運用コスト

APIクォータ
なし — ローカルrosbridge WebSocket
呼び出しあたりのトークン
トピックメッセージは大きい場合があります(画像、ポイントクラウド)。高帯域幅トピックをLLMにストリーミングするのは避けてください
金額
無料
ヒント
LLMにイメージまたはポイントクラウドトピックを購読しないでください — ロボット側で最初に要約してください。

セキュリティ

権限、シークレット、影響範囲

最小スコープ: rosbridge WebSocketへのネットワークアクセス
認証情報の保管: デフォルトではなし。ローカル以外での使用時はrosbridge認証の背後に配置してください
データ送信先: ROSトピックはLLMプロバイダーに流れます — センサーデータは第三者に送られると扱ってください
絶対に付与しない: rosbridgeをパブリックインターネットに公開しないでください ハードウェア緊急停止なしで自律性を付与しないでください

トラブルシューティング

よくあるエラーと対処法

rosbridgeに接続できない

rosbridge_serverが実行されており、URLで到達可能であることを確認してください。ROS 2の場合: ros2 launch rosbridge_server rosbridge_websocket_launch.xml

確認: nc -vz localhost 9090
トピック発行が拒否されました — 不明な型

正確なメッセージ型を指定してください(例:geometry_msgs/msg/Twist)。list_topicsを使用して登録された型を表示します。

アクションフィードバックがストリーミングされていない

古いrosbridgeバージョンはアクション対応が不安定です。2.xにアップグレードしてください。

高帯域幅トピックがエージェントをクラッシュさせる

/camera/image_rawまたは/velodyne_pointsをLLM経由で購読しないでください。ロボット側で要約してください。

代替案

ros-mcp-server 他との比較

代替案代わりに使う場面トレードオフ
rosa (NASA JPL)LangChainベースのROSエージェントが必要な場合(MCPではなく)異なるアーキテクチャで、Claude Desktopにプラグイン不可

その他

リソース

📖 GitHub の公式 README を読む

🐙 オープンな issue を見る

🔍 400以上のMCPサーバーとSkillsを見る