ros-mcp-server — Claude Code MCP server: talk to ROS robots
Links language models to ROS and ROS 2 robots over rosbridge. Useful when you want to drive a robot or read its topics straight from a chat.
claude mcp add ros-mcp-server -- uvx ros-mcpWhat ros-mcp-server does
The server opens a two-way channel between the model and the robot. The model publishes to topics and subscribes to them, calls services and actions, sets parameters, reads sensor data and watches robot state live. Your robot source stays untouched: add the rosbridge node to the setup you already have.
Discovery is a big part of the job. The server helps the model find which topics, services and actions exist, along with their types, custom ones included, so it can call them with correct syntax. No hand-written config per message type.
ROS 2 distros such as Jazzy and Humble are supported, and ROS 1 as well. Clients include Claude, Codex CLI, Gemini CLI, Claude Desktop, ChatGPT and Cursor. Nothing connects until rosbridge is running on the robot side, so that is the first thing to start.
What it helps with
- send a movement command to a robot from chat
- list the topics and services a robot exposes
- call a service or action with the right syntax
- pull sensor readings and check node state
- test a manipulator gripper and trace a fault
Example prompts for the agent
- List every topic and service on the robot with their types
- Publish a forward velocity command and check the odometry
- Call the gripper service and tell me what it returned
How to install ros-mcp-server
Platform CLI
claude mcp add ros-mcp-server -- uvx ros-mcpuvx runs the command named after the package; if the README names another one, use uvx --from ros-mcp <command>
Platform CLI
codex mcp add ros-mcp-server -- uvx ros-mcpuvx runs the command named after the package; if the README names another one, use uvx --from ros-mcp <command>
Config file
{
"mcpServers": {
"ros-mcp-server": {
"command": "uvx",
"args": [
"ros-mcp"
]
}
}
}uvx runs the command named after the package; if the README names another one, use uvx --from ros-mcp <command>
Config file
{
"servers": {
"ros-mcp-server": {
"type": "stdio",
"command": "uvx",
"args": [
"ros-mcp"
]
}
}
}uvx runs the command named after the package; if the README names another one, use uvx --from ros-mcp <command>
Platform CLI
gemini mcp add ros-mcp-server uvx ros-mcpuvx runs the command named after the package; if the README names another one, use uvx --from ros-mcp <command>
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about ros-mcp-server
How do I install ros-mcp-server in Claude Code?
With one command: claude mcp add ros-mcp-server -- uvx ros-mcp.
What does ros-mcp-server do?
It connects a model to a ROS robot through rosbridge: topic publish and subscribe, service and action calls, parameters, sensor data.
Which ROS versions does it support?
ROS 2 distros including Jazzy and Humble, plus ROS 1.