A gateway that exposes ROS2 services, actions, and topics as MCP tools, allowing clients to interact with ROS2 systems through the Model Context Protocol
The ROS2 MCP Gateway exposes 3 tools for interacting with ROS2 systems. While tool names follow the verb_noun pattern (get_, service_call_, action_call_), the definitions have critical gaps: parameter descriptions are minimal, output schemas are completely undocumented, and error handling guidance is absent. All three tools lack documentation of what they return, making it impossible for LLMs to plan downstream operations or understand result structure. The input schemas are present with basic type information, but lack constraints, enums, or detailed parameter descriptions. No tool indicates whether it is idempotent, read-only, or has side effects beyond the Risk metadata. Descriptions are terse (10-30 words) and do not explain WHEN to use each tool or what happens on failure.
Sends a goal to a ROS2 action server and streams feedback and results
Retrieves the latest message published on a ROS2 topic
Calls a ROS2 service with the provided arguments and returns the response
Output schemas completely undocumented across all tools. LLMs cannot plan downstream operations, extract identifiers for chaining, or understand result structure.
Parameter 'arguments' (service_call_tool) and 'goal' (action_call_tool) typed as generic 'object' with no field documentation. LLM cannot determine required fields, types, or constraints for ROS2 service/action goal structures.
Descriptions are under 30 words each, lacking WHEN-to-use guidance, action consequences, or prerequisites. Insufficient for LLM tool selection when multiple ROS2 interaction patterns exist (topics vs services vs actions).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 40 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 31 | - | v1 |
No error handling guidance or recovery paths. Tool definitions do not describe what errors are retryable, user-fixable, or fatal. LLM receives no actionable error messages.
action_call_tool claims to 'stream feedback and results' but MCP protocol integration for streaming is not documented. Unclear how multi-message feedback is returned (multiple response objects, server-sent events, or single accumulated response).
No parameter constraints or enums. topic_name, service_name, action_name are free-form strings. No guidance on naming conventions (e.g. must start with /, no spaces). LLM may pass invalid ROS2 identifiers.
Tool annotations (readOnlyHint, destructiveHint, idempotentHint per MCP 2026-07-28) are absent. Risk metadata exists (READ_ONLY, WRITE) but not exposed as standard MCP tool annotations.