The ROS MCP Server translates natural language commands into ROS/ROS2 robot commands via WebSocket communication, enabling seamless interaction with robotic systems.
- Publish Twist Messages: Control robot movement by publishing linear and angular velocity commands.
- Sequential Commands: Execute a sequence of movements with specified durations.
- Cross-Platform Compatibility: Operates on Linux, Windows, and MacOS.
- AI Integration: Directly translates natural language inputs from LLMs/AI systems into robot actions.
- Extensible Functionality: Easily add new control or sensor functions.
- No Code Modifications: Works with existing ROS/ROS2 topics and services without changing robot code.
- Message Support: Handles various message types including
geometry_msgs/Twist
,sensor_msgs/Image
, andsensor_msgs/JointState
. - Simulation Tested: Verified with MOCA mobile manipulator in NVIDIA Isaac Sim.
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.
Research based on this project can be found in the video linked below.
Supported Types
- geometry_msgs/Twist
- sensor_msgs/Image
- sensor_msgs/JointState
Features
- WebSocket-based universal compatibility: Communicates with both ROS and ROS2 systems using rosbridge, enabling seamless integration regardless of ROS version.
- Cross-platform support: Works on Linux, Windows, and MacOS, making it suitable for diverse development and deployment environments.
- Easy integration with LLMs and AI systems: Natural language commands can be directly translated into robot actions via MCP functions.
- Extensible function set: Easily add new robot control or sensor functions by extending the MCP tool interface.
- No ROS node modification required: Interacts with existing ROS/ROS2 topics and services without changing your robot's core code.
- Native ROS/ROS2 command compatibility: Optionally supports using local ROS/ROS2 libraries, so you can run native ROS commands and tools alongside WebSocket-based control.
Contributing
Contributions are welcome!
Whether you're fixing a typo, adding a new function, or suggesting improvements, your help is appreciated.
Please follow the contributing guidelines for more details on how to contribute to this project.
Installation
Installing via Smithery
To install ros-mcp-server
for Claude Desktop automatically via Smithery:
Installing Locally
uv
Installation
- To install
uv
, you can use the following command:
or
- Create virtual environment and activate it (Optional)
MCP Server Configuration
Set MCP setting to mcp.json.
If you use Claude Desktop, you can find mcp.json using the following command:
- MacOS/Linux
- Windows
MCP Functions
You can find the list of functions in the MCPFUNCTIONS.md.
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
ROS 2
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.
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Facilitates robotic movement control by providing functions that enable precise manipulation of linear and angular velocities through natural language commands, compatible with both ROS and ROS2.
Related Resources
Related MCP Servers
- -securityAlicense-qualityProvides code manipulation, execution, and version control capabilities. It allows AI assistants to read, write, and execute code while maintaining a history of changes.Last updated -8PythonMIT License
- AsecurityAlicenseAqualityEnables AI assistants to control SwitchBot devices, providing functionalities like device management, scene execution, and sensor information monitoring through the SwitchBot API.Last updated -33JavaScriptISC License
- -securityFlicense-qualityA Model Control Protocol plugin for controlling GS cleaning robots, supporting robot listing, status monitoring, navigation commands, task execution, and remote control operations.Last updated -Python
- -securityFlicense-qualityA Python-based server that enables AI assistants to control robots by integrating the Model Context Protocol (MCP) with ROS 2, allowing for natural language commands that translate into robot movement via the /cmd\_vel topic.Last updated -55Python