把智慧代理連接到 Marrow
Marrow 透過 Model Context Protocol,從你自己的 iPhone 或你自己的伺服器提供你的 Apple Health 資料。手機上有九個讀取工具,你自己的伺服器上有十三個(其中四個以 App 自己的語彙回答,拿你自己的常態來評分),開關後面還有十二個寫入工具,採 bearer 權杖驗證,任何地方都不需要帳號。本頁就是完整的設定說明。
智慧代理在另一台機器上,或需要在手機休眠時得到答案?請配對自架鏡像(pip install marrow-mcp):它能全天候回應 Claude Code、Cursor 和 OpenClaw。如果你是從內建的 Claude 或 ChatGPT 連接器來到這裡,這裡說明它做得到而它們做不到的事.
各個 App 的設定,包括 Claude Code、Cursor、Codex 等,都在連線底下各自的頁面.
我想把我自己的 Apple Health 資料連接給你。Marrow 是一款免費的 iOS App,會透過 MCP 提供這些資料,不需要帳號,這部分也不需要訂閱。它在 App Store:https://apps.apple.com/app/id6800819435。請帶我走完整個流程:安裝 App、在「匯出」然後「本機 MCP」底下開啟伺服器,並把它顯示給我的 URL 和 bearer 權杖,當作 Streamable HTTP 伺服器加到你的 MCP 設定。如果你無法自己編輯那個設定,請告訴我確切的檔案和要貼上的內容。設定文件:https://marrowhealthapp.com/mcp。連接之後,請對最近 7 天呼叫 health_summary,並告訴我有什麼值得注意的地方。
1. 開啟伺服器
出廠時是關閉的。在 App 裡:匯出 → 本機 MCP,然後啟用伺服器。你會得到一個 URL、一個權杖和一個 QR code。伺服器只綁定在你的本機網路,App 會顯示它正在監聽的確切位址。
2. 讓你的用戶端指向它
把 <phone-ip> 和 <token> 換成 App 顯示給你的內容。
Claude Code
claude mcp add --transport http marrow \ http://<phone-ip>:21212/mcp \ --header "Authorization: Bearer <token>"
Claude Desktop,一鍵安裝
在你的電腦上下載 marrow.mcpb 並點兩下。Claude Desktop 會安裝擴充功能,並詢問上面的 URL 和權杖。完全不用終端機。
Claude Desktop(手動)、Cursor,或任何使用 mcp.json 的用戶端
{
"mcpServers": {
"marrow": {
"type": "http",
"url": "http://<phone-ip>:21212/mcp",
"headers": { "Authorization": "Bearer <token>" }
}
}
}
手動檢查
curl -s http://<phone-ip>:21212/mcp \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
工具
讀取一直都有。寫入是第二個開關。在「本機 MCP」底下開啟允許 AI 寫入後,手機的伺服器會列出與雲端 MCP相同的十二個寫入工具(log_meal、log_water、log_weight、log_workout、log_strength、log_sleep、log_symptom、log_mood、edit_entry、delete_entry、set_targets、undo_entry),在手機上立即套用並寫入 Apple Health,每一個都可以復原。關閉時,伺服器是唯讀的。
| 工具 | 回傳 |
|---|---|
health_summary | 最近幾天的活動、心臟、睡眠和營養 |
list_metrics | 追蹤的每一項指標,附單位和涵蓋範圍 |
metric_daily | 任何指標的每日數值,最多 400 天 |
metric_samples | 附時間戳記和來源裝置的原始記錄 |
workouts | 來自所有來源的體能訓練。在手機上,還有逐組的 Marrow 重訓記錄 |
nutrition_log | 飲食日記,附完整的營養素明細 |
strength_log | 每一組重訓,附組別類型、每個動作估算的 1RM、各肌群的訓練量。熱身組永遠不計入訓練量或紀錄 |
sleep_log | 每個起床日一個夜晚:就寢時間、起床時間、睡眠時數、各階段分鐘數(自架鏡像) |
symptoms_and_mood | 症狀及其嚴重程度,以及 State of Mind 記錄,附感受和感受的對象(自架鏡像) |
自架鏡像和雲端 MCP 上另有四個。它們從原始讀取結束的地方開始:每個值都用你自己近期的常態來評分,採用與 App「首頁」相同的計算方式(不含當天本身),所以智慧代理一開始拿到的就是對你來說已經成立的解讀,而不是拿一個數字去和一般人比較。
| 工具 | 回傳 |
|---|---|
daily_brief | 一天:每個關鍵指標及其數值和 App 自己的措辭(對你來說正常、高於你的常態、遠低於你的常態),飲食和水對照你的目標、昨晚的睡眠、完成的訓練、心情和症狀,以及值得一提的標記 |
baselines | 每個指標你自己的常態:區間內的平均值和離散程度、最新值的 z 值和措辭、7 天平均,以及每月的 90 天趨勢 |
what_changed | 過去一週對照之前四週:什麼有變化、對你來說有多顯著、飲食、訓練、睡眠和就寢時間的變動,以及開始或停止傳入的資料串流 |
data_quality | 鏡像保存了什麼,以及資料有多新:每個指標的最新日期、涵蓋範圍、頻率、來源,以及是否已經過期,讓智慧代理永遠不會把缺漏當成事實 |
裝置上的伺服器提供前七個原始工具,加上 daily_brief 和 baselines(九個讀取工具)。自架鏡像提供全部十三個,代管的雲端 MCP 複本也是。鏡像上的每個讀取工具都接受 days 回溯天數,或依手機日曆的 from 和 to,鏡像還會向會顯示它們的用戶端提供四個提示詞(how_am_i_doing、weekly_review、doctor_prep、log_from_text)和四個資源。原始樣本帶有睡眠階段和症狀嚴重程度。
list_metrics 背後有 172 種 Apple Health 指標,加上 nutrition_log 和 strength_log 背後 Marrow 原生的日記與重訓資料,涵蓋活動、心臟、睡眠、身體、呼吸、行動能力、聽力、營養、心靈、症狀、週期和習慣。本頁的機器可讀版本:tools.json.
手機不在時也能持續運作
裝置上的伺服器在 App 執行時才會回應。如果要全天候存取,請配對自架鏡像:一個只用 Python 標準函式庫的檔案,放在 Pi、NAS 或舊筆電上。手機的背景推送讓它保持最新,並在 http://<server-ip>:8800/mcp 以自己的權杖提供相同的 MCP 介面。手機的工具使用 App 的指標鍵(active_energy、heart_rate_variability)。伺服器同時接受這些和 Apple 的簡短名稱(active_energy_burned),所以智慧代理可以在兩者之間切換,不必重新學習。它是開放原始碼,可以安裝:
pip install marrow-mcp marrow-server
原始碼:github.com/MarrowHealth/marrow-mcp。已列入官方 MCP registry,名稱為 tech.skeletonarmy/marrow.
不要把任何一個伺服器用連接埠轉送暴露到公開網際網路。兩者都是為區域網路或 tailnet 設計的。如果需要遠端存取,請在前面加上 tailscale serve 或同類的東西,讓傳輸使用 HTTPS,並在 bearer 權杖被看到之前先驗證裝置。
疑難排解
先做下面的測試,從你的 AI 所在的電腦執行。它會告訴你問題出在哪一邊。請使用 Marrow 中該連線頁面上的位址和權杖,並讓 Marrow 在手機上保持開啟。
curl -i http://<phone-ip>:21212/mcp \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
| 你會得到什麼 | 代表什麼 |
|---|---|
HTTP/1.1 200 OK 和一份工具清單 | 手機沒問題。問題出在你的 App 設定:位址、權杖,或 HTTP(Streamable HTTP)以外的伺服器類型。修正設定並重新啟動 App。 |
401 Unauthorized | 權杖不對,或這個連線在 Marrow 中是關閉的。「你的連線」中的每個連線都有自己的權杖,關閉一個會把那個 App 擋在外面,其他的照常運作。請開啟它,或重新複製它的權杖。 |
404 Not Found 加上 use POST /mcp | 路徑不對。位址要以 /mcp 結尾. |
| 連線被拒絕,或一直沒有回應直到逾時 | 電腦連不到手機。請逐項檢查下面的清單。 |
- Marrow 必須開著。手機的伺服器只有在 Marrow 開在前景時才會回應。你切換 App 或鎖定手機後,iOS 很快就會暫停它。再次打開 Marrow,它就會再次回應。如果要在手機休眠時得到答案,請使用伺服器 MCP或雲端 MCP.
- 同一個 Wi-Fi 或 tailnet。電腦和手機必須共用同一個 Wi-Fi 網路或 tailnet。本機 MCP 永遠不會透過行動網路回應。如果 Marrow 顯示找不到網路位址,請連上 Wi-Fi 或 tailnet。訪客和飯店的 Wi-Fi 常會讓裝置彼此連不到。
- tailnet 位址或 Wi-Fi 位址。Marrow 顯示的是手機的其中一個位址,通常是 Wi-Fi 的。透過 Tailscale 連到手機的電腦,需要的是手機的 tailnet 位址。Tailscale App 會顯示它(以
100.開頭)。請把它放進你的設定中取代 Wi-Fi 位址,連接埠和權杖維持不變。 - 位址變了。路由器過一段時間可能會給手機新的 Wi-Fi 位址。請比較 Marrow 中的位址和你設定中的位址。在路由器上保留位址可以讓它固定。
- 原因不是本機網路存取權限。iOS 會在 Marrow 連到你網路上的裝置(例如已配對的伺服器)時詢問。手機的伺服器回應電腦不需要任何權限,所以開啟或關閉那個開關,不會改變本機 MCP。
- 電腦上的 VPN。你的 tailnet 以外的 VPN,可能會讓本機流量繞過你的 Wi-Fi。暫停它,再試一次測試。
- 你的 App 記錄中出現 405。手機只回應 POST,也不會保持串流開啟,所以 GET 會得到
405。使用 Streamable HTTP 的 App 會繼續用 POST,所以光這一行不是問題。 - 你的 App 只接受指令(stdio)。請透過 mcp-remote 橋接程式處理手機的位址。對不在電腦本身上的純 http 位址,它需要
--allow-http:npx -y mcp-remote http://<phone-ip>:21212/mcp --allow-http --header "Authorization: Bearer <token>"。在 Windows 上的 Cursor、Codex 或 Claude Desktop 設定檔中,args 內的空格可能會被破壞。請把標頭寫成Authorization:${AUTH_HEADER},並在伺服器的 env 中把AUTH_HEADER設為Bearer <token>。 - 它能讀取,但不能記錄。請在「本機 MCP」底下開啟允許 AI 寫入。記錄會立刻套用在手機上,而且每一筆都能復原。
- 連線開不起來。免費方案同一時間只能開啟 1 個連線,Marrow Pro 最多 10 個,AI、伺服器和自動化操作合計。請先到「你的連線」關閉其中一個。
Claude Code、Cursor、VS Code 等各個 App 的設定與疑難排解,都在連線底下.
要花多少錢
不用花錢。智慧代理存取包含在免費方案裡,背景同步、自動匯出、CSV 和 JSON 匯出,以及條碼掃描也一樣。Health Auto Export 比 Marrow 更早推出 MCP 伺服器,而且做得很好,但它的伺服器需要 Premium 訂閱。值得一提的是這個差別,而不是誰先誰後。
系統需求
- iOS 17 或更新版本,以及 Apple Health。沒有 Android 或網頁版。
- Marrow 在 App Store 上免費下載:apps.apple.com/app/id6800819435.
- Marrow 沒有帳號,所以沒有任何不經使用者自己的裝置就能呼叫的代管 API。