Rachio MCP
MCP server for Rachio sprinkler controllers — schedules, zones, and live watering control
Connector by rwestergren · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/rwestergren-rachio-mcp
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 12 read · 11 write · 1 delete
- Secrets
- 1 (API keys, tokens or passwords)
- Install scripts
- Not scanned yet
- Runs as
- Python package
Tools by what they do 24
Read from the source code; the running server may list different tools.
Read 12 · Look things up without changing anything.
get_active_alertsget_calendarget_deviceget_run_historyget_scheduleget_schedule_runsget_weatherget_zonelist_deviceslist_scheduleslist_zonespreview_schedule
Write 11 · Create, change, send or run things.
copy_schedulecreate_schedulepause_wateringresume_wateringrun_scheduleset_rain_delayskip_current_zoneskip_schedulestart_zonesstop_wateringupdate_schedule
Delete 1 · Delete, drop, revoke or wipe things.
delete_schedule
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
RACHIO_ACCESS_TOKEN
Tools (24)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
copy_scheduleDuplicate an existing schedule. Returns the new Schedule. Useful for creating seasonal variants from an existing template — copy, then update_schedule to rename. Args: schedule_id: Schedule UUID to copy.
create_scheduleCreate a new schedule. Persists to the Rachio backend. Strongly recommended: call ``preview_schedule`` with the same arguments first and review the returned ``summary`` before calling this. Every argument has the same meaning as in preview_schedule; see that tool's docstring for field details. Args: name: Schedule display name. zones: List of zone entries; see preview_schedule for shape. schedule_type: FIXED, FLEX_MONTHLY, or FLEX_DAILY. enabled: Whether the schedule starts enabled (default true). start_time: Daily start time HH:MM. start_sun: "SUNRISE" or "SUNSET". …
delete_schedulecan change or delete dataPermanently delete a schedule. This cannot be undone. Args: schedule_id: Schedule UUID to delete.
get_active_alertsread-onlyReturn unresolved alerts for a device or a specific zone. Alerts include things like low flow, high current, freeze skip, rain skip, hardware faults. Exactly one of device_id or zone_id must be supplied. Args: device_id: Controller UUID to query alerts for. zone_id: Zone UUID to query alerts for.
get_calendarread-onlyReturn scheduled runs and skip events for a device in a date range. Useful for 'what's going to water this week?' or 'what did Rachio actually run last weekend?'. The response includes both ``runs`` (with per-zone durations and start times) and ``skips`` (climate- skip, rain-delay, manual skips). Args: device_id: Controller UUID. start: Start date, ISO YYYY-MM-DD (default: today). end: End date, ISO YYYY-MM-DD (default: today + 14 days).
get_deviceread-onlyGet full details + live state for a single device. Combines the static device info (model, serial, firmware, linked sensors, USDA hardiness zone, Koppen climate code, etc.) with live state (current zone run, standby, rain delay status). Linked sensors and virtual weather stations don't have a live-state record, so the ``state`` field will be ``null`` for those. Args: device_id: Device UUID from list_devices.
get_run_historyread-onlyReturn recent/past watering history for a controller. This is the best first tool for questions like "what ran today?", "when did this controller water recently?", or "did anything skip?". The response includes controller-observed ``actual_zone_runs`` plus Rachio ``calendar_runs``/``skips`` for calendar context. Calendar events may not include every completed scheduled run; observed telemetry is the source of truth for what actually watered and is limited to the latest run per zone. For schedule-specific audit trails, use ``get_schedule_runs`` after discovering a schedule id. Args: devic…
get_scheduleread-onlyGet a single schedule plus the locations/devices it runs on. Returns ``schedule`` (the full Schedule proto — criteria, restriction criteria, zone list, runtime flags, enabled state, summary) plus ``locations_and_devices`` (which property and controllers it spans). Args: schedule_id: Schedule UUID from list_schedules.
get_schedule_runsread-onlyReturn past runs + skips for a schedule in a date range. Useful for auditing 'did my Summer Lawn actually water last week?'. Args: schedule_id: Schedule UUID. start: Start date ISO YYYY-MM-DD (default: today - 30 days). end: End date ISO YYYY-MM-DD (default: today).
get_weatherread-onlyReturn observed + forecast weather readings for a location. Each reading includes temperature range, precipitation (observed and probability of), humidity, wind, and ET (evapotranspiration). Used by Rachio's climate-skip logic. Args: location_id: Location UUID (from a device's ``location_id`` field). start: Start date, ISO YYYY-MM-DD (default: today - 3 days). end: End date, ISO YYYY-MM-DD (default: today + 7 days).
get_zoneread-onlyGet full zone detail + live state. Returns a single zone's agronomic configuration (soil, nozzle, crop/plant, root depth, efficiency, etc.) and any live state. Args: zone_id: Zone UUID from list_zones. force_imperial: If true, units are returned in imperial (inches, sqft). If false, metric is used.
list_devicesread-onlyList all Rachio devices on the account. Includes sprinkler controllers (type = CONTROLLER_GEN1/2/3 or CONTROLLER_VIRTUAL), linked sensors (SENSOR_LINKED, e.g. rain/flow sensors wired into a controller), wireless flow sensors (WIRELESS_FLOW_SENSOR), and virtual weather stations (WEATHER_STATION_VIRTUAL). Filter by ``type`` client-side if you only want the irrigation controllers. Returns a JSON object with ``devices`` — a list of device summaries including ``id``, ``type``, ``name``, ``location_id``, and ``geo_point``. Use ``get_device`` for full details.
list_schedulesread-onlyList schedules matching exactly one filter. ``device_id``: all schedules on a controller. ``location_id``: all schedules at a property (across devices). ``zone_id``: all schedules that include a given zone. ``schedule_id``: fetch a single schedule by id (1-element result). Exactly one argument must be supplied.
list_zonesread-onlyList all zones configured on a controller. Each zone summary includes ``zone_detail`` (soil type, nozzle type, crop/plant, available water, root depth, slope, sun exposure, area, enabled flag, zone number) and ``zone_state`` (live state if any). Args: device_id: Controller UUID (must be a CONTROLLER_GEN* device). include_extra: Ask the server to populate extra diagnostic fields. include_moisture: Include per-zone moisture data.
pause_wateringPause the currently-running zone for ``seconds``. Use resume_watering to continue before the pause expires; otherwise the run resumes automatically after ``seconds`` elapse. Args: device_id: Controller UUID. seconds: How long to pause (1 to 3600).
Show 9 more tools
preview_scheduleread-onlyServer-side dry-run of create_schedule. Does NOT persist anything. Returns the same Schedule that create_schedule would produce, including the server-generated human-readable ``summary`` like 'Every Monday and Thursday at 5:00 AM'. Always call this first and verify the summary + zone breakdown before calling create_schedule. Args: name: Schedule display name, e.g. "Summer Lawn". zones: List of zone entries. Each must be a dict with keys: ``device_id`` (str), ``zone_id`` (str), ``watering_time`` (int seconds), optionally ``order_id`` (int, defaults to list posi…
resume_wateringResume a paused zone run. Args: device_id: Controller UUID.
run_scheduleStart an immediate run of the schedule right now. Returns the list of device_ids the run was dispatched to. Args: schedule_id: Schedule UUID to run.
set_rain_delaySet a rain-delay expiration for the device. The device will not run any schedules until the given time. Pass an ISO-8601 datetime (``2026-05-01T00:00:00Z``) or ``1970-01-01T00:00:00Z`` to cancel an existing delay. Args: device_id: Controller UUID. expiration: ISO-8601 datetime when the delay expires.
skip_current_zoneSkip to the next zone in the currently-running schedule. Does nothing if no schedule is running. Args: device_id: Controller UUID.
skip_scheduleToggle the skip-next-run flag on a schedule. ``disabled=true`` skips the schedule's next run; ``disabled=false`` re-arms it. Applies only to the next occurrence. Args: schedule_id: Schedule UUID. disabled: True to skip next run, False to re-enable it.
start_zonesStart a manual run of one or more zones in sequence. ``zones`` is a list of ``{"zone_number": <int>, "duration": <seconds>}``. ``zone_number`` is the 1-based hardware slot visible on the controller (not the zone UUID). Find it via ``list_zones`` -> each entry's ``zone_detail.zone_number``. Args: device_id: Controller UUID. zones: List of ``{zone_number, duration}`` dicts. cycle_soak: Apply cycle-and-soak to the run. cycle_duration_seconds: Cycle length when cycle_soak is true. soak_duration_seconds: Soak gap when cycle_soak is true.
stop_wateringStop all watering currently in progress on the device. If nothing is running, this is a no-op. Args: device_id: Controller UUID.
update_schedulePartial-merge update of an existing schedule. Only the fields you pass are changed. The current schedule is read first and your changes are overlaid onto its existing timing, restrictions, and zones, then sent as a single update — so omitting an argument leaves that aspect untouched. Field meanings match create_schedule / preview_schedule. Recommended: call get_schedule first to review current values. Args: schedule_id: Schedule UUID to update. name: New display name. enabled: New enabled state. schedule_type: FIXED, FLEX_MONTHLY, or FLEX_DAILY. start_time: Daily start t…
Signals
- Stars
- 7
- Forks
- 0
- Open issues
- 1
- Weekly downloads
- 64
- Last commit
- Aug 12, 2026 (2 months ago)
- Last release
- Aug 12, 2026 (2 months ago)
- Last package publish
- Aug 12, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.rwestergren/rachio-mcp- Version
- 0.1.4
- Auth
- API key
- Packages
- pypi rachio-mcp
- License
- MIT
- Repository
- github.com/rwestergren/rachio-mcp
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
More from rwestergren
- 0.662score
Cronometer API MCP
rwestergren
MCP server for Cronometer nutrition tracking — food logs, diary, macros, fasting
ConnectorAFreshness: ALocal★ 65↓ 491/wkClaude Code +5 - 0.546score
Inbody API MCP
rwestergren
MCP server for InBody body-composition data — scans, body fat, muscle mass, body water
ConnectorCFreshness: CLocalRead-only★ 14↓ 156/wkClaude Code +5
Cite this page
Rachio MCP. Agent Mart. https://agentmart.dev/connectors/rwestergren-rachio-mcp (last updated 2026-10-24)