Claude Code and MCP tools

The whole dashboard was built and is maintained through conversation with Claude Code — no hand-editing of HTML or plugin internals required, and none by me. None of this is needed to run the plugin: the pages need Indigo and a browser, nothing else. It is how you extend it, and how you get help when something is not working. If you have never done any of this, start with Start with nothing but Claude, which walks a complete beginner through it.

Claude Code is included in every paid Claude plan (Pro is the cheapest) and in Anthropic Console accounts with pre-paid credits. It is not on the free plan. It shares the plan’s usage limits.

What each part adds

You have What Claude can do for the dashboards
Claude Code alone Download and install the plugin, install ffmpeg, go2rtc and Tailscale, read and edit the pages, read the plugin’s log file, and build any page you can describe. It cannot see Indigo: a device is a number you have to look up and tell it
+ an Indigo MCP server See your devices, variables, action groups and folders by name, read their states and the event log, run actions, restart plugins. “The kitchen light” is enough; it finds the device. Diagnosis becomes a conversation: “why is the garden camera not streaming” and it goes and looks
+ this plugin’s own tools (automatic, v3.12.0+) Run the dashboards’ setup check as data, list and change your rooms and cameras, read the plugin’s log — through the same MCP server, with nothing configured
+ Tailscale Everything above from anywhere, and the dashboards themselves on your phone when you are out

Building on it

To give a flavour of the kind of thing you can ask:

  • “Add a heating page that shows all my thermostat zones with their current temperature and setpoint”
  • “The garden camera is not showing in the grid — check the go2rtc config and see what is wrong”
  • “Add a door control tile to the garage room page that pulses relay device 12345 for 2 seconds when tapped, and shows open or closed using contact sensor 67890”
  • “Create a room page for the conservatory showing its lights, the patio contact sensor, and the camera on 192.168.1.55”
  • “Install ffmpeg and go2rtc on my Mac so the camera grid works”
  • “The weather card on the hub is not updating — have a look at the event log and tell me what is going on”

Claude Code can read the plugin source, check the Indigo event log through whichever Indigo MCP server you run, edit pages, restart the plugin and verify the result — all in one conversation. Most changes that would otherwise mean half an hour of hunting through source files take a couple of minutes.

Which MCP server? Any of the Indigo MCP servers gives Claude live access to your server: Claude Bridge (the author’s own), mlamoure’s Indigo MCP Server, or Simon’s MCP Lite. Each README states its own Indigo and Mac requirements. Loading Simon’s Indigo skills at the start of a session gives Claude the Indigo SDK reference and worked examples in a form it can use, and saves a good deal of time and tokens.

The plugin’s own tools

From v3.12.0 the bundle ships Contents/Resources/mcp-manifest.json, a plugin-provided tool manifest. An Indigo MCP server that reads those — mlamoure’s Indigo MCP Server from v2026.8.1, Claude Bridge from v2.26.0 — finds it on its own and lists these tools to Claude, with no configuration on either side:

Tool What it does
dashboards_get_status Version, hub URL, where the configuration comes from, room folders and how many exist, the camera pipeline, the history backend, which companion scripts are present, and the feature flags
dashboards_run_setup_check The Test Dashboards Setup sweep, returned as data: every check with its verdict and detail
dashboards_list_room_folders The folders that become rooms, whether they are the built-in defaults, every folder Indigo has, and any configured name that does not exist
dashboards_set_room_folders Replace the room folders. Unknown names are refused and the real ones listed back. Live at once
dashboards_list_cameras The saved cameras, the hub strip, whether credentials are set and the streams are running, and whether a restart is pending
dashboards_set_camera Add a camera, or change the one with that host. Says whether a restart is needed
dashboards_remove_camera Remove a camera, and take it out of the hub strip
dashboards_read_log The last lines of the plugin’s own log, optionally filtered to a phrase

So “set my dashboard rooms to Kitchen, Hall and Lounge” or “why is the garden camera not streaming” is a conversation with no source files in it.

The writes are refused if the MCP server’s “allow plugin-provided tools to make changes” setting is off, and every write goes through the same validation as the Settings page. Reads never return a credential. Without an MCP server the manifest is inert data and nothing about the plugin changes.

A note for people writing their own provider. The manifest follows the provider-manifest v1 contract that mlamoure published with his server. The plugin answers a hidden mcp_tool_invoke action with a JSON-string envelope, imports its tool module lazily so a fault there cannot stop the plugin starting, and broadcasts mcp_tools_updated on startup so a server can rescan. The implementation is Server Plugin/mcp_tools.py; the tests are tests/test_mcp_manifest.py and tests/test_mcp_tools.py.


Back to top

© 2026 CliveS · MIT licence · Built with Claude Code. The pictures are a real house, captured through a proxy that rewrites every address on the way.

This site uses Just the Docs, a documentation theme for Jekyll.