The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Long Run Hybrid Coach listing page.
官網 paceandstaystrong.com | 遇到問題看支援頁
把一個網址貼進 Claude 或 ChatGPT,你就有一個讀得到你真實訓練的教練。
它讀你 Intervals.icu 帳號裡的活動與恢復數據,維持同一份 28 天的跑步+重訓方向與本週課表,拿計畫去對你實際做了什麼,並在你同意之後,把每一堂課排進你的日曆。免費使用,沒有付費方案。
Garmin 不是使用前提。 Garmin 只是目前第一條做過實機驗證的下游裝置路徑;Apple Watch、COROS、Polar、Suunto、Wahoo、其他 app/手錶,甚至沒有手錶,都可以用同一個教練。差別在於有多少可信的訓練紀錄能進到教練手上,以及 Intervals 後面那段裝置同步是否已經被驗證過。
一般使用者直接用託管版:
https://mcp.paceandstaystrong.com/mcp。你需要一個 Intervals.icu 帳號,但不需要自己向 Intervals 申請 OAuth App,也不需要自己維運伺服器。
官網把同一條流程拆成四個點擊步驟走一次:開始使用。
在 AI 的連接器設定裡新增一個 remote MCP server,網址是:
沒有別的欄位要填,也沒有金鑰要貼。
瀏覽器會開 Intervals.icu 的同意頁。登入你自己的 Intervals.icu 帳號,四個權限都勾起來:
| 權限 | 教練拿它做什麼 |
|---|---|
ACTIVITY:READ | 讀你已完成的訓練。 |
WELLNESS:READ | 讀 Intervals 手上的恢復數據。 |
CALENDAR:WRITE | 讀寫訓練日曆,讓你確認過的課表能送進去,並讀回來核對。 |
SETTINGS:WRITE | 讀你的門檻配速。它唯一會寫進去的,是你還沒有的門檻配速,發生在你已經確認過的課表交付當下;已經設好的絕不覆寫。 |
Intervals 也有只讀的設定權限;這裡要寫入,是因為上面那個補值動作真的會寫。它之所以需要,是因為 Intervals 這邊沒有門檻配速時,它照樣收下有配速的課表,但往手錶送的時候會把配速目標拿掉——你會收到距離正確、卻沒有任何目標的一堂課。少勾任何一個權限,需要它的功能就會壞掉,而且不容易看出原因;重新連線補上即可。
不要把 Intervals 密碼、API key 或 token 貼進對話。
教練讀的是 Intervals.icu 裡已經有的東西。帳號是新的話,有兩條路把歷史補進去:
.fit 檔,請它匯入。同檔與同一場活動會自動去重,判斷不了才回頭問你。(檔案是給教練的,不會進 Intervals.icu。)裝置量不到的東西也可以直接在對話裡講:重訓的實際組數重量次數、本週能練的時間與器材、體重體脂、沒帶錶的那一場、「最近很累」「睡不好」,以及你從手錶上實際看到的睡眠、HRV、靜止心率、readiness 數字。教練不會把一句「我很累」偷偷翻成一個假的 readiness 分數。
不用先填問卷:
或:
教練會先讀已經有的資料,再只問真正會改變決策的缺口——例如本週可練日、器材,或裝置不可能知道的重訓基準。
之後每一次改動也是同一條體驗:改動前後對照 → 你同意一次 → 才寫入。
交付是另一個獨立確認:課表預覽 → 你同意一次 → 寫進 Intervals.icu → 讀回來核對。
預覽會先說明這次要寫進哪一個 Intervals.icu 帳號——先講 Intervals 上的 email,再講顯示名稱,所以同時有正式帳號和測試帳號的人,在寫進去之前就看得出來是哪一個。email 放前面,是因為自己的兩個帳號常常取同一個顯示名稱。兩者都是當下向 Intervals 讀的,只用在這一次回答,不會被存下來。
本產品能證明的最遠一步是 Intervals.icu 收下了。Intervals 成功不等於課表已經在 Garmin、Apple Watch 或其他手錶上——Intervals 後面那段同步是外部路徑,要各自驗證。
Intervals.icu 是目前的中轉站:它幫教練接住不同裝置/app 的活動與恢復數據,也承接教練確認後的日曆課表。它不是計畫本身的存放處。
責任分工:
只有帳號本身是必要條件。Intervals 裡已經有活動與恢復數據的話,教練自動拿得到的資料會比較完整;沒有的欄位保持「不知道」,不會被當成 0,也不會因為少一個選配數值就把一般教練對話擋掉。
實際會感覺到的差別只有一個:**託管版你在手機上就能直接用;自架只有在跑伺服器的那台電腦上能用。**下面每一行都是這個差別的成本。
| 託管版(推薦) | 自架 | |
|---|---|---|
| 手機上能用嗎 | 能——連一個有手機 App 的 client 就好 | 不能,除非你自己把伺服器對外開放並處理 TLS |
| 網址 | https://mcp.paceandstaystrong.com/mcp | 你自己的伺服器,例如 http://127.0.0.1:8422/mcp |
| 維運 | 不用自己管 | 自己啟動、更新、備份與維運 |
| Intervals OAuth App | 不需要 | 需要自己的 OAuth application 憑證 |
| 計畫存哪 | 託管端、以每位使用者為範圍 | 你自己的伺服器 state root |
| 適合誰 | 一般使用者、多個 client 共用同一份計畫 | 開發者、需要完全自管環境/資料的人 |
託管版會自己處理 dynamic client registration、PKCE、token 與使用者對應;一般使用者不需要任何 id、API key、client secret 或環境變數。
openclaw mcp add 指到同一個網址,加上 --auth oauth。一個 instance 若不只一個人用,要把 OAuth identity 設成 per-requester,否則所有人會連到同一個 Intervals 帳號。設定見 entrypoints/openclaw/。逐入口「已完整實機驗證」或「已封裝、等待真實連線驗證」的狀態,以 entrypoints/ 為準。
Repo 使用 Python 3.11,產品本身只用標準函式庫,不需要先安裝一串套件。
client_id / secret。流程見 Intervals.icu OAuth support。<gateway-origin>/oauth/callback。本機 client 可以走 loopback;remote client 需要可達的 HTTPS 或安全通道。http://127.0.0.1:8422/mcp。要正式提供給 remote client 的話,不要把 loopback 範例當 production runbook。Persistent volume、TLS、信任的 client origin、single replica、release identity 與部署驗證見 docs/deploy-gateway.md。
本機設定 GARMIN_COACH_LOOP_GATEWAY_URL 指向託管版時,本機寫入預設會被擋;只有明確加 --offline 才代表「我刻意在做另一份本機計畫」。已經有本機資料的人可以搬到託管版,流程見 docs/ops/migrate-local-store-to-hosted.md。
getCoachState)。託管端保存維持同一份計畫所必要的東西:計畫的版本鏈、決策與回執、你自己回報的紀錄、身分對應,以及還沒收斂的交付紀錄。
匯出時刻意不包含三樣東西:授權憑證的 fingerprint(單向的指紋,只拿來做內部記帳)、供應商的原始 payload 與 GPS 軌跡(原始活動檔應該跟供應商拿),以及內部的 owner id(本產品自己的儲存位置編號)。
刪除也有三個明確邊界,這三件不在本產品能刪的範圍:
完整生命週期見 docs/account-lifecycle.md,公開隱私政策在 paceandstaystrong.com/zh/privacy.html(英文版為準)。
目前 release 對外有 24 個 MCP tool、2 個 prompt、31 個 CLI 指令、4 份 JSON Schema contract、10 張 identity 表。這些數量由測試從真實程式碼推導,避免這份文件自己走鐘。
Long Run Hybrid Coach 是獨立專案,與 Garmin、Intervals.icu、Apple 或其他裝置/平台供應商沒有隸屬、背書或贊助關係。程式碼以 MIT License 釋出。