Google Home MCP 怎麼接 agent?先分清 OAuth、工具與權限
Google Home MCP 把 agent 和實體居家環境接在一起,讓支援 MCP 的 client 可以讀取家庭、裝置資源、目前狀態與歷史資料,也能透過工具執行 Home actions。不過它目前仍是 early access,最需要先設計的不是「怎麼讓 agent 控制更多裝置」,而是哪些資料可以讀、哪一個家庭可以被選到,以及什麼動作一定要經過人確認。
直接答案是:先把 Google Home MCP 和 Home Developer MCP 分開;前者使用官方 endpoint 與使用者授權的 OAuth 連線到實際家庭,後者是查技術文件的開發者路徑。完成 OAuth 後先只呼叫列出家庭、資源、狀態與歷史的工具,最後才評估 run_home_actions,並把每一次可能改變裝置狀態的操作設成明確確認點。
本文依 Google Home MCP Reference 與 Home MCP overview 整理,沒有在實際家庭或裝置上執行。
先分清楚兩條 MCP 產品路徑
Google Home 的文件同時介紹 Home MCP 與 Home Developer MCP,但它們處理的資料和授權目的不同:
| 路徑 | 用途 | 授權與風險 |
|---|---|---|
| Home MCP | 連到使用者的 Google Home 圖譜,讀取家庭、資源、狀態、歷史並執行 actions | 使用者授權的 OAuth;會接觸真實家庭資料,actions 可能改變實體裝置 |
| Home Developer MCP | 查 Google Home API、SDK 與開發文件 | 開發者文件查詢路徑,不等於取得某個家庭的控制權 |
如果你的目標只是問「某個 API 怎麼用」,不需要先連到使用者的家庭。反過來,如果你要讓 agent 查燈、溫度或感測器狀態,則要明確告知使用者這是一條可以看到家庭資源的 OAuth 連線,不要用 Developer MCP 的設定方式取代它。
Home MCP endpoint 與工具範圍
官方 Reference 目前列出的 Home MCP endpoint 是:
https://home.googleapis.com/mcp它使用 OAuth 與使用者授權。成功連線後,先按照從觀察到控制的順序理解工具:
| 工具 | 目的 | 第一次連線是否適合直接呼叫 |
|---|---|---|
list_homes | 列出使用者可存取的家庭 | 可以,先確認家庭選擇 |
list_home_resources | 列出家庭中的資源與裝置 | 可以,但要避免把完整資源清單寫入公開 log |
list_home_states | 讀取目前狀態 | 可以,使用測試家庭或最小範圍 |
list_home_history | 讀取歷史狀態 | 先確認使用者了解資料時間範圍與敏感性 |
run_home_actions | 執行 Home actions | 不要在未確認目標和動作時自動呼叫 |
工具名稱本身不會替你完成權限設計。list_home_resources 的結果可能暴露裝置名稱、房間配置或家庭成員自行設定的語意;run_home_actions 則是從「讀資料」跨到「改變實體環境」的明顯邊界。
用 read-only 順序驗證連線
建立 remote MCP connector 時,不要把整個家庭當成一個不可分割的測試目標。建議先做一個最小 smoke test:
- 核對 endpoint:確認 client 連到
https://home.googleapis.com/mcp,OAuth 同意畫面屬於 Google,並且登入的是預期帳號。 - 選定家庭:呼叫
list_homes後,只選擇這次任務需要的家庭;不要讓 agent 自己在多個家庭中猜測。 - 縮小資源:用
list_home_resources找到一個測試用裝置,保存必要的 resource id,但不要把整份家庭圖譜送進一般分析資料庫。 - 只讀取狀態:用
list_home_states和必要的list_home_history驗證名稱、狀態和時間是否符合預期。 - 明確停在控制前:若任務需要
run_home_actions,先向使用者列出家庭、裝置、動作、時間與回復方法;未取得確認就結束回合。
這個順序也延續 接 MCP 前的能力盤點:先確認 agent 原本能做到什麼,再新增一條具有資料與實體副作用的連線。
把實體動作做成審批,而不是自然語言猜測
「把客廳燈打開」看起來簡單,但真正執行前至少要解析四個欄位:
| 欄位 | 需要確認的內容 |
|---|---|
| 目標家庭 | 不要只依房間名稱;多個家庭時先指定 home |
| 目標資源 | 裝置名稱可能重複,應顯示 resource id 或可辨識的完整名稱 |
| 動作與參數 | 開/關、溫度、亮度或其他 action 不能只靠模糊描述 |
| 回復與時間 | 是否立即執行、是否有自動恢復、失敗時怎麼處理 |
可以把 agent prompt 固定成:「先列出你解析到的 home、resource、action 和參數;在我回覆確認前,不得呼叫任何會改變裝置狀態的工具。」如果你的 client 支援工具審批或 allowlist,初始設定只開列出和讀取工具,把 run_home_actions 保留在需要時才允許的範圍。
不要把 MCP 的 OAuth 登入當成「所有家庭操作都已經得到永久同意」。使用者授權、client 的工具批准、家庭成員對實體設備的實際期待,是三個不同層次;產品仍要在每次高風險操作前顯示具體目標。
Early access 要有降級方案
Google Home MCP 目前不是穩定完成的 production contract。整合時要預先處理:
- 工具清單或欄位可能變更,將工具名稱與回應 schema 做版本化記錄。
- OAuth 失效或家庭授權被撤銷時,回傳需要重新授權,不要重試控制動作。
- 裝置離線、狀態延遲或歷史資料不完整時,顯示「未知」而不是推論成關閉或安全。
run_home_actions失敗時,先重新讀取狀態再決定是否需要人工介入,不要連續重送可能重複執行的 action。- 所有家庭名稱、房間和裝置資訊都視為敏感資料,限制 log、分析事件和 prompt 儲存範圍。
這些設計不是在否定 Home MCP 的用途,而是把「觀察實體環境」和「操作實體環境」放在不同的可靠性與權限層級。
常見問題
Q: Home MCP 和 Home Developer MCP 可以用同一份設定嗎?
A: 不建議直接混用。Home MCP 是連到使用者家庭的 OAuth 路徑;Home Developer MCP 是技術文件查詢路徑。先依目標選一條,避免把文件讀取權限誤當成家庭控制權限。
Q: 只呼叫 list_home_states 會改變裝置嗎?
A: 它的用途是讀取狀態;但回應仍可能包含家庭、房間或裝置資訊,應限制資料落點與 log。是否真的只讀取,仍要以 client 顯示的工具 schema 和官方文件為準。
Q: 可以讓 agent 自動執行 run_home_actions 嗎?
A: 技術上它是 Home MCP 的控制工具,但不應把自然語言直接轉成無確認的實體動作。先顯示 home、resource、action、參數與回復方式,得到使用者確認後再執行。
Q: Early access 適合直接接 production 家庭嗎?
A: 應先用測試家庭、read-only 任務和可撤銷的 action 驗證;同時準備 OAuth 失效、裝置離線、工具 schema 變更與誤操作的降級流程。不要把 early access 的成功示範當成穩定性保證。
參考資料:
回報錯字、失效連結,或告訴我你想看的延伸主題。