OpenSprinkler MCP Server
MCP server for managing OpenSprinkler controllers via Claude Desktop.
Available Tools
| Tool | Description | |------|-------------| | get_controller_status | Get controller status (device time, enabled state, rain delay) | | get_stations | Get all stations with their current status | | run_station | Start a station for a specified duration | | stop_station | Stop a running station | | stop_all_stations | Stop all running stations immediately | | set_rain_delay | Set rain delay in hours (0 to clear) | | enable_controller | Enable or disable the controller | | reboot_controller | Reboot the OpenSprinkler controller | | get_programs | Get all watering programs | | get_options | Get controller options and settings |
Configuration
Environment Variables
| Variable | Description | Default | |----------|-------------|---------| | OPEN_SPRINKLER_HOST | IP address of OpenSprinkler | localhost | | OPEN_SPRINKLER_PASSWORD | Password (plain text or MD5 hash) | (empty) | | OPEN_SPRINKLER_PORT | HTTP port | 80 |
---
Docker
Build Image
docker build -t opensprinkler-mcp .
Run Manually (Test)
docker run -i --rm ^
-e OPEN_SPRINKLER_HOST=192.168.1.100 ^
-e OPEN_SPRINKLER_PASSWORD=your_password ^
opensprinkler-mcp
Windows (PowerShell): ``powershell docker run -i --rm -e OPEN_SPRINKLER_HOST=192.168.1.100 -e OPEN_SPRINKLER_PASSWORD=your_password opensprinkler-mcp ```
Linux/Mac: ``bash docker run -i --rm \ -e OPEN_SPRINKLER_HOST=192.168.1.100 \ -e OPEN_SPRINKLER_PASSWORD=your_password \ opensprinkler-mcp ``
Auto-Start Options
Option 1: Docker Compose (Recommended)
Create docker-compose.yml:
version: '3.8'
services:
opensprinkler-mcp:
image: opensprinkler-mcp
container_name: opensprinkler-mcp
restart: unless-stopped
environment:
- OPEN_SPRINKLER_HOST=192.168.1.100
- OPEN_SPRINKLER_PASSWORD=your_password
Start: ``bash docker compose up -d ``
Option 2: Docker Run with Restart
docker run -d --name opensprinkler-mcp ^
--restart unless-stopped ^
-e OPEN_SPRINKLER_HOST=192.168.1.100 ^
-e OPEN_SPRINKLER_PASSWORD=your_password ^
opensprinkler-mcp
---
Claude Desktop Configuration
Add to your claude_desktop_config.json:
Windows
%APPDATA%\Claude\claude_desktop_config.json
macOS
~/Library/Application Support/Claude/claude_desktop_config.json
Linux
~/.config/Claude/claude_desktop_config.json
Docker (Recommended)
{
"mcpServers": {
"opensprinkler": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"OPEN_SPRINKLER_HOST=192.168.1.100",
"-e",
"OPEN_SPRINKLER_PASSWORD=your_password",
"opensprinkler-mcp"
]
}
}
}
Pre-built Container (with auto-restart)
{
"mcpServers": {
"opensprinkler": {
"command": "docker",
"args": [
"run",
"--rm",
"-e",
"OPEN_SPRINKLER_HOST=192.168.1.100",
"-e",
"OPEN_SPRINKLER_PASSWORD=your_password",
"opensprinkler-mcp"
]
}
}
}
---
Examples
Get all stations status
What stations are currently running?
Start a station
Run station 0 for 10 minutes
Set rain delay
Set 24 hour rain delay
---
Password
The OpenSprinkler API accepts both plain text passwords and MD5 hashes. You can generate an MD5 hash online or use the plain text password directly.
---
Troubleshooting
"Server disconnected" error
This usually means the MCP server is not running or not accessible. Try:
- Test Docker manually:
docker run -i --rm ^
-e OPEN_SPRINKLER_HOST=YOUR_IP ^
-e OPEN_SPRINKLER_PASSWORD=YOUR_PASSWORD ^
opensprinkler-mcp
If it runs without errors, press Ctrl+C to stop.
- Check your IP address - make sure OpenSprinkler is reachable from your computer.
- Restart Claude Desktop after changing configuration.












