Knock MCP Server
OFFICIAL SERVERKnock's hosted MCP server for building workflows and managing notification data in a Knock account
Inspect and command ROS 1 and ROS 2 robots from an MCP client through rosbridge
By Robot MCP Python Local · stdio Developer tools
66 popularity score ★ 1.5k ↓ 1.5k/mo
Opens the app, which asks before it adds the server.
claude mcp add ros -- uvx ros-mcp --transport=stdio{
"mcpServers": {
"ros": {
"command": "uvx",
"args": [
"ros-mcp",
"--transport=stdio"
]
}
}
}{
"mcpServers": {
"ros": {
"command": "uvx",
"args": [
"ros-mcp",
"--transport=stdio"
]
}
}
}{
"servers": {
"ros": {
"type": "stdio",
"command": "uvx",
"args": [
"ros-mcp",
"--transport=stdio"
]
}
}
}[mcp_servers.ros]
command = "uvx"
args = ["ros-mcp", "--transport=stdio"]gemini mcp add --scope user ros uvx -- ros-mcp --transport=stdioROS MCP Server is a Python server that talks to a robot's ROS graph over a rosbridge WebSocket, so an MCP client can look around the robot and act on it. It works with ROS 2 distributions such as Jazzy and Humble as well as ROS 1, and it needs no changes to the robot's own code: the only thing added on the robot side is the rosbridge node.
Once connected, the client can list topics, services, actions, nodes and parameters, read their types (custom message types included), take one message or a timed batch from a topic, publish sequences of messages, call services, send and cancel action goals, and get, set or delete parameters. Camera frames received from image topics are saved as a JPEG and shown to the client. A set of tools reads robot specification files shipped with the package (for example a Unitree Go2 profile) and detects which ROS version the robot runs.
Version 3.1.2 registers 30 tools across eight modules (ros_mcp/tools/__init__.py), more than the README's feature list suggests. The robot address is not a setting: the server starts pointed at 127.0.0.1:9090 and the client changes it with connect_to_robot. It runs over stdio by default and can serve HTTP or streamable HTTP with --transport, --host and --port (ros_mcp/main.py).
| Runtime | Python 3.10+ |
|---|
Python 3.10+ and uv on the machine running the client (the docs' command is uvx). A robot or simulator with ROS 1 or ROS 2 and the rosbridge_server package installed and launched (ros2 launch rosbridge_server rosbridge_websocket_launch.xml), reachable from that machine on the same network or over a VPN. On Windows the docs run it inside WSL.
It reaches ROS only through rosbridge; without a running rosbridge node every tool fails. It holds one robot connection at a time, starting at 127.0.0.1:9090 until connect_to_robot is called. publish_for_durations refuses rates above 100 Hz; subscribe_for_duration stops after 100 messages by default (max_messages). Image frames are written to ./camera/received_image.jpeg relative to where the server was started, overwriting the previous one. HTTP mode binds to 127.0.0.1 on port 9000 unless --host and --port are given, and the docs describe no sign-in for it.
Robotics developers and researchers who already run ROS and want a client to explore a robot's topics and services, debug it or drive it in plain language, in simulation or on hardware. It is local and community-made, not from Open Robotics, and its tools can move a real robot, so it fits a lab or test setup where someone watches the robot. Pick something else if your robot does not use ROS, or if you cannot run rosbridge on it.
connect_to_robotping_robotsget_verified_robot_specget_verified_robots_listdetect_ros_versionget_topicsget_topic_typeget_topic_detailsget_message_detailssubscribe_oncesubscribe_for_durationpublish_for_durationsget_servicesget_service_typeget_service_detailscall_serviceget_actionsget_action_detailsget_action_statussend_action_goalcancel_action_goalget_nodesget_node_detailsget_parameterset_parameterhas_parameterdelete_parameterget_parametersget_parameter_detailsview_saved_image