Fire in da houseTop Tip:Paying $100+ per month for Perplexity, MidJourney, Runway, ChatGPT is crazy - get all your AI tools in one site starting at $15 per month with Galaxy AIFire in da houseCheck it out free

ros-mcp-server

MCP.Pizza Chef: lpigeon

The ros-mcp-server is an MCP server that converts natural language commands from LLMs into actionable ROS and ROS2 commands for robot control. It supports complex robotic tasks and environmental adaptation by leveraging rosbridge and WebSocket communication, enabling compatibility across various platforms and robotic systems. This server facilitates seamless integration of natural language interfaces with robotic operating systems.

Use This MCP server To

Convert user natural language commands into ROS/ROS2 robot instructions Enable LLM-driven control of robots in complex environments Integrate natural language interfaces with ROS and ROS2 systems Support WebSocket communication for cross-platform robot control Facilitate research on efficient robot task execution via natural language Adapt robot behavior dynamically based on user commands Bridge LLMs with robotic operating systems for real-time control

README

Overview

Static Badge Static Badge smithery badge Static Badge

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.

  • An Efficient Robot Control Framework Using the Model Context Protocol

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:

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:AppData\Claude\claude_desktop_config.json

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 your LOCAL_IP, ROSBRIDGE_IP and ROSBRIDGE_PORT. (ROSBRIDGE_PORT's default value is 9090)

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 FAQ

How does ros-mcp-server handle communication with ROS and ROS2?
It uses rosbridge and WebSocket-based communication to support both ROS and ROS2 systems seamlessly.
Can ros-mcp-server work with any robot using ROS or ROS2?
Yes, as long as the robot supports ROS or ROS2 and rosbridge, the server can translate commands for it.
What types of natural language commands can ros-mcp-server process?
It can process a wide range of user commands aimed at controlling robot actions and behaviors.
Is ros-mcp-server limited to specific platforms?
No, its WebSocket communication enables broad applicability across diverse platforms.
How does ros-mcp-server integrate with LLMs like OpenAI, Claude, or Gemini?
It receives natural language commands from LLMs and transforms them into ROS/ROS2 commands for robot control.
What programming languages or frameworks does ros-mcp-server use?
It primarily uses ROS/ROS2 frameworks and rosbridge for communication, typically implemented in Python or C++.
Is ros-mcp-server open source and under what license?
Yes, it is open source and licensed under the MIT License.
Can ros-mcp-server be used for research purposes?
Yes, it supports research on efficient robot task execution and natural language command integration.