LabStore
← All labs

WiseVision ROS2

by docker ✓ verified ✓ Packaged by Docker

Python server implementing Model Context Protocol (MCP) for ROS2.

MCP server installable network: on runtime: sysbox

DevOps MCP Servers

WiseVision ROS2 MCP Server

Python server implementing Model Context Protocol (MCP) for ROS2.

What is an MCP Server?

MCP Info

Attribute Details
Docker Image mcp/ros2
Author wise-vision
Repository https://github.com/wise-vision/mcp_server_ros_2

Image Building Info

Attribute Details
Dockerfile https://github.com/wise-vision/mcp_server_ros_2/blob/a4d248c63980e1304c3c5a3288ee165f880e59f4/Dockerfile
Commit a4d248c63980e1304c3c5a3288ee165f880e59f4
Docker Image built by Docker Inc.
Docker Scout Health Score Docker Scout Health Score
Verify Signature COSIGN_REPOSITORY=mcp/signatures cosign verify mcp/ros2 --key https://raw.githubusercontent.com/docker/keyring/refs/heads/main/public/mcp/latest.pub
Licence Mozilla Public License 2.0

Available Tools (14)

Tools provided by this Server Short Description
ros2_action_request_result Wait for the RESULT of a ROS 2 action (GetResult) for a given goal_id.
ros2_action_subscribe_feedback Subscribe to feedback messages of a ROS 2 action.
ros2_action_subscribe_status Subscribe to '/<action>/_action/status' (action_msgs/msg/GoalStatusArray) and return a snapshot of status frames over a time window.
ros2_cancel_action_goal Cancel a ROS 2 action goal via '/<action>/cancel_goal' (action_msgs/srv/CancelGoal).
ros2_get_message_fields Returns the fields of a given ROS2 message type.
ros2_get_messages_stored_in_influx_data_base Calls the ROS2 ‘/get_messages’ service to retrieve past messages from a topic for data which is stored in InfluxDB.
ros2_interface_list Returns a list of available ROS 2 interfaces.
ros2_list_actions List all available ROS 2 actions with their types and request fields.
ros2_send_action_goal Send a goal to a ROS 2 action by name and action type using provided goal fields.
ros2_service_call Call a ROS 2 service by name and type using provided fields.
ros2_service_list Returns a list of available ROS 2 services and their request fields.
ros2_topic_list Returns a list of available ROS 2 topics and their types.
ros2_topic_publish Publish a message to a ROS 2 topic by name and message type using provided field values.
ros2_topic_subscribe Subscribe to a ROS 2 topic by name collecting messages for a given time or count limit.

Tools Details

Tool: ros2_action_request_result

Wait for the RESULT of a ROS 2 action (GetResult) for a given goal_id. Before every use of this tool, the agent should ensure the target action exists (e.g., by calling 'ros2_list_actions').

Parameters Type Description
action_name string Action name, e.g. '/fibonacci'
action_type string Full action type, e.g. 'example_interfaces/action/Fibonacci' or 'pkg/ActionName'
goal_id_hex string 32-char UUID hex of the goal (no dashes).
timeout_sec string optional Seconds to wait for GetResult; null → wait indefinitely.
wait_for_service_sec number optional Seconds to wait for the GetResult service to appear.

Tool: ros2_action_subscribe_feedback

Subscribe to feedback messages of a ROS 2 action. Optionally filter by goal_id_hex. Collects feedback for a fixed duration or until a maximum number of messages is received. Each message contains goal_id, feedback payload, and receive timestamp.

Parameters Type Description
action_name string Action name, e.g. '/fibonacci'
action_type string Full action type, e.g. 'example_interfaces/action/Fibonacci' or 'pkg/ActionName'
duration_sec number optional How many seconds to keep spinning and collecting feedback.
goal_id_hex string optional Optional 32-char UUID hex of the goal (no dashes) to filter feedbacks.
max_messages integer optional Maximum number of feedback messages to collect.

Tool: ros2_action_subscribe_status

Subscribe to '/<action>/_action/status' (action_msgs/msg/GoalStatusArray) and return a snapshot of status frames over a time window. Each frame contains goal_id, accept_stamp, status_code and status text.

Parameters Type Description
action_name string Action name, e.g. '/fibonacci'
duration_sec number optional How many seconds to collect status frames.
max_messages integer optional Max number of individual statuses to collect in total.

Tool: ros2_cancel_action_goal

Cancel a ROS 2 action goal via '/<action>/cancel_goal' (action_msgs/srv/CancelGoal). You can cancel a specific goal by goal_id_hex or cancel all matching goals using cancel_all=True. Optionally limit cancellation to goals accepted before a given stamp (sec/nanosec). Before every use of this tool, the agent should ensure the target action exists (e.g., by calling 'ros2_list_actions').

Parameters Type Description
action_name string Action name, e.g. '/fibonacci' or '/navigate_to_pose'
cancel_all boolean optional If true, send zero-UUID to cancel all matching goals.
goal_id_hex string optional 32-char UUID hex of the goal (no dashes). Omit when cancel_all=True.
stamp_nanosec integer optional Nanoseconds part for the acceptance time filter.
stamp_sec integer optional Cancel goals accepted BEFORE this sec (default 0 → usually all).
wait_timeout_sec number optional Timeout (seconds) to wait for the service and response.

Tool: ros2_get_message_fields

Returns the fields of a given ROS2 message type.

Parameters Type Description
message_type string Full ROS2 message type, e.g., std_msgs/msg/String

Tool: ros2_get_messages_stored_in_influx_data_base

Calls the ROS2 ‘/get_messages’ service to retrieve past messages from a topic for data which is stored in InfluxDB. Check if the /get_messages service is available before calling.

Parameters Type Description
message_type string Full ROS2 message type used for decoding
topic_name string Name of the topic to retrieve messages from.
number_of_messages integer optional Number of messages to fetch.
time_end string optional ISO8601 timestamp string to filter messages before a point in time.
time_start string optional ISO8601 timestamp string to filter messages after a point in time.

Tool: ros2_interface_list

Returns a list of available ROS 2 interfaces.

Tool: ros2_list_actions

List all available ROS 2 actions with their types and request fields. This tool queries the current ROS graph to discover active action servers and returns a structured description for each action.

Tool: ros2_send_action_goal

Send a goal to a ROS 2 action by name and action type using provided goal fields. Before every use of this tool, the agent must call 'ros2_list_actions' and 'ros2_interface_list' to ensure the latest available actions and types are known. Optionally wait for the result with a timeout.

Parameters Type Description
action_name string Action name, e.g. '/fibonacci' or '/navigate_to_pose'
action_type string Full action type, e.g. 'example_interfaces/action/Fibonacci' or 'pkg/ActionName'
goal_fields object Dictionary with goal message fields (1st section of .action file)
timeout_sec number optional Timeout (seconds) for waiting on the result when wait_for_result=true
wait_for_result boolean optional If true, wait for GetResult and include final status/result

Tool: ros2_service_call

Call a ROS 2 service by name and type using provided fields. Will ask the user to confirm if some fields are missing unless 'force_call' is set to True. Before every use of this tool, the agent must call 'ros2 service list' and 'ros2 interface list' to ensure the latest interface information is available.

Parameters Type Description
fields object Dictionary of fields to send in the service request.
service_name string Name of the service to call
service_type string Full ROS 2 service type, before pass, check service type using tool ros2_service_list
force_call boolean optional Whether to call the service even if some fields are missing

Tool: ros2_service_list

Returns a list of available ROS 2 services and their request fields.

Tool: ros2_topic_list

Returns a list of available ROS 2 topics and their types.

Tool: ros2_topic_publish

Publish a message to a ROS 2 topic by name and message type using provided field values. Supports single publish (default) or continuous publishing at a specified frequency for a duration. Before every use of this tool, the agent must call 'ros2_topic_list' and 'ros2_interface_list' to ensure the latest available topics and message types are known.

Parameters Type Description
data object Dictionary containing the message fields and values
message_type string Full ROS 2 message type, e.g., 'std_msgs/msg/String'
topic_name string Name of the topic to publish to
duration number optional Optional: Duration in seconds for continuous publishing. Must be used with frequency parameter.
frequency number optional Optional: Publish frequency in Hz (messages per second). If provided with duration, publishes repeatedly.

Tool: ros2_topic_subscribe

Subscribe to a ROS 2 topic by name collecting messages for a given time or count limit. Before every use of this tool, the agent must call 'ros2_topic_list' to ensure it has the latest available topics

Parameters Type Description
topic_name string Name of the topic to subscribe to
duration number optional If provided, collects messages for this many seconds.
message_limit integer optional If provided, stops after receiving this number of messages.

Use this MCP Server

{
  "mcpServers": {
    "ros2": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "mcp/ros2"
      ]
    }
  }
}

Why is it safer to run MCP Servers with Docker?