
Rachio Mcp
io.github.rwestergren由 GitHub 账号 rwestergren 发布v0.1.4更新于 Oct 24, 2026
MCP server for Rachio sprinkler controllers — schedules, zones, and live watering control
概览
面向 Rachio 洒水控制器的非官方 MCP 服务器,让助手查看设备、分区和计划,并控制实时浇水。
- 可以做什么
- 通过设备与分区工具列出控制器、传感器和气象站,查看分区配置与实时状态,并获取日历、运行历史、告警和天气等上下文。读取、预览、创建、更新、复制、删除、运行和跳过浇水计划。控制实时浇水:停止、按分区手动启动、设置雨天延迟、跳过、暂停和恢复当前运行。
- 适用场景
- 当需要让助手查看或修改 Rachio 浇水计划、查询即将执行和历史的运行记录,或在控制器上启动和停止分区时使用。适合愿意接受非官方逆向集成、以换取公共 API 所不具备的写入能力的用户。
- 运行要求
- 以 Python 包形式通过 stdio 在本机运行,通常用 uvx 启动或用 uv 安装。需要 Rachio 账户和长期有效的 RACHIO_ACCESS_TOKEN,需先用 rachio-mcp-token 命令生成一次,该命令会提示输入账户邮箱和密码。需要访问 Rachio 云端后端的网络连接。
安装
在 SourceWeft 中
- 打开 控制台中的 Rachio Mcp,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
rachio-mcp
An MCP (Model Context Protocol) server for Rachio sprinkler controllers, built on the reverse-engineered Android-app gRPC API.
The public Rachio API exposes only read-only access to schedules and a handful of single-action endpoints. This server instead talks to the same internal gRPC backend (cloud.rach.io:443) that the official mobile app uses, giving an agent the full set of operations: listing devices and zones, inspecting schedules, creating and previewing new schedules, updating and deleting them, starting and stopping manual zone runs, setting rain delays, and more.
⚠️ Unofficial. This server uses a reverse-engineered API. It works as of Rachio Android v4.21.18 and is not supported by Rachio. The schema can change without notice.
Features
- Devices and zones — list controllers, sensors, and weather stations; inspect zone soil/nozzle/plant configuration and live state
- Schedules — list, read, preview (dry-run), create, update, delete, copy, run, and skip schedules
- Live control — stop watering, run specific zones manually, set rain delays, skip/pause/resume the currently-running zone
- Context — calendar of upcoming runs, recent/past run history, active alerts, observed/forecast weather readings
Quick Start
1. Install uv
2. Mint a long-lived access token
The MCP server itself never sees your Rachio password. Instead you mint a long-lived (~25-year) access token once, and supply only the token to the MCP client.
It will prompt for your Rachio email and password, then print a RACHIO_ACCESS_TOKEN value to paste into your MCP client config. The token remains valid until you change your password or explicitly log out from another device.
Or, if you'd rather have the commands on your PATH permanently, install once:
Then rachio-mcp-token (and rachio-mcp itself) are available as regular commands.
For scripting (e.g. pipe into a password manager):
3. Configure your MCP client
uvx downloads and runs the server on demand — no separate install step required.
OpenCode (opencode.json)
Claude Desktop (claude_desktop_config.json)
If a tool call later returns a "token rejected" error, rerun rachio-mcp-token to mint a fresh one and update the config.
Available Tools
24 tools over stdio transport.
Discovery
Schedule CRUD
Live controller ops
All device_id, zone_id, schedule_id, and location_id parameters are UUIDs obtained from the list_* tools. Dates use YYYY-MM-DD (or MM-DD for annual-recurring schedules); times use HH:MM.
Recommended Workflow for Schedule Changes
list_devices→ pick your controllerlist_zones(device_id=...)→ note each zone's id andzone_numberlist_schedules(device_id=...)andget_schedule(schedule_id=...)→ understand what's already configuredpreview_schedule(...)→ dry-run your proposed schedule. Read the returnedsummarystring and the per-zone breakdowncreate_schedule(...)(same arguments) → commitget_schedule(schedule_id=<new>)→ confirmdelete_schedule(schedule_id=<new>)→ rollback if needed
preview_schedule is safe to call repeatedly — it never writes anything.
To edit an existing schedule instead of recreating it, use update_schedule. It performs a partial merge: read the schedule with get_schedule, then pass only the fields you want to change (name, enabled, timing/criteria, days, or zones/zone_ids_to_remove). Omitted fields are left untouched.
How It Works
This server talks to cloud.rach.io:443 over TLS-protected gRPC, the same backend used by the Rachio Android app. Authentication uses the OAuth 2 password grant against oauth.rach.io/oAuth/token with the Android app's hardcoded client credentials.
The gRPC .proto definitions were recovered by decompiling the Rachio Android APK (v4.21.18) with jadx, extracting the embedded FileDescriptorProto payloads from the generated Java classes, and round-tripping them through protoc to produce clean .proto source. Pre-compiled Python stubs for the 40-odd messages/services used by the 23 MCP tools ship in src/rachio_mcp/proto/.
Regenerate those stubs any time the app's proto surface changes:
The stub generator reads from reverse-engineering/protos/, which is not shipped in the wheel but is kept alongside the source for future updates.
Python API
The MCP server wraps a standalone client you can use directly:
The client reads RACHIO_ACCESS_TOKEN from the environment, derives the user's user_id lazily on first use (via LocationService.ListLocations), and keeps both in memory for the lifetime of the process. Nothing is written to disk.
Environment
Minting a token (one-time setup)
Neither RACHIO_EMAIL nor RACHIO_PASSWORD is ever read by the MCP server itself — they exist only to feed the one-time token-mint CLI.
Transport
stdio only. Remote HTTP with OAuth 2.1 is not supported in v0.1.
License
MIT — see LICENSE.
来源:README.md,提交 be68657
工具
0版本历史
1- v0.1.4最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分