MCP server for ROS 2 robot manipulation with assembly/disassembly task orchestration, supporting both simulation and real robot modes with state management and checkpoint gating
16 tools with schemas present but significant quality gaps. Most descriptions are adequate (50-150 chars) but lack LLM-optimized guidance on WHEN to use each tool or dependencies between them. Parameter descriptions exist but are often minimal. No tool annotations (readOnlyHint/destructiveHint). Error handling is absent, tools return success/failure with no recovery guidance. Naming is verb-forward (move_*, control_*, capture_*, set_*, commit_*, signal_*, verify_*, get_*, write_*, clear_*) but some names are ambiguous (e.g., 'signal_phase_complete' vs 'signal_verify_results', both signal completion but for different purposes). No output schemas documented. Tools lack composition guidance, unclear which tools must be called in sequence or which parameters depend on prior tool results.
Capture image from robot camera
Clear all primitive execution state
Commit an object as successfully assembled/disassembled with phase gating
Control robot gripper: open, close, or set to specific width
Get current state of an object from state store
Move robot arm to home position
Move robot arm to grasp position for an object
No output schemas documented. Tools return success/failure but LLM cannot predict response structure for chaining. E.g., capture_image returns image data but format/encoding is undocumented.
No tool annotations (readOnlyHint/destructiveHint/idempotentHint). LLM cannot distinguish safe reads from destructive writes. E.g., clear_primitive_state is destructive but unmarked; capture_image is read-only but unmarked.
Parameter descriptions lack dependency hints. E.g., translate_object requires 'current_object_orientation' only in real mode, but this conditional is not documented. Agents cannot infer when to include optional params.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | <=2025-11-25 | v2 |
Move robot arm to safe height for retreat
Rotate grasped object in hand
Set state of an object in state store
Set the current task phase (assembly/disassembly) and phase number for gating
Signal completion of a task phase with phase number validation
Signal verification results after replay
Translate grasped object to target location
Verify assembly state and order correctness
Write assembly sequence results to persistent storage
Ambiguous tool names create confusion. 'signal_phase_complete' and 'signal_verify_results' both signal completion but serve different purposes. Names do not clearly distinguish intent.
No error handling guidance. Tools return success/failure but do not tell LLM what to do on failure (retry, ask user, abort). E.g., move_to_grasp may fail if object not found, but recovery path is undocumented.