ROSCAUTION
MCP server for ROS to control robots via topics, services, and actions.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
ROS MCP
[](https://archestra.ai/mcp-catalog/yutarop__ros-mcp)
ROS MCP is a MCP server designed for controlling robots in ROS environments using natural language. It supports communication via ROS topics, services, and actions, and works with any ROS message type.
Demo
Test to see if ros topics, services, and actions can be used.
https://github.com/user-attachments/assets/61143c37-fb73-4998-9cbc-844d92ae61d9
Prompt used (Topic)
Open gazebo with TurtleBot3 and publish topic to move it.
Prompt used (Service)
Show me service list and call service to reset the world in Gazebo.
Prompt used (Action)
Show me action list and call action to move the TurtleBot3 forward for 1m.
Components
- Socket Server (`socket_server.py`): A lightweight server that runs on localhost:8765 to handle GUI-related operations.
It receives instructions from the MCP server to launch tools such as Gazebo or rqt_graph on the local display.
- MCP Server (`ros-general.py`): A Python-based server that implements the MCP.
It processes natural language input, maps it to ROS commands, and communicates with the socket server. To enable node communication between the MCP server and the local machine, both must be configured with the same ROS_DOMAIN_ID on the same local network.
Overview of MCP Tools
Topic Management: List, monitor, and publish to ROS2 topicsNode Control: List and inspect running ROS2 nodesService Interaction: Call ROS2 services with customAction Support: Send goals to ROS2 actionsGUI Integration: Launch ROS2 GUI tools via WebSocket serverEnvironment Debugging: Check ROS2 setup
3931425cd99aOBSERVED · 2026-10-08Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.
claude mcp add ros-mcp -- uvx ros-mcp
{
"mcpServers": {
"ros-mcp": {
"command": "uvx",
"args": [
"ros-mcp"
]
}
}
}Exposed tools (24)
20 read · 4 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
call_ros2_service | read | |
check_ros2_topic_hz | read | Displays the publishing frequency (Hz) of a given ROS 2 topic. |
check_topic_status | read | Checks whether a specific ROS2 topic is actively publishing messages. |
clean_all_ros2_nodes | read | Kills all currently running ROS 2 and Gazebo related processes to clean the environment. |
debug_ros2_environment | read | Debug ROS 2 environment variables and setup. |
echo_ros2_topic | read | Echo messages from a ROS2 topic for a specified number of messages. |
find_ros2_package | read | Searches for available ROS 2 packages that match a given keyword. |
get_ros2_node_info | read | Shows detailed information about a specific ROS 2 node. |
get_topic_info | read | Get detailed information about a specific ROS2 topic. |
launch_gazebo | read | Launch Gazebo simulation environment via WebSocket server. |
launch_rqt_graph | read | Launch rqt_graph GUI tool via WebSocket server. |
launch_rviz | read | Launch RViz2 GUI tool via WebSocket server. |
launch_turtlebot3_empty_world | read | Launch TurtleBot3 in empty world in Gazebo via WebSocket server. |
launch_turtlebot3_world | read | Launch TurtleBot3 world in Gazebo via WebSocket server. |
launch_turtlesim | read | Launch turtlesim GUI application via WebSocket server. |
list_ros2_actions | read | Lists available ROS 2 actions. |
list_ros2_nodes | read | Lists currently running ROS 2 nodes. |
list_ros2_services | read | Lists available ROS 2 services. |
list_topics | read | Displays a list of currently accessible ROS2 topics. |
publish_ros2_topic | write | Publishes a message to a specific ROS 2 topic for a given duration (in seconds). |
run_ros2_doctor | write | Runs ros2 doctor to check ROS 2 environment setup and issues. |
run_ros2_executable | write | Runs a ROS 2 executable from a specified package. |
send_ros2_action_goal | write | Sends a goal to a ROS 2 action. |
show_ros2_interface | read | Shows the interface (definition) for a given ROS 2 message or service type. |
Trust audit
CAUTIONgrade B · trust 89/100 Install with care. The audit found things worth knowing before you trust its output.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- declared (6 observation(s))
- Shell
- none-observed
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (1)
os.environ.copy() ... WebSocket
Gates applied: no_behavioural_pass.
3931425cd99afull audit observations/trust-audit/mcp-server/yutarop__ros-2.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-08 | 3931425cd99a | CAUTION | B | 89 | first audit |
Questions
What is the ROS MCP server?
MCP server for ROS to control robots via topics, services, and actions.
What tools does ROS expose?
24 in total: 20 read-only, 4 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is ROS safe to connect to an agent?
With care. The audit graded it B (89/100) and found 1 thing worth knowing before you trust this server, listed below with the exact line each was found on.
What credentials does ROS need?
No credential environment variables were found in its source, so it appears to need none.
How does ROS run?
It speaks stdio, so it runs as a local process your client starts. It is published on PyPI as ros-mcp.
How current is this page?
The grade is for one exact copy of the source (3931425cd99a), read on 2026-10-08. The repository is watched and re-audited when it changes.