MCP server that interfaces with Raspberry Pi Pico sensor devices via serial port to read CO2 levels and manage device connectivity (WiFi, MQTT)
All 6 tools lack input parameter schemas entirely, critical failure. Descriptions are present but generic (50-100 chars), lacking WHEN/WHY context. No parameter descriptions exist. No output schemas documented. Tools accept empty input objects {}, making them non-composable. No error handling guidance. This server fails basic definition quality standards.
Get device information including device ID, firmware version, boot time, uptime, and battery level
Get network connectivity status including WiFi connection state, IP address, and MQTT broker information
Get current CO2 sensor data from the device. Attempts to read from serial port if available, falls back to simulated data with timeout
Publish current CO2 sensor data to MQTT broker
Initiate MQTT reconnection process. Requires WiFi to be connected
Initiate WiFi reconnection process. Simulates disconnection and reconnection with new IP assignment
All 6 tools have empty input schemas (Input: {}). No parameters are defined, typed, or described. Per HARD SCORING RULE, schema score must be 0 for tools with no input schema.
No output schemas documented. LLMs cannot predict what fields to expect from tool responses (e.g., does get_device_info return uptime in seconds or milliseconds?). Breaks downstream tool chaining.
Descriptions are generic and lack WHEN/WHY context. 'Get device information...' (50 chars) does not explain when to call this vs other tools or what the LLM should do with the result. Baseline for A+ tools: 50-200 chars with actionable context.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 36 | <=2025-11-25 | v2 |
No error handling guidance. Code catches errors (e.g., serial port failures, timeouts) but tool definitions do not explain recovery steps. LLMs receive raw errors with no actionable next steps.
Destructive/reversible tools (publish_to_mqtt, reconnect_wifi, reconnect_mqtt) lack confirmation or dry-run support. No tool annotations (destructiveHint) to warn LLMs of side effects.