Unitree Go2 MCP Server is a server built on the Model Context Protocol (MCP), whose core purpose is to let users control the Unitree Go2 robot through natural language commands. These natural language commands are interpreted by a large language model (LLM) and translated into ROS2 instructions, thereby enabling the robot to perform the corresponding actions.
Main capabilities and usage:
Environment requirements: A Unitree Go2 robot is required; Ubuntu 20.04 or 22.04; a ROS2 environment, with Humble recommended, though Foxy can also be used. The project's feature list is recorded in MCPFUNCTIONS.md.
Configuration steps:
- Set up the unitree_ros2 environment: refer to https://github.com/unitreerobotics/unitree_ros2 , and complete the setup up to "Step 2: Connect and test" in that repository.
- Clone this repository.
- Install uv: it can be installed using the corresponding command; optionally create and activate a virtual environment.
- Configure the MCP Server: set the MCP configuration in mcp.json. Note that the configuration must be done on the PC connected to the Go2. If using Claude Desktop, you can use the corresponding command to find mcp.json; you can also install Claude Desktop to use claude-desktop-debian.
Key parameter settings:
- Open server.py and modify UNITREE_ROS2_SETUP_SH_PATH (for example, /home/lpigeon/unitree_ros2/setup.sh).
- Open server.py and modify LOCAL_IP, ROSBRIDGE_IP, and ROSBRIDGE_PORT (the default value of ROSBRIDGE_PORT is 9090).
Verification and running:
- Check whether the Go2 robot is connected to the network: enter the corresponding command in the terminal, and the corresponding topic should be visible; if the topic is not visible, check the connection between the Go2 robot and the network.
- Run any AI system that has imported unitree-go2-mcp-server.
- Enter a command, for example, "Make the Go2 robot move forward at a velocity of 0.5 m/s for 3 seconds."
- Check the movement of the Go2 robot.
- Enter the operation you want to perform and try it out.
Context understanding capability: When a command such as "It looks like the Go2 is getting tired," is entered, the LLM will perform contextual interpretation and understand that the robot may need to rest or some form of stretching.
Applicable scenarios: This project serves as a comprehensive demonstration task, showcasing the Unitree Go2 robot's obstacle avoidance, direction changing, and user interaction capabilities, and is suitable for developers and researchers who need to control the robot using natural language.
Other information: The project welcomes contributions, whether correcting typos, adding new features, or suggesting improvements, and details can be found in the contribution guidelines. Regarding fees, pricing, platform supportscope, and other more details, the materials do not currently provide them.