Local-first MCP server for Shelly smart-home devices (Gen1-Gen4): control, energy, automation.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
mcp-name: io.github.Buggy1111/shelly-mcp
MCP server for the entire Shelly smart-home ecosystem β read, control, and automate Shelly devices of every generation (Gen1 β Gen4; BLU via its gateway or the generic RPC engine, dedicated BLU tools are on the roadmap) from any MCP client (Claude Desktop, Claude Code, Cursor, β¦). Local-first (zero rate-limit, ~10 ms, full API), with cloud fallback for off-LAN access.
β οΈ Unofficial community project. Not affiliated with, endorsed by, or sponsored by Allterco Robotics / Shelly. "Shelly" is a trademark of its respective owner.
π§ Alpha / in development. See
docs/for the full design.
The only existing Shelly MCP servers are cloud-only and minimal. shelly-mcp unifies Gen1 and Gen2+ behind one tool surface, covers energy monitoring and automation (schedules, scripts, webhooks, KVS), and auto-discovers any device's capabilities β including hardware released after this server was written.
Register in your MCP client:
Auto-discovery (mDNS) finds devices on your local subnet β shelly_discover and you're running. For named devices ("turn off the kitchen"), devices on other subnets, passwords, or the cloud fallback, create ~/.config/shelly-mcp/config.yaml (chmod 600):
Full reference: config.example.yaml and docs/04-CONFIG-AND-DEPLOY.md.
None, beyond the calls to your own Shelly devices (on your LAN) and β only if you enable it β your own Shelly Cloud account. No telemetry, no phone-home.
| Local | Cloud | |
|---|---|---|
| Discovery, status, control | β | β οΈ control + status only |
| Energy live + history | β | β οΈ live only |
| Automation (schedules/scripts/webhooks/KVS) | β | β |
Read (safe): shelly_version Β· shelly_discover Β· shelly_list_devices Β· shelly_get_info Β· shelly_get_status (normalized) Β· shelly_get_config (credentials masked) Β· shelly_list_components Β· shelly_list_methods
Control (audited): shelly_switch_set Β· shelly_switch_toggle Β· shelly_light_set (RGBW/CCT/white) Β· shelly_cover_move
Energy: shelly_energy_live Β· shelly_energy_history
Generic engine (total coverage): shelly_rpc (read-only) Β· shelly_rpc_write (mutations, confirm:true + data-loss double-gate)
System / schedules (gated): shelly_system_reboot|update|set_auth Β· shelly_schedule_list|create|update|delete
Automation (Gen2+ local-only): shelly_kvs_* (key-value store) Β· shelly_webhook_* (eventβHTTP) Β· shelly_script_* (on-device JS β list/get_code/create/put_code/start/stop/eval/delete, chunked upload) Β· shelly_virtual_* (virtual components). Deletes + arbitrary-code paths (script_put_code/eval) are confirm:true-gated.
Scenes (deterministic, named): shelly_scene_list|get|run|create|delete β define a multi-device routine once and run it by name (shelly_scene_run "film"), identical every time and schedulable from any client. Stored in ~/.config/shelly-mcp/scenes.yaml (see scenes.example.yaml); scenes and schedules accept only plain control methods (Switch/Light/RGB(W)/CCT/Cover) β never Script.Eval, SetAuth, or anything destructive (ADR-007, docs/06-SCENES.md).
Resources: shelly://devices, shelly://device/{name}/status β Prompts: shelly_evening_scene, shelly_energy_report, shelly_diagnose
Safety: reads are
readOnlyHint; every mutation is audit-logged; the generic write tool and destructive system tools require explicitconfirm:true, and irreversible methods (factory reset, wipe-all) need a secondi_understand_data_lossgate β so even a hijacked LLM can't silently destroy a device.
shelly_discover, your router's client list, or the Shelly app β device β Settings β Device information), and that the machine running the server is on the same LAN. In WSL/containers, mDNS discovery usually doesn't work β configure devices by ip in the config file instead (that path needs no mDNS).password: under the device in the config (or SHELLY_PW_<name> env var).chmod 600 (deliberate, fail-closed).Full design in docs/ (indexed): overview, architecture (+ADRs), tool surface, security, scenes, config/deploy, build plan, project log, roadmap, the launch runbook, and the complete Shelly API catalog.
MIT β see LICENSE.
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/shelly-smart-home)<a href="https://allmcps.com/mcp/shelly-smart-home"><img src="https://allmcps.com/api/badge/shelly-smart-home?style=directory" alt="Shelly Smart Home on AllMCPs" /></a>