An MCP server implementation for BBC micro:bit that exposes tools to control the LED matrix, read sensors, and interact with the device via the Model Context Protocol
The server has 3 tools with reasonable naming (verb-based: led_set, read_temperature, show_number) and complete input schemas. However, descriptions are very brief (under 50 chars for most) and lack the depth needed to guide LLM decision-making. Parameter descriptions exist but are minimal. No output schema documentation is visible. Error handling and recovery guidance are absent from the code. The tool definitions are explicitly registered in mcp.ts via the `tool()` function with proper McpToolDefinition structure, so scores are not capped at 50 for inference.
Turn a pixel on the 5×5 LED matrix on or off
Read the temperature from the micro:bit's built-in sensor
Show a number on the 5 x 5 LED matrix
Tool descriptions are too brief (<50 chars) and lack context for LLM selection. 'Turn a pixel on the 5×5 LED matrix on or off' does not explain when to use led_set vs show_number, prerequisites, or return behavior.
No documented output schema. Tool handlers return 'string | number | boolean' but callers have no formal schema describing what fields/structure to expect. Responses are unstructured.
No error handling or recovery guidance. If a tool fails (e.g., micro:bit disconnected, invalid coordinates), there is no mechanism to inform the LLM whether to retry, ask the user, or give up.
Parameter descriptions are minimal and lack constraint details. 'Column (0-4)' is stated but should include format guidance and what happens if out-of-range values are passed.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 64 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 38 | 2025-03-26+ | v1 |
led_set and show_number perform state modifications but descriptions do not explicitly state 'this operation modifies the micro:bit LED matrix' or indicate side effects.