FastMCP 3.2.0 MCP server and webapp for Dreame robot vacuums via DreameHome cloud
Server has 5 tools with significant definition gaps. dreame_tool is a problematic portmanteau combining 8 operations (status, map, start_clean, stop, pause, go_home, find_robot, battery) into one tool, violates single-responsibility principle. Descriptions exist but are generic (e.g., dreame_tool: 194 chars, dreame_help: 186 chars). Input schemas present but lack proper enum constraints for operation parameter. dreame_agentic_workflow references deprecated sampling pattern. show_dreame_status_app has minimal schema (empty input). No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels. Error handling and recovery guidance absent. Output schemas not documented.
LLM-driven agentic workflow for multi-step Dreame robot goals. Plans and executes via sampling: get_status, get_map, start_clean, stop, go_home, find_robot.
Multi-level help for Dreame D20 Pro Plus MCP. Returns connection status, mode, device ID, and help categories (status, map, control, connection, agentic).
Gracefully disconnect the Dreame client and stop the MCP server.
Portmanteau tool for Dreame D20 Pro Plus operations: status, map, start_clean, stop, pause, go_home, find_robot, battery. Supports Local (IP/Token) or Cloud (User/Password) connection modes.
Show live Dreame robot status as a rich Prefab card (status, battery, state, charging, fan speed) with plain-text fallback.
dreame_tool violates single-responsibility principle: combines 8 distinct operations (status, map, start_clean, stop, pause, go_home, find_robot, battery) into one tool via string enum. Should split into separate tools (get_status, get_map, start_cleaning, stop_cleaning, pause_cleaning, go_home, find_robot, get_battery) so agent can compose them independently.
operation parameter in dreame_tool lacks enum constraint in schema. Input shows string type but no enum values declared. LLM will hallucinate invalid operations. Must add enum: ["status", "map", "start_clean", "stop", "pause", "go_home", "find_robot", "battery"].
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. dreame_tool marked WRITE, dreame_shutdown marked IRREVERSIBLE, show_dreame_status_app marked READ_ONLY. Must add tool annotations to schema for protocol compliance.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2025-06-18+ | v2 |
dreame_agentic_workflow references deprecated sampling pattern ('Plans and executes via sampling'). Current MCP spec (2026-07-28) removed server-initiated sampling. Must integrate directly with LLM provider API or remove sampling dependency.
No output schemas documented for any tool. LLM cannot predict response structure or plan downstream calls. Must document return types (e.g., dreame_tool returns {status: string, battery: int, ...}, dreame_help returns {help_text: string, categories: [...]}).