# Yutarop/ros-mcp [Health: Active]

**Category:** 🏭 Industrial & IoT  
**Repository:** https://github.com/Yutarop/ros-mcp  
**GitHub Stars:** 36  
**Views:** 4  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/yutarop-ros-mcp

## Description
MCP server that supports ROS2 topics, services, and actions communication, and controls robots using natural language.

## Claude Desktop Quick Installation
No confirmed install details yet, so no config is published. Follow the setup steps in the repository above.

## Documentation

## What Yutarop/ros-mcp MCP server does

The Yutarop/ros-mcp MCP server exposes ROS2 communication through MCP so a compatible client can work with a robot using natural-language instructions. It covers three main ROS2 communication patterns: topics, services, and actions. The server can list, inspect, monitor, and publish to topics; inspect running nodes; call services with custom inputs; and send goals to actions.

The implementation is described as working with any ROS message type. Example workflows include moving a TurtleBot3 in Gazebo through a topic, resetting a Gazebo world by calling a service, and sending an action goal to move the robot forward.

## How it works

The MCP implementation is in `ros-general.py`. It receives natural-language input, maps the request to ROS2 commands, and communicates with the ROS2 environment. A separate `socket_server.py` process listens on localhost port 8765 and handles GUI-related requests, such as launching Gazebo or `rqt_graph` on the local display.

The MCP process and the local ROS2 machine must use the same `ROS_DOMAIN_ID` and be on the same local network for node communication. GUI operations require the socket server to be running separately and outside the Python virtual environment.

## Setup and configuration

The documented environment is ROS2 Humble Hawksbill, Python 3.10 or newer, the `websockets` package at version 15.0.1 or later, and the `uv` package manager. Compatibility with other ROS2 distributions is not guaranteed because the project has only been tested with Humble.

Installation uses a local Git clone, installation of the websockets dependency, creation of a virtual environment with `uv`, and installation of the project dependencies from `pyproject.toml`. Claude Desktop is configured to run `ros-general.py` through `uv`. That configuration sources `/opt/ros/humble/setup.bash`, sets `ROS_LOG_DIR` to `/tmp`, and supplies the ROS domain ID. The example configuration contains placeholders for the local project and script paths; those values must be replaced before use.

Start the MCP process with `uv run ros-general.py` after activating the virtual environment. Start the GUI socket process separately with `python3 socket_server.py`, without activating the virtual environment for that second command.

## Tools and capabilities

The Yutarop/ros-mcp MCP server provides these documented capability areas:

- Topic management: list, monitor, and publish to ROS2 topics.
- Node control: list and inspect active ROS2 nodes.
- Service interaction: discover and call ROS2 services with custom data.
- Action support: send goals to ROS2 actions.
- GUI integration: launch ROS2 GUI applications through the socket server.
- Environment debugging: inspect ROS2 setup and configuration.
- Process management: clean up running ROS2 processes.

The repository links to a separate wiki page for the detailed available-tool definitions.

_Full upstream README: https://allmcps.com/mcp/yutarop-ros-mcp/readme_

