PlugWiki
ros-mcp-server logo

ROS MCP Server: Control ROS Robots from Claude and Cursor

CommunityLocal

Lets Claude, Cursor and other assistants read from and control ROS and ROS 2 robots through rosbridge.

This is a community server from the robotmcp project. It runs on your computer and talks to the robot through rosbridge, which you start on the robot's machine. The assistant can list topics, services, actions and parameters, read sensor data, and send commands.

It works with ROS 1 and ROS 2, but the action and parameter tools work only with ROS 2. A real robot can move when you send commands, so test in simulation first.

Good for

  • Robotics developers who want to debug topics, services and parameters by asking questions
  • Teams testing a robot in simulation, such as turtlesim or Isaac Sim, with plain-language commands
  • Technicians who want the assistant to run diagnostic tests on a robot they are working on

Works in

12 should work

Tap an app to see how to set it up and any known problems.

Install ros-mcp-server

Claude Code

  1. 1

    Copy this prompt.

    Add the ros-mcp-server server to Claude Code. Run this command:
    
    claude mcp add ros -- uvx ros-mcp
    
    Then check that it loaded and tell me if I need to sign in or restart.
  2. 2

    Paste it into Claude Code. It shows the change and asks before running it.

Requires uv (Python), rosbridge running on the robot.

Read-only mode: There is no read-only mode. Approve only the tools that list and read.

Start rosbridge on the robot first: install the rosbridge server package for your ROS distro, then launch it (see the install guide). Then tell the assistant the robot's IP address and port 9090. Our configs are adapted from the guide's Claude Code example, which uses uvx and the ros-mcp package. Python 3.10 or later is needed.

Built from the package data we hold. Not yet tested by us.

Tools

  • Points the server at your robot and checks it answers

    Sets the robot's IP address and port, then tests that the robot is reachable and the port is open.

    Try: “Connect to the robot at 192.168.1.50”

    Network · connect_to_robot

  • Checks which robots are reachable on your network

    Pings one or more addresses and checks whether the rosbridge port is open. An answer from the address but not the port suggests rosbridge is not running.

    Try: “Check if the robots at 192.168.1.100 and 192.168.1.101 are up”

    Network · ping_robots

  • Tells you which ROS version the robot runs

    Asks the robot, through rosbridge, which ROS version and distribution it is on.

    Try: “Is this robot on ROS 1 or ROS 2?”

    Network · detect_ros_version

  • Lists the topics the robot publishes

    Returns every ROS topic currently available.

    Try: “What topics does the robot have?”

    Network · get_topics

  • Shows the message type of one topic

    Returns the type of messages that a topic carries.

    Try: “What message type is /cmd_vel?”

    Network · get_topic_type

  • Shows a topic with its publishers and subscribers

    Returns the topic's type and which nodes publish and subscribe to it.

    Try: “Who publishes and subscribes to /cmd_vel?”

    Network · get_topic_details

  • Shows the fields of a message type

    Returns the full structure of a message type so the assistant can build valid messages.

    Try: “Show me the fields in geometry_msgs/Twist”

    Network · get_message_details

  • Reads one message from a topic

    Waits for the first message on a topic and returns it. Image messages from camera topics are saved to a local file.

    Try: “Read one message from /odom”

    Files · subscribe_once

  • Listens to a topic for a few seconds

    Collects messages from a topic for a set time, up to a maximum count, and can limit the rate for fast topics.

    Try: “Listen to /scan for 5 seconds”

    Files · subscribe_for_duration

  • Shows an image saved earlier from a camera topic

    Opens an image file from disk, by default the last camera frame, without subscribing again.

    Try: “Show me the last camera image”

    Files · view_saved_image

  • Lists the running ROS nodes

    Returns every node currently running.

    Try: “Which nodes are running?”

    Network · get_nodes

  • Shows what one node publishes, subscribes to and offers

    Returns the node's publishers, subscribers and services.

    Try: “What does the /turtlesim node publish?”

    Network · get_node_details

Read from the source code

Permissions

high risk · 4 things to watch

High risk

The assistant can move a real robot and change or delete its parameters, and there is no read-only mode. Test in simulation first and approve each command that moves hardware.

What it can do

  • Read your data
  • Create and change things
  • Delete things
  • Read-only mode

Watch out for

  • It can move a real robot

    Publishing messages, calling services and sending action goals can make a robot move. Keep the robot clear and the emergency stop in reach, and test in simulation first. github.com

  • It can delete and change robot parameters

    delete_parameter removes a parameter and set_parameter changes one on a running node. Write down the current values before you let the assistant change them. github.com

  • There is no read-only mode

    All 31 tools load every time. Only approve read tools such as listing topics and reading messages, and review each command before you allow it. github.com

  • Camera frames are saved to disk

    Reading an image topic saves the frame as a JPEG under ./camera in the folder the server runs from. Delete saved frames if they show private spaces. github.com

Security advisories

No published security advisories as of Nov 1, 2026.

Technical details
Talks toThe rosbridge WebSocket on your robot (default 127.0.0.1:9090)
Sign-in and keysNo sign-in. Anyone who can reach rosbridge can use the robot, so access depends on your network.

Questions

Is the ROS MCP server official?

No. It is a community project from the robotmcp GitHub organization, not made by the ROS maintainers. It is Apache-2.0 licensed.

What do I need on the robot?

ROS with rosbridge running. The install guide has you install the rosbridge server package for your ROS distro and launch it, so the MCP server can connect over a WebSocket. No robot code changes are needed.

Does it work with ROS 1 and ROS 2?

Yes, but the action and parameter tools work only with ROS 2. Topics, services and nodes work with both.

Can it control a real robot?

Yes. It can publish velocity commands, call services and send action goals, and the README shows it driving real and simulated robots. Test in simulation first.

Can I make it read-only?

No. There is no read-only switch. Approve only the tools that list and read, and check each command before you allow it.

Does it need an API key or account?

No key for the server itself. It connects to rosbridge on the robot, which has no sign-in. You do need an account with your AI provider for the assistant.

Can the robot be on a different machine?

Yes. The install guide describes a laptop running the assistant and the server, and the robot on the same local network. Tell the assistant the robot's IP address, or use a VPN to reach it from elsewhere.

Which apps does it work with?

The README names Claude Code, Codex CLI, Gemini CLI, Claude Desktop, ChatGPT and Cursor, with a guide for each. Claude Code is the one the docs recommend.

Information

updated Nov 2, 2026

Publisher
Community
Package
ros-mcp
Registry
PyPI
Transport
stdio
Auth
None
Version
3.1.2
License
Apache-2.0
Last commit
Oct 30, 2026
Open issues
26
Listed in
Official MCP registry

WebsiteGitHubPyPIOfficial MCP RegistryChangelogIssues

Sources

Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.

Show all 3
  1. ROS MCP installation guide · github.com
  2. ROS MCP Server README · github.com
  3. Tool registrations at v3.1.2 · github.com

Facts from the official MCP registry, GitHub, npm, PyPI and the Docker catalog. Updated Nov 2, 2026.