ROS 2 CLI wrapper via MCP — introspect topics, services, nodes, and lifecycle
ros-mcp provides 12 tools with basic descriptions and input schemas, but falls short of production quality. Tool names follow verb_noun convention (ros_status, topic_list, topic_echo, etc.), which is good. However, descriptions are inconsistent in depth and actionability. Most parameter descriptions are minimal (e.g., 'ROS 2 topic name to echo from' lacks format/constraint details). Output schemas are not documented, LLMs cannot predict what fields to expect from responses. Error handling is absent from descriptions. Job management tools (job_create, job_start, job_stop, list_jobs) lack clarity on state transitions and failure modes. No evidence of input validation guidance or recovery paths in descriptions.
Create a new ROS 2 job (launch file or node). Creates a job entry and stores it in the jobs directory.
Start a ROS 2 job. Starts a previously created job by ID.
Stop a running ROS 2 job. Stops a job by ID.
List all ROS 2 jobs. Returns a list of all jobs with their current state.
Get detailed information about a ROS 2 node. Runs ``ros2 node info`` and parses the output.
List all active ROS 2 nodes. Runs ``ros2 node list`` and parses the output.
Check ROS 2 availability and return system status. Probes for ros2 CLI and rclpy. If a ROS system is running, returns active nodes, topics, and services.
Output schemas not documented. LLMs cannot predict response structure (fields, types, nested objects). Breaks tool chaining and forces agents to guess what data is available.
Job state machine tools (job_create, job_start, job_stop) lack error handling guidance. No description of failure modes, state transitions, or recovery paths. LLMs cannot handle failures gracefully.
Parameter descriptions lack constraint details. E.g., 'count' and 'timeout' in topic_echo have no min/max bounds. 'type' in topic_pub and service_call lack format examples (std_msgs/msg/String vs other patterns).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Call a ROS 2 service with request data. Runs ``ros2 service call`` with the given service name, type, and request values.
List all active ROS 2 services with their types. Runs ``ros2 service list -t`` and parses the output.
Echo messages from a ROS 2 topic. Runs ``ros2 topic echo`` with a limited count and timeout.
List all active ROS 2 topics with their types. Runs ``ros2 topic list -t`` and parses the output.
Publish a message to a ROS 2 topic. Runs ``ros2 topic pub`` with the given message type and field values. Publishes a single message at the specified rate.
job_create 'config' parameter is an untyped object with no schema or description of expected fields. LLMs cannot construct valid config without trial-and-error.
No pagination support documented for list tools (topic_list, service_list, node_list, list_jobs). If ROS systems have many topics/services, responses could exceed context limits without limit/offset parameters.