Skip to content
Agentmart
Submit a tool

Rachio MCP

MCP server for Rachio sprinkler controllers — schedules, zones, and live watering control

Connector by rwestergren · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)★ 7
Write a review

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.

We use your email only for this newsletter. Privacy

About

MCP server for Rachio sprinkler controllers — schedules, zones, and live watering control

No 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_alerts
  • get_calendar
  • get_device
  • get_run_history
  • get_schedule
  • get_schedule_runs
  • get_weather
  • get_zone
  • list_devices
  • list_schedules
  • list_zones
  • preview_schedule

Write 11 · Create, change, send or run things.

  • copy_schedule
  • create_schedule
  • pause_watering
  • resume_watering
  • run_schedule
  • set_rain_delay
  • skip_current_zone
  • skip_schedule
  • start_zones
  • stop_watering
  • update_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_schedule

    Duplicate 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_schedule

    Create 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 data

    Permanently delete a schedule. This cannot be undone. Args: schedule_id: Schedule UUID to delete.

  • get_active_alertsread-only

    Return 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-only

    Return 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-only

    Get 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-only

    Return 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-only

    Get 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-only

    Return 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-only

    Return 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-only

    Get 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-only

    List 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-only

    List 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-only

    List 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_watering

    Pause 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-only

    Server-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_watering

    Resume a paused zone run. Args: device_id: Controller UUID.

  • run_schedule

    Start 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_delay

    Set 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_zone

    Skip to the next zone in the currently-running schedule. Does nothing if no schedule is running. Args: device_id: Controller UUID.

  • skip_schedule

    Toggle 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_zones

    Start 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_watering

    Stop all watering currently in progress on the device. If nothing is running, this is a no-op. Args: device_id: Controller UUID.

  • update_schedule

    Partial-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
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from rwestergren

Cite this page

Rachio MCP. Agent Mart. https://agentmart.dev/connectors/rwestergren-rachio-mcp (last updated 2026-10-24)