← WebMCP Directory

Tool tree

jonasneves.com

Developer ToolsTools verified
Website
Inspect and control ROS robots from the browser
Explore capabilities
    connect_to_robotAction

    Set the rosbridge WebSocket URL and reconnect.

    View tool JSON
    {
      "name": "connect_to_robot",
      "kind": "act",
      "impl": "imperative",
      "description": "Set the rosbridge WebSocket URL and reconnect.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "ip": {
            "type": "string",
            "description": "rosbridge host IP or hostname",
            "default": "127.0.0.1"
          },
          "port": {
            "type": "number",
            "description": "rosbridge port",
            "default": 9090
          }
        },
        "required": [
          "ip",
          "port"
        ]
      },
      "page": "/ros-mcp/"
    }
    get_topicsAnswer

    List all ROS topics.

    View tool JSON
    {
      "name": "get_topics",
      "kind": "answer",
      "impl": "imperative",
      "description": "List all ROS topics.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/ros-mcp/"
    }
    get_topic_typeAnswer

    Get the message type for a ROS topic.

    View tool JSON
    {
      "name": "get_topic_type",
      "kind": "answer",
      "impl": "imperative",
      "description": "Get the message type for a ROS topic.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "topic": {
            "type": "string",
            "description": "Full topic name, e.g. /turtle1/cmd_vel"
          }
        },
        "required": [
          "topic"
        ]
      },
      "page": "/ros-mcp/"
    }
    get_topic_detailsAnswer

    Get publishers, subscribers, and type for a topic.

    View tool JSON
    {
      "name": "get_topic_details",
      "kind": "answer",
      "impl": "imperative",
      "description": "Get publishers, subscribers, and type for a topic.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "topic": {
            "type": "string"
          }
        },
        "required": [
          "topic"
        ]
      },
      "page": "/ros-mcp/"
    }
    subscribe_onceSensitive Action

    Subscribe to a topic and return the first message received.

    View tool JSON
    {
      "name": "subscribe_once",
      "kind": "transact",
      "impl": "imperative",
      "description": "Subscribe to a topic and return the first message received.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "topic": {
            "type": "string"
          },
          "msg_type": {
            "type": "string",
            "description": "ROS message type, e.g. turtlesim/msg/Pose"
          },
          "timeout": {
            "type": "number",
            "description": "Timeout in seconds (default 5)",
            "default": 5
          }
        },
        "required": [
          "topic",
          "msg_type"
        ]
      },
      "page": "/ros-mcp/"
    }
    subscribe_for_durationSensitive Action

    Subscribe to a topic and collect messages for a given duration.

    View tool JSON
    {
      "name": "subscribe_for_duration",
      "kind": "transact",
      "impl": "imperative",
      "description": "Subscribe to a topic and collect messages for a given duration.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "topic": {
            "type": "string"
          },
          "msg_type": {
            "type": "string"
          },
          "duration": {
            "type": "number",
            "description": "Duration in seconds"
          },
          "max_messages": {
            "type": "number",
            "description": "Stop after this many messages",
            "default": 100
          }
        },
        "required": [
          "topic",
          "msg_type",
          "duration"
        ]
      },
      "page": "/ros-mcp/"
    }
    publish_onceAction

    Publish a single message to a topic.

    View tool JSON
    {
      "name": "publish_once",
      "kind": "act",
      "impl": "imperative",
      "description": "Publish a single message to a topic.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "topic": {
            "type": "string"
          },
          "msg_type": {
            "type": "string"
          },
          "msg": {
            "type": "object",
            "description": "Message payload as JSON object"
          }
        },
        "required": [
          "topic",
          "msg_type",
          "msg"
        ]
      },
      "page": "/ros-mcp/"
    }
    publish_for_durationsAction

    Publish a sequence of messages with delays between each.

    View tool JSON
    {
      "name": "publish_for_durations",
      "kind": "act",
      "impl": "imperative",
      "description": "Publish a sequence of messages with delays between each.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "topic": {
            "type": "string"
          },
          "msg_type": {
            "type": "string"
          },
          "messages": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Array of message payloads"
          },
          "durations": {
            "type": "array",
            "items": {
              "type": "number"
            },
            "description": "Delay in seconds after each message"
          }
        },
        "required": [
          "topic",
          "msg_type",
          "messages",
          "durations"
        ]
      },
      "page": "/ros-mcp/"
    }
    turn_by_angleAction

    Rotate a robot in place by an angle in degrees. Computes duration = (|angle_deg| x pi/180) / angular_velocity and sends a zero-velocity stop when finished. Prefer this over publish_for_durations for rotation — it removes the error-prone duration maths from the caller. Positive angle_deg = counter-clockwise, negative = clockwise. Units: angle_deg in degrees, angular_velocity in rad/s. Example — turn turtle1 90 degrees counter-clockwise at 1.0 rad/s: turn_by_angle(cmd_vel_topic='/ts1/turtle1/cmd_vel', msg_type='geometry_msgs/Twist', angle_deg=90)

    View tool JSON
    {
      "name": "turn_by_angle",
      "kind": "act",
      "impl": "imperative",
      "description": "Rotate a robot in place by an angle in degrees. Computes duration = (|angle_deg| x pi/180) / angular_velocity and sends a zero-velocity stop when finished. Prefer this over publish_for_durations for rotation — it removes the error-prone duration maths from the caller. Positive angle_deg = counter-clockwise, negative = clockwise. Units: angle_deg in degrees, angular_velocity in rad/s.\nExample — turn turtle1 90 degrees counter-clockwise at 1.0 rad/s:\nturn_by_angle(cmd_vel_topic='/ts1/turtle1/cmd_vel', msg_type='geometry_msgs/Twist', angle_deg=90)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "cmd_vel_topic": {
            "type": "string",
            "description": "e.g. /ts1/turtle1/cmd_vel"
          },
          "msg_type": {
            "type": "string",
            "description": "e.g. geometry_msgs/Twist"
          },
          "angle_deg": {
            "type": "number",
            "description": "Degrees; positive = counter-clockwise"
          },
          "angular_velocity": {
            "type": "number",
            "description": "rad/s, must be > 0",
            "default": 1
          }
        },
        "required": [
          "cmd_vel_topic",
          "msg_type",
          "angle_deg"
        ]
      },
      "page": "/ros-mcp/"
    }
    move_by_distanceAction

    Move a robot forward or backward by a distance in metres. Computes duration = |distance_m| / linear_velocity and sends a zero-velocity stop when finished. Prefer this over publish_for_durations for straight-line motion. Positive distance_m = forward, negative = backward. Units: distance_m in metres, linear_velocity in m/s. Example — move turtle1 forward 1 metre at 0.5 m/s: move_by_distance(cmd_vel_topic='/ts1/turtle1/cmd_vel', msg_type='geometry_msgs/Twist', distance_m=1.0)

    View tool JSON
    {
      "name": "move_by_distance",
      "kind": "act",
      "impl": "imperative",
      "description": "Move a robot forward or backward by a distance in metres. Computes duration = |distance_m| / linear_velocity and sends a zero-velocity stop when finished. Prefer this over publish_for_durations for straight-line motion. Positive distance_m = forward, negative = backward. Units: distance_m in metres, linear_velocity in m/s.\nExample — move turtle1 forward 1 metre at 0.5 m/s:\nmove_by_distance(cmd_vel_topic='/ts1/turtle1/cmd_vel', msg_type='geometry_msgs/Twist', distance_m=1.0)",
      "inputSchema": {
        "type": "object",
        "properties": {
          "cmd_vel_topic": {
            "type": "string",
            "description": "e.g. /ts1/turtle1/cmd_vel"
          },
          "msg_type": {
            "type": "string",
            "description": "e.g. geometry_msgs/Twist"
          },
          "distance_m": {
            "type": "number",
            "description": "Metres; positive = forward"
          },
          "linear_velocity": {
            "type": "number",
            "description": "m/s, must be > 0",
            "default": 0.5
          }
        },
        "required": [
          "cmd_vel_topic",
          "msg_type",
          "distance_m"
        ]
      },
      "page": "/ros-mcp/"
    }
    get_servicesAnswer

    List all available ROS services.

    View tool JSON
    {
      "name": "get_services",
      "kind": "answer",
      "impl": "imperative",
      "description": "List all available ROS services.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/ros-mcp/"
    }
    get_service_detailsAnswer

    Get the request/response type and provider node for a service.

    View tool JSON
    {
      "name": "get_service_details",
      "kind": "answer",
      "impl": "imperative",
      "description": "Get the request/response type and provider node for a service.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "service": {
            "type": "string"
          }
        },
        "required": [
          "service"
        ]
      },
      "page": "/ros-mcp/"
    }
    call_serviceAction

    Call a ROS service with a request payload.

    View tool JSON
    {
      "name": "call_service",
      "kind": "act",
      "impl": "imperative",
      "description": "Call a ROS service with a request payload.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "service_name": {
            "type": "string"
          },
          "service_type": {
            "type": "string"
          },
          "request": {
            "type": "object",
            "description": "Request payload as JSON object"
          }
        },
        "required": [
          "service_name",
          "service_type",
          "request"
        ]
      },
      "page": "/ros-mcp/"
    }
    get_nodesAnswer

    List all running ROS nodes.

    View tool JSON
    {
      "name": "get_nodes",
      "kind": "answer",
      "impl": "imperative",
      "description": "List all running ROS nodes.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/ros-mcp/"
    }
    get_node_detailsAnswer

    Get publishers, subscribers, and services for a node.

    View tool JSON
    {
      "name": "get_node_details",
      "kind": "answer",
      "impl": "imperative",
      "description": "Get publishers, subscribers, and services for a node.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "node": {
            "type": "string"
          }
        },
        "required": [
          "node"
        ]
      },
      "page": "/ros-mcp/"
    }
    get_connected_robotsAnswer

    Detect connected robots by finding active cmd_vel topics on the ROS network. Works with any robot — no hardcoded names. Returns the cmd_vel topic and message type for each robot. Call this when you need to discover robot topics before issuing motion commands.

    View tool JSON
    {
      "name": "get_connected_robots",
      "kind": "answer",
      "impl": "imperative",
      "description": "Detect connected robots by finding active cmd_vel topics on the ROS network. Works with any robot — no hardcoded names. Returns the cmd_vel topic and message type for each robot. Call this when you need to discover robot topics before issuing motion commands.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/ros-mcp/"
    }
    move_robotsAction

    Move multiple robots simultaneously. All start and stop at the same time. Use get_connected_robots() first to get topics and message types. Each robot entry needs: cmd_vel_topic, msg_type, and linear_x and/or angular_z.

    View tool JSON
    {
      "name": "move_robots",
      "kind": "act",
      "impl": "imperative",
      "description": "Move multiple robots simultaneously. All start and stop at the same time. Use get_connected_robots() first to get topics and message types. Each robot entry needs: cmd_vel_topic, msg_type, and linear_x and/or angular_z.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "robots": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "cmd_vel_topic": {
                  "type": "string"
                },
                "msg_type": {
                  "type": "string"
                },
                "linear_x": {
                  "type": "number",
                  "default": 0
                },
                "angular_z": {
                  "type": "number",
                  "default": 0
                }
              },
              "required": [
                "cmd_vel_topic",
                "msg_type"
              ]
            }
          },
          "duration": {
            "type": "number",
            "description": "Duration in seconds",
            "default": 2
          }
        },
        "required": [
          "robots"
        ]
      },
      "page": "/ros-mcp/"
    }
    get_robot_descriptionAnswer

    Fetch the robot's URDF from the /robot_description ROS parameter. Requires robot_state_publisher to be running.

    View tool JSON
    {
      "name": "get_robot_description",
      "kind": "answer",
      "impl": "imperative",
      "description": "Fetch the robot's URDF from the /robot_description ROS parameter. Requires robot_state_publisher to be running.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/ros-mcp/"
    }
    get_joint_statesAnswer

    Read current joint positions (rad), velocities (rad/s), and efforts (N·m) from /joint_states.

    View tool JSON
    {
      "name": "get_joint_states",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read current joint positions (rad), velocities (rad/s), and efforts (N·m) from /joint_states.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "topic": {
            "type": "string",
            "description": "Joint states topic (default: /joint_states)",
            "default": "/joint_states"
          },
          "timeout": {
            "type": "number",
            "description": "Timeout in seconds (default 5)",
            "default": 5
          }
        }
      },
      "page": "/ros-mcp/"
    }