Labsco
MCP SERVER

OPenSprinkler MCP Server

by marcinn2

Run an OpenSprinkler controller in words — start and stop stations, hold everything for a rain delay, and read the watering history back.

IoT, Smart Home & Embedded Hardware
Summary
The sprinklers become something you can ask about and adjust in one sentence.

Live control, the stored programs and the history sit on the same surface, so "it rained last night, hold everything for a day" and "did zone three actually run on Tuesday" are answerable in the same place.

What it is

A control surface for one OpenSprinkler irrigation controller. Fourteen tools cover the live controls, the watering programs stored on the device, and the logs. It manages a single controller at a time by design.

What you get
  • Controller status — device time, whether it is enabled, and any rain delay in force — and every station with its current state (`get_controller_status`, `get_stations`)
  • A station started for a set duration, one stopped, or all of them stopped at once (`run_station`, `stop_station`, `stop_all_stations`)
  • A rain delay set in hours, or cleared by setting it to zero (`set_rain_delay`)
  • The controller enabled, disabled or rebooted (`enable_controller`, `reboot_controller`)
  • Watering history for a date range (`view_logs`)
  • The stored watering programs listed, one read in full, and programs added or deleted (`get_programs`, `get_program`, `add_program`, `delete_program`)
  • Controller options and settings (`get_options`)
Requirements

One OpenSprinkler controller reachable by hostname or IP, set through `OPEN_SPRINKLER_HOST`, with the controller password supplied as its MD5 hash in `OPEN_SPRINKLER_PASSWORD` — the plain text will not work. It launches over stdio for a desktop client, or with `--sse` as a network service on `/mcp` at port 3000, where `MCP_AUTH_TOKEN` turns on bearer authentication. HTTPS to the controller needs a reverse proxy in front of it, because the OpenSprinkler firmware does not speak TLS itself. A Docker image and Kubernetes manifests ship with the repository.