/ 目錄 / 演練場 / ros-mcp-server
● 社群 robotmcp ⚡ 即開即用

ros-mcp-server

作者 robotmcp · robotmcp/ros-mcp-server

讓 Claude 或 GPT 控制 ROS 機器人 — 發佈主題、呼叫服務、讀取感測器 — 透過 rosbridge,無須改寫程式碼。

robotmcp/ros-mcp-server 透過 rosbridge 將 AI 模型連接到 ROS 1 和 ROS 2 機器人。發佈主題、訂閱、呼叫服務與行動、設定參數、讀取感測器資料。支援各種 ROS 發行版本,包括 Humble 和 Jazzy。

為什麼要用

核心特性

即時演示

實際使用效果

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. 移動機器人
    發佈 Twist 訊息到 /cmd_vel,以 0.2 m/s 向前移動 3 秒鐘,然後停止。✓ 已複製
    → 機器人在模擬器中移動
  3. 讀取感測器
    訂閱 /scan 2 秒鐘並回報 1 公尺內的障礙物。✓ 已複製
    → 距離資料摘要

結果: 一個實時機器人回應自然語言命令。

注意事項
  • 傳送過快的速度命令會導致機器人當機/傾斜 — 在提示詞中限制命令速率;從小速度開始
  • 不安全的自主性 — 沒有地理圍欄 — 始終先在模擬器 (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 搭配,撬動十倍槓桿

將機器人執行紀錄記錄到磁碟以供日後分析

訂閱 /odom 60 秒並將軌跡寫入 /logs/run-2026-04-14.csv。✓ 已複製

工具

此 MCP 暴露的能力

工具輸入參數何時呼叫成本
list_topics 探索機器人 free
publish_topic topic: str, type: str, msg: obj 控制機器人 free
subscribe_topic topic: str, duration_s?: int 讀取感測器資料 free
call_service service: str, request: obj 一次性遠程程序呼叫機器人 free
send_action_goal action: str, goal: obj 長時間執行的任務 (導航、操作) free
get_param name: str 檢查設定 free
set_param name, value 執行時調整 free

成本與限制

運行它的成本

API 配額
無 — 本機 rosbridge WebSocket
每次呼叫 Token 數
主題訊息可能很大 (影像、點雲);避免將高頻寬主題串流到 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。

高頻寬主題導致代理崩潰

不要透過 LLM 訂閱 /camera/image_raw 或 /velodyne_points。在機器人上進行摘要。

替代方案

ros-mcp-server 對比其他方案

替代方案何時用它替代權衡
rosa (NASA JPL)你想要 LangChain 型的 ROS 代理,而不是 MCP不同的架構;無法插入 Claude Desktop

更多

資源

📖 閱讀 GitHub 上的官方 README

🐙 查看未解決的 issue

🔍 瀏覽全部 400+ MCP 伺服器和 Skills