MCP server for controlling Arduino-based robot (Chotu) with hardware components including LEDs, motors, servos, relays, and sensors
ChotuRoboServer has 8 tools with basic schemas and descriptions, but significant quality gaps. Tool names lack action verbs (chotuBlinkEyes, chotuBuzzSound use camelCase instead of verb_noun convention). Descriptions are present but minimal (10-50 chars), below the 50-200 char baseline for LLM optimization. Parameters have type definitions (number, boolean) but lack detailed constraints, ranges, or format guidance. No output schemas documented. Error handling is absent, tools return generic text responses without recovery guidance. No parameter validation, no enum constraints for state parameters, no idempotent hints despite write operations. Prompts are defined but lack descriptions. Overall structure is functional but falls short of production-grade tool design.
Blinks the eyes LED of Chotu robot for a specified duration
Activates the buzzer on Chotu robot for a specified duration
Turns the fan on or off
Moves the servo to a specified angle
Reads the distance detected by the ultrasonic sensor
Reads the current temperature from the temperature sensor
Starts the motor at a specified speed for 5 seconds
Tool names do not follow verb_noun convention. 'chotuBlinkEyes' and 'chotuBuzzSound' use camelCase with domain prefix instead of action verbs (blink_eyes, buzz_sound). LLMs rely on verb-first naming to infer intent.
Descriptions are too brief (10-50 chars, below 50-char minimum). 'Blinks the eyes LED of Chotu robot for a specified duration' lacks context on when to use, prerequisites, or side effects. No guidance on idempotency or retry safety for write operations.
No output schemas documented. Tools return generic text responses (e.g., 'Motor running at speed 120.') without structured fields. LLMs cannot extract data for downstream tool chaining or validate response structure.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 38 | 2026-07-28+ | v2 |
Opens or closes the relay switch
No error handling or recovery guidance. Tools lack validation, timeout handling, and actionable error messages. If hardware fails or parameters are invalid, LLM receives no guidance on retry strategy or alternatives.
Boolean parameters (controlFan, toggleRelay) lack enum constraints or clear semantics. 'state: true' is ambiguous, does true mean ON or OFF? Descriptions say 'True to turn fan on' but LLMs often invert boolean logic. Use explicit enums (on|off) instead.