Overview

The ROS MCP Server is designed to support robots in performing complex tasks and adapting effectively to various environments by providing a set of functions that transform natural language commands, entered by a user through an LLM, into ROS commands for robot control. Furthermore, by utilizing rosbridge
, it is configured to operate with both ROS
and ROS2
systems, and its WebSocket-based communication enables broad applicability across diverse platforms.
Supported Types
- geometry_msgs/Twist
- sensor_msgs/Image
Installation
Installing via Smithery
To install ros-mcp-server
for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @lpigeon/ros-mcp-server --client claude
Installing Locally
uv
Installation
- To install
uv
, you can use the following command:
curl -LsSf https://astral.sh/uv/install.sh | sh
or
pip install uv
- Create virtual environment and activate it (Optional)
uv venv
source .venv/bin/activate
MCP Server Configuration
Set MCP setting to mcp.json.
"ros-mcp-server": {
"command": "uv",
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/PARENT/FOLDER/ros-mcp-server",,
"run",
"server.py"
]
}
If you use Claude Desktop, you can find mcp.json using the following command:
- MacOS/Linux
code ~/Library/Application Support/Claude/claude_desktop_config.json
- Windows
code $env:AppDataClaudeclaude_desktop_config.json
MCP Functions
get_topics
- Purpose: Retrieves the list of available topics from the robot’s ROS system.
- Returns: List of topics (List[Any])
pub_twist
- Purpose: Sends movement commands to the robot by setting linear and angular velocities.
- Parameters:
linear
: Linear velocity (List[Any])angular
: Angular velocity (List[Any])
pub_twist_seq
- Purpose: Sends a sequence of movement commands to the robot, allowing for multi-step motion control.
- Parameters:
linear
: List of linear velocities (List[Any])angular
: List of angular velocities (List[Any])duration
: List of durations for each step (List[Any])
sub_image
- Purpose: Receive images from the robot’s point of view or of the surrounding environment.
- Parameters:
save_path
: By default, the image is saved to theDownloads
folder.
How To Use
1. Set IP and Port to connect rosbridge.
- Open
server.py
and change yourLOCAL_IP
,ROSBRIDGE_IP
andROSBRIDGE_PORT
. (ROSBRIDGE_PORT
’s default value is9090
)
2. Run rosbridge server.
ROS 1
roslaunch rosbridge_server rosbridge_websocket.launch
ROS 2
ros2 launch rosbridge_server rosbridge_websocket_launch.xml
3. Run any AI system that has imported ros-mcp-server
.
4. Type “Make the robot move forward.”.

5. Check rosbridge_server
and ros topic
.
rosbridge_server

ros topic

Simulation Test
MCP-based control using the MOCA mobile manipulator within the NVIDIA Isaac Sim simulation environment.

ROS MCP Server
Project Details
- lpigeon/ros-mcp-server
- MIT License
- Last Updated: 5/1/2025
Recomended MCP Servers
An MCP server implementation enabling LLMs to work with new APIs and frameworks
Context7 MCP Server -- Up-to-date code documentation for LLMs and AI code editors
MCP Server to control govee lights
A powerful Model Context Protocol server for LinkedIn interactions that enables AI assistants to search for jobs, generate...
MCP Server MetaMCP manages all your other MCPs in one MCP.
MCP stdio server for frida
Eka MCP Server