---
title: "ROS MCP Server: Talk to a ROS or ROS 2 Robot From AI"
url: "https://mcpshelf.co/servers/ros"
description: "ROS MCP connects an assistant to a ROS or ROS 2 robot through rosbridge: topics, services, actions, parameters and camera images. Setup and rosbridge."
updated: "2026-10-27"
site: "MCP Shelf"
---

# ROS MCP Server

> Lets an assistant explore and command a ROS or ROS 2 robot through rosbridge.

Source: https://mcpshelf.co/servers/ros  
Markdown: https://mcpshelf.co/servers/ros.md  
Generated: 2026-10-27T13:23:11.057Z

## Facts

- **Name:** ROS MCP Server
- **Tagline:** Lets an assistant explore and command a ROS or ROS 2 robot through rosbridge.
- **Description:** ROS MCP Server is an open source bridge from the robotmcp project that lets an assistant read topics, call services and send commands to a ROS or ROS 2 robot through rosbridge.
- **Repository:** https://github.com/robotmcp/ros-mcp-server
- **Package:** ros-mcp 3.1.2 (PyPI)
- **Install:** `claude mcp add ros -- uvx ros-mcp --transport=stdio`
- **Transport:** stdio (local)
- **Auth:** No required keys or settings listed
- **Tools exposed:** 31: `get_actions`, `get_action_details`, `get_action_status`, `send_action_goal`, `cancel_action_goal`, `connect_to_robot`, `ping_robots`, `get_verified_robot_spec`, `get_verified_robots_list`, `detect_ros_version`, `view_saved_image`, `get_nodes`, `get_node_details`, `get_parameter`, `set_parameter`, `has_parameter`, `delete_parameter`, `get_parameters`, `get_parameter_details`, `get_services`, `get_service_type`, `get_service_details`, `call_service`, `get_topics`, `get_topic_type`, `get_topic_details`, `get_message_details`, `subscribe_once`, `subscribe_for_duration`, `publish_for_durations`, `publish_once`
- **Category:** Agent helpers and desktop control (https://mcpshelf.co/categories/agents-and-automation)
- **Stats:** 1.5K GitHub stars, last commit 26 Oct 2026, 0 upvotes on MCP Shelf
- **Install check:** Started in our test
- **Listed:** 2026-10-27
- **Page updated:** 2026-10-27

## Full description

### What is ROS MCP Server?

**ROS MCP Server is an open source bridge from the robotmcp project that lets an assistant read topics, call services and send commands to a ROS or ROS 2 robot through rosbridge.**

ROS MCP, from the robotmcp project, links a language model to a robot without touching the robot's code. You run rosbridge on the robot, and the server on your own computer connects to it over a WebSocket. The model can then list nodes, topics, services and actions, look up their message types, read sensor data and camera frames, publish commands, call services, send action goals and change parameters.

It works with ROS 2 releases such as Humble and Jazzy as well as ROS 1. Anything the model publishes reaches the real robot, so start in a simulator such as turtlesim or Gazebo and keep a hand near the stop button when you move to hardware.

|  |  |
| --- | --- |
| Made by | The robotmcp project (robotmcp/ros-mcp-server) |
| GitHub | https://github.com/robotmcp/ros-mcp-server |
| Licence | Apache-2.0 |
| PyPI package | [ros-mcp](https://pypi.org/project/ros-mcp/) 3.1.2 (23 Sept 2026) |
| GitHub stars | 1.5K |
| Last commit | 26 Oct 2026 |
| Tools | 31 |
| Runs on | Your computer |
| Install check | Started in our test |
| Category | [Agent helpers and desktop control](https://mcpshelf.co/categories/agents-and-automation) |
| Setup checked | 27 Oct 2026 |
| Page updated | 27 Oct 2026 |

**Our check:** We ran this exact config on 27 Oct 2026: it started and answered with 31 tools. The npm package called ros-mcp belongs to a different developer. This server is the ros-mcp package on PyPI, run with uvx.

#### MCP Shelf take

> We started ROS on our own test machine on 27 Oct 2026 and it answered with 31 tools. 23 of the 31 only read; the other 8 can change things. Every tool comes with a useful description, all of them say whether they change things, and the tool list costs about 2,300 tokens of context before you ask a thing. Other directories point at a package with the same name that belongs to someone else; the config on this page installs the real one. It sits 5th of 5 in its category on our shelf by GitHub stars (1.5K).

— MCP Shelf tests (numbers from our own runs), tested on 27 Oct 2026

### What tools does ROS MCP Server have?

We listed 31 tools on 27 Oct 2026. 23 only read; the rest can change things or run commands.

| Tool | Kind | What it is for |
| --- | --- | --- |
| `get_actions` | reads | Lists every action. |
| `get_action_details` | reads | Shows an action's goal, result and feedback structures. |
| `get_action_status` | reads | Shows the status of goals on an action. ROS 2 only. |
| `send_action_goal` | changes | Sends a goal to an action server. ROS 2 only. |
| `cancel_action_goal` | changes | Cancels a goal. ROS 2 only. |
| `connect_to_robot` | changes | Sets the robot's address and port and checks that rosbridge answers. |
| `ping_robots` | reads | Pings one or more addresses and checks whether a port is open. |
| `get_verified_robot_spec` | reads | Loads the spec and usage notes for one of those models. |
| `get_verified_robots_list` | reads | Lists robot models that come with a ready-made spec file. |
| `detect_ros_version` | reads | Works out whether the robot runs ROS 1 or ROS 2, and which release. |
| `view_saved_image` | reads | Shows an image saved from a camera topic. |
| `get_nodes` | reads | Lists the running nodes. |
| `get_node_details` | reads | Shows a node's publishers, subscribers and services. |
| `get_parameter` | reads | Reads one parameter. ROS 2 only. |
| `set_parameter` | changes | Changes a parameter. ROS 2 only. |
| `has_parameter` | reads | Checks whether a parameter exists. ROS 2 only. |
| `delete_parameter` | changes | Removes a parameter. ROS 2 only. |
| `get_parameters` | reads | Lists a node's parameters. ROS 2 only. |
| `get_parameter_details` | reads | Reads a parameter's value, type and description. ROS 2 only. |
| `get_services` | reads | Lists every service. |
| `get_service_type` | reads | Returns a service's type. |
| `get_service_details` | reads | Shows a service's request and response structures and which node provides it. |
| `call_service` | changes | Calls a service with the request you give. |
| `get_topics` | reads | Lists every topic. |
| `get_topic_type` | reads | Returns a topic's message type. |
| `get_topic_details` | reads | Shows a topic's type, publishers and subscribers. |
| `get_message_details` | reads | Shows the full structure of a message type. |
| `subscribe_once` | reads | Waits for one message on a topic and returns it. |
| `subscribe_for_duration` | reads | Collects the messages on a topic for a set time. |
| `publish_for_durations` | changes | Publishes a sequence of messages, each held for a set time, for example a series of velocity commands. |
| `publish_once` | changes | Publishes one message to a topic. |

#### How clearly it describes its tools

31 of 31 tools have a description and 31 of 31 say whether they change things. The tool list takes at least ~2,300 tokens of context. Every tool says whether it only reads or can change things, so a client can ask before the risky ones.

### How do I install ROS MCP Server?

#### What you need first

- A robot or simulator running ROS or ROS 2
- rosbridge_server and rosapi on the robot (for ROS 2, sudo apt install ros-<distro>-rosbridge-server)
- uv, for uvx, on the computer that runs your AI client
- Both machines on the same network, or a VPN between them

1. On the robot, source your ROS workspace and start rosbridge: ros2 launch rosbridge_server rosbridge_websocket_launch.xml. It listens on port 9090.
2. Add the config below to your MCP client and restart it.
3. Ask the assistant to connect to the robot at its IP address and list what it sees.

#### Claude Code

Where: Your terminal, in the project folder

```bash
claude mcp add ros -- uvx ros-mcp --transport=stdio
```

Then start Claude Code and ask it to connect to the robot on localhost. If the server says the address answers but the rosbridge port is closed, the MCP side works and only rosbridge is left to set up.

#### Cursor

Where: ~/.cursor/mcp.json, or .cursor/mcp.json in a project

```json
{
  "mcpServers": {
    "ros": {
      "command": "uvx",
      "args": [
        "ros-mcp",
        "--transport=stdio"
      ]
    }
  }
}
```

#### Claude Desktop

Where: claude_desktop_config.json (Settings → Developer → Edit Config)

```json
{
  "mcpServers": {
    "ros": {
      "command": "uvx",
      "args": [
        "ros-mcp",
        "--transport=stdio"
      ]
    }
  }
}
```

#### VS Code

Where: .vscode/mcp.json in your project

```json
{
  "servers": {
    "ros": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "ros-mcp",
        "--transport=stdio"
      ]
    }
  }
}
```

#### Windsurf

Where: ~/.codeium/windsurf/mcp_config.json

```json
{
  "mcpServers": {
    "ros": {
      "command": "uvx",
      "args": [
        "ros-mcp",
        "--transport=stdio"
      ]
    }
  }
}
```

#### ChatGPT

Where: ChatGPT desktop app → Settings → Connectors, through an ngrok tunnel

```
uvx ros-mcp --transport streamable-http --host 127.0.0.1 --port 9000
```

ChatGPT needs a public HTTPS address, so run this, open a tunnel with ngrok http 9000, and add the tunnel URL ending in /mcp as a connector with no authentication. Then turn it on under + → Developer Mode in a chat. The project suggests Claude Code or Codex as the simpler route.

On macOS, desktop clients often cannot find uvx, so use its full path from "which uvx" as the command. The robot address is given in the chat, not in the config, and defaults to this computer.

Checked against the project's own install docs on 27 Oct 2026: https://github.com/robotmcp/ros-mcp-server#readme, https://github.com/robotmcp/ros-mcp-server/blob/main/docs/install/installation.md, https://github.com/robotmcp/ros-mcp-server/blob/main/docs/install/clients/chatgpt.md

### How do I configure ROS MCP Server?

| Setting | Kind | Required | What it does |
| --- | --- | --- | --- |
| `--transport` | flag | no | stdio for desktop clients, or http to serve over the network. Example: `--transport=stdio` |
| `rosbridge port` | config | no | rosbridge listens on 9090 by default. Give a different port when you ask the model to connect. |

### What can ROS MCP Server read and change?

**It can read**

- Topics, services, actions, parameters and message types on the robot
- Sensor messages and camera images

**It can change**

- Anything the robot does when it receives a message, a service call or an action goal
- Robot parameters

**Safer setup:** Try it in a simulator first. On real hardware, keep an emergency stop within reach and watch each command the model sends.

### Good for

- Exploring an unfamiliar robot: what topics and services it offers
- Debugging a robot by asking the model to read sensors and run tests
- Driving a simulated robot with plain-language commands

### ROS MCP Server not working? Common fixes

**Connection refused or a timeout**
Check that rosbridge is running on the robot (curl -I http://localhost:9090 there), that you used the right IP address, and that port 9090 is open in the firewall.

**Claude Desktop on macOS cannot attach to the server**
The desktop app cannot see uvx in ~/.local/bin. Use the full path to uvx as the command, or add that folder to PATH in ~/.zprofile.

**Listing nodes or topics fails while publishing works**
rosapi is not running. It usually starts with the rosbridge launch file; check with ros2 service list | grep rosapi.

**Slow or odd behaviour under WSL**
Keep your files in the Linux file system rather than /mnt/c, and use the full WSL distribution name in the config.

### What are the alternatives to ROS MCP Server?

| Server | What it does | Tools | Runs on | Licence | Stars |
| --- | --- | --- | --- | --- | --- |
| [ROS MCP Server](https://mcpshelf.co/servers/ros) | Lets an assistant explore and command a ROS or ROS 2 robot through rosbridge. | 31 | Your computer | Apache-2.0 | 1.5K |
| [Sequential Thinking](https://mcpshelf.co/servers/sequential-thinking) | A numbered scratchpad the model fills in, revises and branches while it works. | 1 | Your computer | MIT / Apache-2.0 | 91.6K |
| [Windows-MCP](https://mcpshelf.co/servers/windows-mcp) | Mouse, keyboard, apps, files and PowerShell on a Windows PC, driven by your assistant. | 21 | Your computer | MIT | 10.5K |
| [Mobile MCP](https://mcpshelf.co/servers/mobile-mcp) | Tap, swipe, type and read the screen on iOS and Android, real or simulated. | 34 | Your computer | Apache-2.0 | 10K |
| [Container Use](https://mcpshelf.co/servers/container-use) | Each coding agent gets its own container and git branch, so several can work at once. | 15 | Your computer | Apache-2.0 | 4.1K |

### ROS MCP Server FAQ

#### How do I add ROS MCP Server to Claude Code?

Install uv, then run claude mcp add ros-mcp -- uvx ros-mcp --transport=stdio. On the robot, install rosbridge and start it with ros2 launch rosbridge_server rosbridge_websocket_launch.xml.

#### Can I use ROS MCP Server with ChatGPT?

Yes, in the ChatGPT desktop app, but it takes more steps: run the server in HTTP mode, expose it with an ngrok tunnel, and add that address as a connector with Developer Mode on.

#### Do I have to change the robot's code?

No. You only add rosbridge on the robot. The server talks to it over a WebSocket on port 9090 and discovers topics, services and actions by itself.

#### Does ROS MCP Server work with ROS 1?

Yes, for topics and services. Actions and parameters need ROS 2.

#### Can the server run on a different machine from the robot?

Yes, that is the usual set-up. Both machines need to be on the same network, or joined by a VPN, and port 9090 must be open on the robot.

#### Is it safe to let an AI control a robot?

Treat it as a risk. The model can publish movement commands and send action goals, so start in a simulator, keep an emergency stop within reach and watch each command on real hardware.

#### Is the npm package called ros-mcp the same thing?

No. That one belongs to another developer. This server is published on PyPI as ros-mcp and runs with uvx.

#### Is ROS MCP Server free?

Yes. It is Apache-2.0 licensed, and rosbridge is free as well.

Full docs on GitHub: https://github.com/robotmcp/ros-mcp-server

## Notes for agents

Fetch these instead of parsing the HTML page:

- llms.txt: https://mcpshelf.co/llms.txt
- llms-full.txt: https://mcpshelf.co/llms-full.txt
- ai.txt: https://mcpshelf.co/ai.txt
- Full catalog (.md): https://mcpshelf.co/catalog.md
- API spec: https://mcpshelf.co/openapi.json
- MCP server: https://mcpshelf.co/mcp
- MCP manifest: https://mcpshelf.co/.well-known/mcp.json
- Developer docs: https://mcpshelf.co/developers

MCP endpoint (Streamable HTTP, no key): https://mcpshelf.co/mcp. REST API: https://mcpshelf.co/api/v1.

