| 1 | # ROS MCP Server 🧠⇄🤖 |
| 2 | |
| 3 |  |
| 4 |  |
| 5 |  |
| 6 |  |
| 7 |  |
| 8 |  |
| 9 |  |
| 10 |  |
| 11 | |
| 12 | <!-- mcp-name: io.github.robotmcp/ros-mcp-server --> |
| 13 | |
| 14 | <p align="center"> |
| 15 | <img src="https://github.com/robotmcp/ros-mcp-server/blob/main/docs/images/framework.png"/> |
| 16 | </p> |
| 17 | |
| 18 | ROS-MCP-Server connects large language models (such as Claude, GPT, and Gemini) to robots, enabling bidirectional communication with no changes to existing robot source code. |
| 19 | |
| 20 | ### Why ROS-MCP? |
| 21 | |
| 22 | - **No robot source code changes** → just add the `rosbridge` node to your existing ROS setup. |
| 23 | - **True two-way communication** → LLMs can both *control* robots and *observe* everything happening on the Robot. |
| 24 | - **Full context** → publish & subscribe to topics, call services & actions, set parameters, read sensor data, and monitor robot state in real time. |
| 25 | - **Deep ROS understanding** → guides the LLM to discover available topics, services, actions, and their types (including custom ones) — enabling it to use them with the right syntax without manual configuration. |
| 26 | - **Works with any MCP client** → built on the open [MCP standard](https://modelcontextprotocol.io/), supporting Claude Code, Codex CLI, Gemini CLI, Claude Desktop, ChatGPT, Cursor, and more. |
| 27 | - **Works across ROS versions** → compatible across ROS 2 (Jazzy, Humble, and others) and ROS 1 distros. |
| 28 | |
| 29 | --- |
| 30 | ## 🎥 Examples in Action |
| 31 | |
| 32 | <p align="center"> |
| 33 | <a href="https://youtu.be/Yy1loJAn9sA"> |
| 34 | <img src="https://github.com/robotmcp/ros-mcp-server/blob/main/docs/images/MCP%20Demos%20Slide%20-%207to12s.gif" alt="ROS MCP demos" /> |
| 35 | </a> |
| 36 | </p> |
| 37 | |
| 38 | --- |
| 39 | 🏭 **Example - AI Agent diagnosis of Industrial Robot End Effector** ([Video](https://youtu.be/EhZNFULz9P4)) |
| 40 | - The MCP server connects Claude to a production industrial robot, with only the technician manuals as reference. |
| 41 | - Claude discovers the robot's custom topic and service types and their syntax on its own. |
| 42 | - From a single prompt to test the gripper, it reads the manuals, runs its own tests, finds an anomaly, and reports the root cause. |
| 43 | |
| 44 | <p align="center"> |
| 45 | <a href="https://youtu.be/EhZNFULz9P4"> |
| 46 | <img src="https://github.com/robotmcp/ros-mcp-server/blob/main/docs/images/ROS%20MCP%20Gripper%20vacuum%20test.jpg" width="400" alt="Testing and debugging an industrial robot" /> |
| 47 | </a> |
| 48 | </p> |
| 49 | |
| 50 | --- |
| 51 | 🤖 **Example - Controlling "Wilson" with natural language** ([video](https://www.traceglarue.com/wilson)) |
| 52 | From a single prompt — *"Grab a Coke from the fridge & go to the living room."* — Google Gemini uses the MCP server to navigate and manipulate autonomously. Built on ROS 2 with Nav2 (SLAM) for mapping and navigation, and MoveIt to command the manipulator. |
| 53 | |
| 54 | <p align="center"> |
| 55 | <a href="https://www.traceglarue.com/wilson"> |
| 56 | <img src="https://github.com/robotmcp/ros-mcp-server/blob/main/docs/images/Wilson%20thumbnail.jpg" width="400" alt="Wilson robot controlled with natural language" /> |
| 57 | </a> |
| 58 | </p> |
| 59 | |
| 60 | --- |
| 61 | 🐕 **Example - Controlling Unitree Go2 in NVIDIA Isaac Sim** ([video](https://www.youtube.com/watch?v=9StFx4lnvmc)) |
| 62 | The MCP server connects Claude to a simulated Unitree Go2 quadruped in NVIDIA Isaac Sim, interpreting natural language commands to navigate and control the robot. |
| 63 | |
| 64 | <p align="center"> |
| 65 | <a href="https://www.youtube.com/watch?v=9StFx4lnvmc"> |
| 66 | <img src="https://img.youtube.com/vi/9StFx4lnvmc/maxresdefault.jpg" width="400" alt="Controlling Unitree Go2 in NVIDIA Isaac Sim" /> |
| 67 | </a> |
| 68 | </p> |
| 69 | |
| 70 | |
| 71 | --- |
| 72 | |
| 73 | ## 🛠 Getting Started |
| 74 | |
| 75 | Follow the [installation guide](docs |