Skip to content

Tool reference

Pinned to ROS2 MCP release 2610. This page is generated from the server’s tool registry: do not edit it by hand.

Generated from ROS2 MCP 2606-3-g47b4918 (package version 0.1.0, source 47b4918658f44f77a0e46da223aba5d9cca64ab6).

24 tools are registered.

Tool Mutates robot state Summary
ros2_action_request_result no 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’).
ros2_action_subscribe_feedback no 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.
ros2_action_subscribe_status no 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.
ros2_cancel_action_goal ⚠ yes 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’).
ros2_get_map_as_image no Get one nav_msgs/msg/OccupancyGrid message from a topic and return it as a PNG image (base64-encoded). Unknown cells rendered as gray, free as white, occupied as black.
ros2_get_message_fields no Returns the fields of a given ROS2 message type.
ros2_get_messages_stored_in_influx_data_base no Calls the ROS2 ‘/get_messages’ service to retrieve past messages from a topic for data which is stored in InfluxDB.
ros2_get_pointcloud_as_bev no Get one sensor_msgs/msg/PointCloud2 message from a topic and return it as a PNG image (base64-encoded) rendered as a bird’s-eye view (XY projection). Supports coloring by intensity/height/rgb.
ros2_interface_list no Returns a list of available ROS 2 interfaces.
ros2_list_actions no List all available ROS 2 actions with their types and request fields.
ros2_publish_multiple_topics ⚠ yes Publish messages to multiple ROS 2 topics simultaneously with optional frequency and duration.
ros2_send_action_goal ⚠ yes 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.
ros2_service_call ⚠ yes Call a ROS 2 service by name and type using provided fields.
ros2_service_list no Returns a list of available ROS 2 services and their request fields.
ros2_stream_next no Fetch the latest item from a stream session. If after_seq is provided, returns available=false until seq increases. UI/App-only tool.
ros2_stream_next_image no Fetch the latest image from an image stream session and return it as ImageContent (useful when the client cannot render the Viewer App UI). UI/App-only tool.
ros2_stream_start no Start a keep-latest stream session for a ROS 2 topic (Image/CompressedImage/PointCloud2/Generic). Returns a session_id. UI/App-only tool.
ros2_stream_stop no Stop and clean up a stream session previously started with ros2_stream_start. UI/App-only tool.
ros2_subscribe_multiple_topics no Subscribe to multiple ROS 2 topics at once and return received messages.
ros2_topic_list no Returns a list of available ROS 2 topics and their types.
ros2_topic_publish ⚠ yes Publish a message to a ROS 2 topic by name and message type using provided field values.
ros2_topic_subscribe no Subscribe to a ROS 2 topic by name collecting messages for a given time or count limit.
ros2_viewer_app no Open an interactive ROS 2 viewer app (Image + PointCloud2 + Plot) for MCP clients that support Apps/HTML resources.
ros2_viewer_config no Return the last ROS 2 Viewer App configuration (if any). UI/App-only tool.

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’).

Parameter Type Required Notes
action_name string yes Action name, e.g. ‘/fibonacci’
action_type string yes Full action type, e.g. ‘example_interfaces/action/Fibonacci’ or ‘pkg/ActionName’
goal_id_hex string yes 32-char UUID hex of the goal (no dashes).
timeout_sec number | null no Seconds to wait for GetResult; null → wait indefinitely. · default: 60.0
wait_for_service_sec number no Seconds to wait for the GetResult service to appear. · default: 3.0
Input schema (JSON)
{
"additionalProperties": false,
"properties": {
"action_name": {
"description": "Action name, e.g. '/fibonacci'",
"type": "string"
},
"action_type": {
"description": "Full action type, e.g. 'example_interfaces/action/Fibonacci' or 'pkg/ActionName'",
"type": "string"
},
"goal_id_hex": {
"description": "32-char UUID hex of the goal (no dashes).",
"type": "string"
},
"timeout_sec": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": 60.0,
"description": "Seconds to wait for GetResult; null → wait indefinitely."
},
"wait_for_service_sec": {
"default": 3.0,
"description": "Seconds to wait for the GetResult service to appear.",
"type": "number"
}
},
"required": [
"action_name",
"action_type",
"goal_id_hex"
],
"type": "object"
}

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.

Parameter Type Required Notes
action_name string yes Action name, e.g. ‘/fibonacci’
action_type string yes Full action type, e.g. ‘example_interfaces/action/Fibonacci’ or ‘pkg/ActionName’
duration_sec number no How many seconds to keep spinning and collecting feedback. · default: 5.0
goal_id_hex string | null no Optional 32-char UUID hex of the goal (no dashes) to filter feedbacks.
max_messages integer no Maximum number of feedback messages to collect. · default: 100
Input schema (JSON)
{
"additionalProperties": false,
"properties": {
"action_name": {
"description": "Action name, e.g. '/fibonacci'",
"type": "string"
},
"action_type": {
"description": "Full action type, e.g. 'example_interfaces/action/Fibonacci' or 'pkg/ActionName'",
"type": "string"
},
"duration_sec": {
"default": 5.0,
"description": "How many seconds to keep spinning and collecting feedback.",
"type": "number"
},
"goal_id_hex": {
"description": "Optional 32-char UUID hex of the goal (no dashes) to filter feedbacks.",
"type": [
"string",
"null"
]
},
"max_messages": {
"default": 100,
"description": "Maximum number of feedback messages to collect.",
"type": "integer"
}
},
"required": [
"action_name",
"action_type"
],
"type": "object"
}

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.

Parameter Type Required Notes
action_name string yes Action name, e.g. ‘/fibonacci’
duration_sec number no How many seconds to collect status frames. · default: 5.0
max_messages integer no Max number of individual statuses to collect in total. · default: 100
Input schema (JSON)
{
"additionalProperties": false,
"properties": {
"action_name": {
"description": "Action name, e.g. '/fibonacci'",
"type": "string"
},
"duration_sec": {
"default": 5.0,
"description": "How many seconds to collect status frames.",
"type": "number"
},
"max_messages": {
"default": 100,
"description": "Max number of individual statuses to collect in total.",
"type": "integer"
}
},
"required": [
"action_name"
],
"type": "object"
}

⚠ mutates robot state

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’).

Parameter Type Required Notes
action_name string yes Action name, e.g. ‘/fibonacci’ or ‘/navigate_to_pose’
cancel_all boolean no If true, send zero-UUID to cancel all matching goals. · default: false
goal_id_hex string no 32-char UUID hex of the goal (no dashes). Omit when cancel_all=True.
stamp_nanosec integer no Nanoseconds part for the acceptance time filter. · default: 0
stamp_sec integer no Cancel goals accepted BEFORE this sec (default 0 → usually all). · default: 0
wait_timeout_sec number no Timeout (seconds) to wait for the service and response. · default: 3.0
Input schema (JSON)
{
"additionalProperties": false,
"properties": {
"action_name": {
"description": "Action name, e.g. '/fibonacci' or '/navigate_to_pose'",
"type": "string"
},
"cancel_all": {
"default": false,
"description": "If true, send zero-UUID to cancel all matching goals.",
"type": "boolean"
},
"goal_id_hex": {
"description": "32-char UUID hex of the goal (no dashes). Omit when cancel_all=True.",
"type": "string"
},
"stamp_nanosec": {
"default": 0,
"description": "Nanoseconds part for the acceptance time filter.",
"type": "integer"
},
"stamp_sec": {
"default": 0,
"description": "Cancel goals accepted BEFORE this sec (default 0 → usually all).",
"type": "integer"
},
"wait_timeout_sec": {
"default": 3.0,
"description": "Timeout (seconds) to wait for the service and response.",
"type": "number"
}
},
"required": [
"action_name"
],
"type": "object"
}

Get one nav_msgs/msg/OccupancyGrid message from a topic and return it as a PNG image (base64-encoded). Unknown cells rendered as gray, free as white, occupied as black.

Parameter Type Required Notes
topic_name string yes The name of the ROS 2 topic publishing nav_msgs/msg/OccupancyGrid (e.g., /map).
Input schema (JSON)
{
"properties": {
"topic_name": {
"description": "The name of the ROS 2 topic publishing nav_msgs/msg/OccupancyGrid (e.g., /map).",
"type": "string"
}
},
"required": [
"topic_name"
],
"type": "object"
}

Returns the fields of a given ROS2 message type.

Parameter Type Required Notes
message_type string yes Full ROS2 message type, e.g., std_msgs/msg/String
Input schema (JSON)
{
"properties": {
"message_type": {
"description": "Full ROS2 message type, e.g., std_msgs/msg/String",
"type": "string"
}
},
"required": [
"message_type"
],
"type": "object"
}

ros2_get_messages_stored_in_influx_data_base

Section titled “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.

Parameter Type Required Notes
message_type string yes Full ROS2 message type used for decoding
number_of_messages integer no Number of messages to fetch. · default: 0
time_end string no ISO8601 timestamp string to filter messages before a point in time.
time_start string no ISO8601 timestamp string to filter messages after a point in time.
topic_name string yes Name of the topic to retrieve messages from.
Input schema (JSON)
{
"properties": {
"message_type": {
"description": "Full ROS2 message type used for decoding",
"type": "string"
},
"number_of_messages": {
"default": 0,
"description": "Number of messages to fetch.",
"type": "integer"
},
"time_end": {
"description": "ISO8601 timestamp string to filter messages before a point in time.",
"type": "string"
},
"time_start": {
"description": "ISO8601 timestamp string to filter messages after a point in time.",
"type": "string"
},
"topic_name": {
"description": "Name of the topic to retrieve messages from.",
"type": "string"
}
},
"required": [
"topic_name",
"message_type"
],
"type": "object"
}

Get one sensor_msgs/msg/PointCloud2 message from a topic and return it as a PNG image (base64-encoded) rendered as a bird’s-eye view (XY projection). Supports coloring by intensity/height/rgb.

Parameter Type Required Notes
color_mode string no Coloring mode: ‘intensity’ | ‘height’ | ‘rgb’. · one of: "intensity", "height", "rgb" · default: "intensity"
colormap string no Colormap for intensity/height: ‘jet’ | ‘gray’. · one of: "jet", "gray" · default: "jet"
max_pixels integer no Max image size per axis (to cap huge clouds). · default: 2048
resolution number no Meters per pixel for the BEV image. · default: 0.05
timeout number no Seconds to wait for a message. · default: 5.0
topic_name string yes ROS 2 topic with PointCloud2 (e.g., /points).
zmax number no Max Z to include (meters).
zmin number no Min Z to include (meters).
Input schema (JSON)
{
"properties": {
"color_mode": {
"default": "intensity",
"description": "Coloring mode: 'intensity' | 'height' | 'rgb'.",
"enum": [
"intensity",
"height",
"rgb"
],
"type": "string"
},
"colormap": {
"default": "jet",
"description": "Colormap for intensity/height: 'jet' | 'gray'.",
"enum": [
"jet",
"gray"
],
"type": "string"
},
"max_pixels": {
"default": 2048,
"description": "Max image size per axis (to cap huge clouds).",
"type": "integer"
},
"resolution": {
"default": 0.05,
"description": "Meters per pixel for the BEV image.",
"type": "number"
},
"timeout": {
"default": 5.0,
"description": "Seconds to wait for a message.",
"type": "number"
},
"topic_name": {
"description": "ROS 2 topic with PointCloud2 (e.g., /points).",
"type": "string"
},
"zmax": {
"description": "Max Z to include (meters).",
"type": "number"
},
"zmin": {
"description": "Min Z to include (meters).",
"type": "number"
}
},
"required": [
"topic_name"
],
"type": "object"
}

Returns a list of available ROS 2 interfaces.

No parameters.

Input schema (JSON)
{
"properties": {},
"type": "object"
}

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.

No parameters.

Input schema (JSON)
{
"additionalProperties": false,
"properties": {},
"type": "object"
}

⚠ mutates robot state

Publish messages to multiple ROS 2 topics simultaneously with optional frequency and duration.

Parameter Type Required Notes
topics array<object> yes List of topics to publish to.
Input schema (JSON)
{
"properties": {
"topics": {
"description": "List of topics to publish to.",
"items": {
"properties": {
"data": {
"description": "Message content as dictionary",
"type": "object"
},
"duration": {
"default": 5.0,
"description": "Duration in seconds to publish (optional)",
"type": "number"
},
"frequency": {
"default": 1.0,
"description": "Publishing frequency in Hz (optional)",
"type": "number"
},
"message_type": {
"type": "string"
},
"topic_name": {
"type": "string"
}
},
"required": [
"topic_name",
"message_type",
"data"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"topics"
],
"type": "object"
}

⚠ mutates robot state

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.

Parameter Type Required Notes
action_name string yes Action name, e.g. ‘/fibonacci’ or ‘/navigate_to_pose’
action_type string yes Full action type, e.g. ‘example_interfaces/action/Fibonacci’ or ‘pkg/ActionName’
goal_fields object yes Dictionary with goal message fields (1st section of .action file)
timeout_sec number no Timeout (seconds) for waiting on the result when wait_for_result=true · default: 60.0
wait_for_result boolean no If true, wait for GetResult and include final status/result · default: false
Input schema (JSON)
{
"additionalProperties": false,
"properties": {
"action_name": {
"description": "Action name, e.g. '/fibonacci' or '/navigate_to_pose'",
"type": "string"
},
"action_type": {
"description": "Full action type, e.g. 'example_interfaces/action/Fibonacci' or 'pkg/ActionName'",
"type": "string"
},
"goal_fields": {
"description": "Dictionary with goal message fields (1st section of .action file)",
"type": "object"
},
"timeout_sec": {
"default": 60.0,
"description": "Timeout (seconds) for waiting on the result when wait_for_result=true",
"type": "number"
},
"wait_for_result": {
"default": false,
"description": "If true, wait for GetResult and include final status/result",
"type": "boolean"
}
},
"required": [
"action_name",
"action_type",
"goal_fields"
],
"type": "object"
}

⚠ mutates robot state

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.

Parameter Type Required Notes
fields object yes Dictionary of fields to send in the service request.
force_call boolean no Whether to call the service even if some fields are missing · default: false
service_name string yes Name of the service to call
service_type string yes Full ROS 2 service type, before pass, check service type using tool ros2_service_list
Input schema (JSON)
{
"properties": {
"fields": {
"description": "Dictionary of fields to send in the service request.",
"type": "object"
},
"force_call": {
"default": false,
"description": "Whether to call the service even if some fields are missing",
"type": "boolean"
},
"service_name": {
"description": "Name of the service to call",
"type": "string"
},
"service_type": {
"description": "Full ROS 2 service type, before pass, check service type using tool ros2_service_list",
"type": "string"
}
},
"required": [
"service_name",
"service_type",
"fields"
],
"type": "object"
}

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

No parameters.

Input schema (JSON)
{
"properties": {},
"type": "object"
}

Fetch the latest item from a stream session. If after_seq is provided, returns available=false until seq increases. UI/App-only tool.

Parameter Type Required Notes
after_seq integer no
session_id string yes
Input schema (JSON)
{
"additionalProperties": false,
"properties": {
"after_seq": {
"type": "integer"
},
"session_id": {
"type": "string"
}
},
"required": [
"session_id"
],
"type": "object"
}

Fetch the latest image from an image stream session and return it as ImageContent (useful when the client cannot render the Viewer App UI). UI/App-only tool.

Parameter Type Required Notes
after_seq integer no
session_id string yes
Input schema (JSON)
{
"additionalProperties": false,
"properties": {
"after_seq": {
"type": "integer"
},
"session_id": {
"type": "string"
}
},
"required": [
"session_id"
],
"type": "object"
}

Start a keep-latest stream session for a ROS 2 topic (Image/CompressedImage/PointCloud2/Generic). Returns a session_id. UI/App-only tool.

Parameter Type Required Notes
jpeg_quality integer no default: 80
kind string yes one of: "image", "pointcloud", "message"
max_height integer no default: 540
max_points integer no Max points to return; <=0 means no limit. · default: 0
max_width integer no default: 960
qos_preset string no QoS preset for the stream subscription. Use sensor_data for most camera topics. · one of: "auto", "sensor_data", "system_default" · default: "auto"
target_fps number no Soft cap for processing frames (keep-latest, drops when over). · default: 20.0
topic_name string yes
Input schema (JSON)
{
"additionalProperties": false,
"properties": {
"jpeg_quality": {
"default": 80,
"type": "integer"
},
"kind": {
"enum": [
"image",
"pointcloud",
"message"
],
"type": "string"
},
"max_height": {
"default": 540,
"type": "integer"
},
"max_points": {
"default": 0,
"description": "Max points to return; <=0 means no limit.",
"type": "integer"
},
"max_width": {
"default": 960,
"type": "integer"
},
"qos_preset": {
"default": "auto",
"description": "QoS preset for the stream subscription. Use sensor_data for most camera topics.",
"enum": [
"auto",
"sensor_data",
"system_default"
],
"type": "string"
},
"target_fps": {
"default": 20.0,
"description": "Soft cap for processing frames (keep-latest, drops when over).",
"type": "number"
},
"topic_name": {
"type": "string"
}
},
"required": [
"topic_name",
"kind"
],
"type": "object"
}

Stop and clean up a stream session previously started with ros2_stream_start. UI/App-only tool.

Parameter Type Required Notes
session_id string yes
Input schema (JSON)
{
"additionalProperties": false,
"properties": {
"session_id": {
"type": "string"
}
},
"required": [
"session_id"
],
"type": "object"
}

Subscribe to multiple ROS 2 topics at once and return received messages.

Parameter Type Required Notes
topics array<object> yes List of topics to subscribe to.
Input schema (JSON)
{
"properties": {
"topics": {
"description": "List of topics to subscribe to.",
"items": {
"properties": {
"duration": {
"default": 0.0,
"description": "How many seconds to listen (optional).",
"type": "number"
},
"message_limit": {
"default": 0,
"description": "Number of messages to collect (optional).",
"type": "integer"
},
"name": {
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"topics"
],
"type": "object"
}

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

No parameters.

Input schema (JSON)
{
"properties": {},
"type": "object"
}

⚠ mutates robot state

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.

Parameter Type Required Notes
data object yes Dictionary containing the message fields and values
duration number no Optional: Duration in seconds for continuous publishing. Must be used with frequency parameter.
frequency number no Optional: Publish frequency in Hz (messages per second). If provided with duration, publishes repeatedly.
message_type string yes Full ROS 2 message type, e.g., ‘std_msgs/msg/String’
topic_name string yes Name of the topic to publish to
Input schema (JSON)
{
"properties": {
"data": {
"description": "Dictionary containing the message fields and values",
"type": "object"
},
"duration": {
"description": "Optional: Duration in seconds for continuous publishing. Must be used with frequency parameter.",
"type": "number"
},
"frequency": {
"description": "Optional: Publish frequency in Hz (messages per second). If provided with duration, publishes repeatedly.",
"type": "number"
},
"message_type": {
"description": "Full ROS 2 message type, e.g., 'std_msgs/msg/String'",
"type": "string"
},
"topic_name": {
"description": "Name of the topic to publish to",
"type": "string"
}
},
"required": [
"topic_name",
"message_type",
"data"
],
"type": "object"
}

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

Parameter Type Required Notes
duration number no If provided, collects messages for this many seconds.
message_limit integer no If provided, stops after receiving this number of messages.
topic_name string yes Name of the topic to subscribe to
Input schema (JSON)
{
"properties": {
"duration": {
"description": "If provided, collects messages for this many seconds.",
"type": "number"
},
"message_limit": {
"description": "If provided, stops after receiving this number of messages.",
"type": "integer"
},
"topic_name": {
"description": "Name of the topic to subscribe to",
"type": "string"
}
},
"required": [
"topic_name"
],
"type": "object"
}

Open an interactive ROS 2 viewer app (Image + PointCloud2 + Plot) for MCP clients that support Apps/HTML resources.

Parameter Type Required Notes
auto_start boolean no default: true
plot_fields array<string> no Optional list of plot field paths to preselect in Plot mode.
preferred_kind string no one of: "image", "pointcloud", "plot", "auto"
topic_name string no
Input schema (JSON)
{
"properties": {
"auto_start": {
"default": true,
"type": "boolean"
},
"plot_fields": {
"description": "Optional list of plot field paths to preselect in Plot mode.",
"items": {
"type": "string"
},
"type": "array"
},
"preferred_kind": {
"enum": [
"image",
"pointcloud",
"plot",
"auto"
],
"type": "string"
},
"topic_name": {
"type": "string"
}
},
"type": "object"
}

Return the last ROS 2 Viewer App configuration (if any). UI/App-only tool.

No parameters.

Input schema (JSON)
{
"additionalProperties": false,
"properties": {},
"type": "object"
}