Modern SwitchBot MCP server with stdio and Streamable HTTP transports
SwitchBot MCP demonstrates solid definition quality with consistent naming, documented schemas, and tool annotations. All 7 tools follow verb_noun conventions and include descriptions. Input schemas are well-formed with Zod definitions visible in src/mcp/tools/register-tools.ts. Output schemas are defined and typed. However, parameter descriptions lack actionable detail (e.g., no guidance on what values deviceId accepts, no min/max constraints), and error handling paths are not evident from tool definitions. Tool annotations are properly implemented (readOnlyHint, destructiveHint, idempotentHint). The 'switchbot_list_devices_raw' tool is questionable design (duplicate of list_devices with 'raw' suffix indicating API leakage) and violates single-responsibility principle.
Execute a manual SwitchBot scene
Get status for a specific SwitchBot device
List SwitchBot devices
List SwitchBot devices with raw upstream fields (advanced/unstable)
List manual scenes in SwitchBot
Send a raw command to a SwitchBot device
Duplicate tool design: switchbot_list_devices and switchbot_list_devices_raw violate single-responsibility principle. 'raw' suffix indicates internal API leakage. Should provide one canonical list_devices tool with optional verbosity control or remove raw variant entirely.
Parameter descriptions lack actionable constraints. 'deviceId' description says 'The device ID' but does not explain format (UUID? alphanumeric? length?). minLength: 1 constraint is visible in schema but not mentioned in description text. LLM cannot infer valid format from name alone.
Parameter 'command' in switchbot_send_command has no description of what commands are valid or how to discover them. Description is 'The command to send', too generic. LLM cannot construct valid commands without discovery tool or enumeration.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 67 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 33 | - | v1 |
Turn a SwitchBot device on or off
No pagination support on list tools. switchbot_list_devices and switchbot_list_scenes return all items without limit, offset, or cursor. If user has hundreds of devices/scenes, response could exhaust context window. Should add limit/offset parameters and return total count.
Error handling not evident from tool definitions. No documentation of what errors can occur (e.g., invalid deviceId, API rate limit, device offline) or recovery guidance. LLM cannot distinguish retryable from fatal failures.
Output schema for switchbot_send_command includes 'parameter' as a string field, but input 'parameter' is optional string with no description of format. Unclear how parameter maps between request and response or what values are valid.