/ Annuaire / Playground / ros-mcp-server
● Communauté robotmcp ⚡ Instantané

ros-mcp-server

par robotmcp · robotmcp/ros-mcp-server

Let Claude or GPT drive a ROS-connected robot — publish topics, call services, read sensors — via rosbridge, no code changes.

robotmcp/ros-mcp-server connects AI models to ROS 1 and ROS 2 robots via rosbridge. Publish to topics, subscribe, call services and actions, set parameters, read sensor data. Works across ROS distros including Humble and Jazzy.

Pourquoi l'utiliser

Fonctionnalités clés

Démo en direct

Aperçu en pratique

ros.replay ▶ prêt
0/0

Installer

Choisissez votre client

~/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
    }
  }
}

Ouvrez Claude Desktop → Settings → Developer → Edit Config. Redémarrez après avoir enregistré.

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

Cursor utilise le même schéma mcpServers que Claude Desktop. La config projet l'emporte sur la globale.

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

Cliquez sur l'icône MCP Servers dans la barre latérale Cline, puis "Edit Configuration".

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

Même format que Claude Desktop. Redémarrez Windsurf pour appliquer.

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

Continue utilise un tableau d'objets serveur plutôt qu'une map.

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

Ajoutez dans context_servers. Zed recharge à chaud à la sauvegarde.

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

Une seule ligne. Vérifiez avec claude mcp list. Supprimez avec claude mcp remove.

Cas d'usage

Usages concrets : ros-mcp-server

How to drive a simulated robot from chat

👤 ROS learners, robotics devs prototyping behaviors ⏱ ~30 min intermediate

Quand l'utiliser : You want to test high-level robot behaviors quickly.

Prérequis
  • ROS 2 (Humble/Jazzy) or ROS 1 running — Docker containers for Humble work great for quick starts
  • rosbridge_suite installed + running — ros2 launch rosbridge_server rosbridge_websocket_launch.xml
  • Python 3.10+ + uvx — brew install [email protected] uv
Déroulement
  1. Connect to rosbridge
    Configure the MCP with ROSBRIDGE_URL=ws://localhost:9090 and verify connection.✓ Copié
    → List of active topics returned
  2. Move the robot
    Publish to /cmd_vel a Twist message moving forward at 0.2 m/s for 3 seconds, then stop.✓ Copié
    → Robot moves in sim
  3. Read a sensor
    Subscribe to /scan for 2 seconds and report obstacles within 1m.✓ Copié
    → Range data summary

Résultat : A live robot responding to natural-language commands.

Pièges
  • Sending too-fast velocity commands crashes/tips the robot — Rate-limit commands in your prompt; start with small velocities
  • Unsafe autonomy — no geofence — Always run first in simulation (Gazebo); never wire this to a physical robot without e-stop

How to produce a natural-language robot health summary

👤 Robotics ops teams ⏱ ~15 min beginner

Quand l'utiliser : You want a quick 'what's the robot doing' readout.

Déroulement
  1. List topics
    List all active topics.✓ Copié
    → Topic catalog
  2. Sample key sensors
    Subscribe to /battery_state and /odom for 3 seconds each; summarize.✓ Copié
    → Battery % + pose summary
  3. Check parameters
    Get the value of /navigation.max_velocity.✓ Copié
    → Parameter value

Résultat : Operator-friendly summary of robot state.

How to call a ROS action (e.g., navigate to pose) from chat

👤 Robotics devs testing nav stacks ⏱ ~15 min intermediate

Quand l'utiliser : You want to trigger a goal without writing a client.

Déroulement
  1. Send goal
    Call action /navigate_to_pose with goal x=2.0 y=1.0 yaw=0.✓ Copié
    → Goal accepted, feedback streamed
  2. Monitor feedback
    Stream feedback until goal reached or 30s elapses.✓ Copié
    → Progress + outcome

Résultat : Navigation test without writing a client.

Pièges
  • rosbridge action support varies by version — Use ROS 2 + rosbridge 2.x for best action coverage

Combinaisons

Associez-le à d'autres MCPs pour un effet X10

Log robot runs to disk for later analysis

Subscribe to /odom for 60 seconds and write the trajectory to /logs/run-2026-04-14.csv.✓ Copié

Outils

Ce que ce MCP expose

OutilEntréesQuand appelerCoût
list_topics Discover the robot free
publish_topic topic: str, type: str, msg: obj Command the robot free
subscribe_topic topic: str, duration_s?: int Read sensor data free
call_service service: str, request: obj One-shot RPC to the robot free
send_action_goal action: str, goal: obj Long-running tasks (nav, manipulation) free
get_param name: str Inspect config free
set_param name, value Tune at runtime free

Coût et limites

Coût d'exécution

Quota d'API
None — local rosbridge WebSocket
Tokens par appel
Topic messages can be large (images, pointclouds); avoid streaming high-bandwidth topics into the LLM
Monétaire
Free
Astuce
Never subscribe to image or pointcloud topics into an LLM — summarize on the robot side first.

Sécurité

Permissions, secrets, portée

Portées minimales : Network access to the rosbridge WebSocket
Stockage des identifiants : None by default; put rosbridge behind auth for non-local use
Sortie de données : ROS topics flow to the LLM provider — treat sensor data as going to a third party
Ne jamais accorder : Do not expose rosbridge to the public internet Do not grant autonomy without a hardware e-stop

Dépannage

Erreurs courantes et correctifs

Cannot connect to rosbridge

Ensure rosbridge_server is running and reachable at the URL. For ROS 2: ros2 launch rosbridge_server rosbridge_websocket_launch.xml

Vérifier : nc -vz localhost 9090
Topic publish rejected — unknown type

Pass the exact message type (e.g., geometry_msgs/msg/Twist). Use list_topics to see registered types.

Action feedback not streaming

Older rosbridge versions have spotty action support. Upgrade to 2.x.

High-bandwidth topic crashes the agent

Do not subscribe to /camera/image_raw or /velodyne_points through the LLM. Summarize on-robot.

Alternatives

ros-mcp-server vs autres

AlternativeQuand l'utiliserCompromis
rosa (NASA JPL)You want a LangChain-based ROS agent, not MCPDifferent architecture; not pluggable into Claude Desktop

Plus

Ressources

📖 Lire le README officiel sur GitHub

🐙 Voir les issues ouvertes

🔍 Parcourir les 400+ serveurs MCP et Skills