unitree-go2-mcp-server
The Unitree Go2 MCP Server is designed to control the Unitree Go2 robot using natural language commands. These commands, interpreted by a Large Language Model, are converted into ROS2 instructions. It showcases the robot's capabilities in performing tasks based on user interaction.
Unitree Go2 MCP Server

The Unitree Go2 MCP Server is a server built on the Model Context Protocol (MCP) that enables users to control the Unitree Go2 robot using natural language commands interpreted by a Large Language Model (LLM). These commands are translated into ROS2 instructions, allowing the robot to perform corresponding actions.
Requirements
MCP Functions
You can find the list of functions in the .
Installation
1. Setup unitree_ros2
environment
https://github.com/unitreerobotics/unitree_ros2
- You need to complete the setup up to
Step 2: Connect and test
in the repository linked above.
2. Clone this repository
git clone https://github.com/lpigeon/unitree-go2-mcp-server.git
cd unitree-go2-mcp-server
3. 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
4. MCP Server Configuration
Set MCP setting to mcp.json.
Please keep in mind that the configuration must be done on the PC connected to the Go2.
{
"mcpServers": {
"unitree-go2-mcp-server": {
"command": "uv",
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/PARENT/FOLDER/unitree-go2-mcp-server",
"run",
"server.py"
]
}
}
}
If you use Claude Desktop, you can find mcp.json using the following command:
- MacOS
code ~/Library/Application\ Support/Claude/claude_desktop_config.json
- Linux(Ubuntu)
You can install Claude Desktop to use claude-desktop-debian.
code ~/.config/Claude/claude_desktop_config.json
- Windows
code $env:AppData\Claude\claude_desktop_config.json
How To Use
1. Set UNITREE_ROS2_SETUP_SH_PATH
.
- Open
server.py
and change yourUNITREE_ROS2_SETUP_SH_PATH
(eg./home/lpigeon/unitree_ros2/setup.sh
)
If you use rosbridge
, you need Set IP and Port to connect rosbridge (Optional).
- Open
server.py
and change yourLOCAL_IP
,ROSBRIDGE_IP
andROSBRIDGE_PORT
. (ROSBRIDGE_PORT
's default value is9090
)
2. Check the Go2 robot is connected to the network.
Type the following command in the terminal.
ros2 topic list
You should see the following topic:
/wirelesscontroller
If you don't see the topic, check the connection between the Go2 robot and the network.
3. Run any AI system that has imported unitree-go2-mcp-server
.
4. Type "Make the Go2 robot move forward at a velocity of 0.5 m/s for 3 seconds.".

5. Check the Go2 robot's movement.

6. Type what you want to do and Enjoy!
Contextual Understanding
When you type a command like "It looks like the Go2 is getting tired," the LLM interprets this contextually — understanding that the robot might need a break or some form of stretching!

Simple Task
This task is a comprehensive demo task showcasing the Unitree Go2 robot's obstacle avoidance, direction changing, and user interaction capabilities.

Contributing
Contributions are welcome!
Whether you're fixing a typo, adding a new function, or suggesting improvements, your help is appreciated.
Please follow the for more details on how to contribute to this project.