switchbot_list_devicesLABSCO SUMMARY
Unusually blunt about its own limits.
The README says v3 has not reached npm or the official MCP Registry yet, that the one-click and npx commands only start working after the first release, that Smithery is not an official channel and has not been revalidated, and that an AI client's confirmation is not an authorization boundary. Tool calls here control physical devices and run scenes — the server speaks plain HTTP, so terminate TLS at a proxy and keep the listener off the public internet.
What it is
An unofficial MCP server for the SwitchBot Open API. It lists your devices, reads their status, switches them on and off, sends device commands and runs scenes — with structured tool output and MCP risk annotations, since these calls move physical hardware.
What you get
- Devices listed and their status read —
switchbot_list_devices,switchbot_get_device_status, plusswitchbot_list_devices_rawwhen you want the raw upstream fields - Power switched and arbitrary device commands sent —
switchbot_set_power,switchbot_send_command - Scenes listed and executed —
switchbot_list_scenes,switchbot_execute_scene - Structured
structuredContentoutput on every tool, MCP risk annotations, and bounded retries on read-only requests - Two transports — stdio, and Streamable HTTP with same-host Origin and Host validation
- Redacted JSONL operational logs
Requirements
A SwitchBot Open API token and secret, required as SWITCHBOT_TOKEN and SWITCHBOT_SECRET — the process fails closed when they are missing. Node.js 24.15+. v3 is not yet on npm or the official MCP Registry, so today you build from source: clone, npm ci --ignore-scripts, npm run build, then run node build/index.js. For HTTP, set MCP_TRANSPORT=http and MCP_SERVER_API_KEY to a high-entropy secret; the endpoint binds MCP_HTTP_HOST (default 127.0.0.1) and MCP_HTTP_PORT (default 8787) at MCP_HTTP_PATH (default /mcp). ISC licensed.
Setup effort
Build from source — git clone https://github.com/genm/switchbot-mcp.git
USE CASES
Finding out what is actually connected
List the devices and read the status of the ones you care about, rather than opening the SwitchBot app.
Turning something off from the conversation
Switch power on a named device without leaving the client.
Running a routine you already built
List the scenes configured in the app and execute the one you want.
Debugging a device that reports oddly
Pull the raw upstream fields to see exactly what SwitchBot returned before the server shaped it.
7 tools
Listed in project docs. Your client may show a different list.
switchbot_get_device_statusswitchbot_set_powerswitchbot_send_commandswitchbot_list_scenesswitchbot_execute_sceneswitchbot_list_devices_rawBEFORE YOU INSTALL
What to know first
Tools you get
7 tools named in the project's documentation.
Requires
- Node.js 24.15+
- SWITCHBOT_TOKEN in your environment
- SWITCHBOT_SECRET in your environment
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
You clone and build this one yourself.
Server setup
git clone https://github.com/genm/switchbot-mcp.git
cd switchbot-mcp
npm ci --ignore-scripts
npm run buildMCP Clients
Any MCP client
{
"mcpServers": {
"switchbot": {
"command": "node",
"args": [
"<YOUR_PATH_TO_BUILD>/index.js"
],
"env": {
"SWITCHBOT_TOKEN": "<YOUR_SWITCHBOT_TOKEN>",
"SWITCHBOT_SECRET": "<YOUR_SWITCHBOT_SECRET>",
"MCP_TRANSPORT": "stdio"
}
}
}
}