OpenSprinkler MCP server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HOST | No | Interface to bind in SSE mode. Use '127.0.0.1' to accept only local connections | 0.0.0.0 |
| PORT | No | HTTP port for SSE mode | 3000 |
| MCP_AUTH_TOKEN | No | Bearer token required on all HTTP requests (optional) | |
| MCP_ALLOWED_HOSTS | No | Comma-separated Host header allowlist. When set, other hosts get 403 - this blocks DNS-rebinding attacks | |
| OPEN_SPRINKLER_TLS | No | Set to 'true' to use HTTPS | false |
| MCP_ALLOWED_ORIGINS | No | Comma-separated Origin allowlist for browser clients. Requests with no Origin are unaffected | |
| OPEN_SPRINKLER_HOST | No | Hostname or IP address of OpenSprinkler | localhost |
| OPEN_SPRINKLER_PORT | No | Port number | 80 |
| OPEN_SPRINKLER_PASSWORD | No | MD5 hash of the controller password | |
| OPEN_SPRINKLER_TIMEOUT_MS | No | Abort a controller request after this many milliseconds | 10000 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_controller_statusA | Get OpenSprinkler controller status including device time, enabled state, rain delay status |
| get_stationsA | Get all stations with their current status (running, enabled, names, seconds remaining) |
| run_stationA | Start a station for a specified duration |
| stop_stationA | Stop a running station |
| stop_all_stationsA | Stop all running stations immediately |
| get_rain_delayA | Get the current rain delay status including remaining hours and end date |
| set_rain_delayA | Set rain delay in hours (0 to clear) |
| enable_controllerA | Enable or disable the controller |
| reboot_controllerA | Reboot the OpenSprinkler controller |
| get_programsA | Get all watering programs |
| view_logsA | Get watering history logs for a date range. Dates are interpreted in the controller's local timezone. |
| get_programA | Get full details of a single watering program by ID |
| add_programA | Add a new watering program with weekly or interval scheduling |
| delete_programA | Delete an existing watering program by ID |
| get_optionsC | Get controller options and settings |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 15 tools
Most tools target distinct resources and actions: stations, programs, rain delay, controller status, and logs are clearly separated. The only mild overlap is between get_controller_status and get_options, since both touch controller-level settings, but their descriptions are distinct enough to avoid serious misselection.
The naming largely follows a consistent verb_noun pattern: get_* for reads, plus run_station, stop_station, set_rain_delay, enable_controller, and add/delete_program. The main inconsistency is view_logs instead of get_logs, and stop_all_stations is a slightly expanded variant of stop_station.
Fifteen tools is at the upper end of the ideal range, but each tool covers a meaningful controller operation without redundancy. The count feels appropriate for the scope of an irrigation controller server, and no tools are mere duplicates.
The tool surface covers the core workflows well: station control, rain delay, controller status, logs, and program lookup/creation/deletion. The most notable gap is the lack of an update_program tool, so existing programs cannot be edited directly, though agents could work around this by deleting and re-adding.