Marrow Health
繁
下載

自架鏡像

跑在你自己硬體上的小型伺服器,保存一份完整、即時的 Marrow 資料複本,無論你的手機在休眠、在口袋裡,還是在地球的另一端,都能回應智慧代理。

各個 App 的設定在連線底下各自的頁面.

所有 Marrow 指南: MCP · 自架鏡像 · 自動化操作 · 檔案 · 支援

是什麼

一個跑在你自己硬體上的小型開放原始碼伺服器:Raspberry Pi、NAS、舊筆電、$5 的 VPS。你的手機只要掃描 QR 碼配對一次,之後就會在背景推送每一項變更,App 不用開著。伺服器會保存一份完整的 SQLite Marrow 資料複本,並提供十三個讀取用的 MCP 工具:手機上的那七個、sleep_log 和 symptoms_and_mood,以及四個用 App 自己的方式回答的工具(daily_brief、baselines、what_changed、data_quality),所以智慧代理在凌晨 3 點、你的手機收在抽屜裡時,也能問「我這週睡得如何」。採用 MIT 授權:github.com/MarrowHealth/marrow-mcp.

安裝

一個 Python 檔,只用標準函式庫,需要 Python 3.10 或更新版本:

pip install marrow-mcp
marrow-server         # or: python3 marrow_server.py

或使用 Docker:

git clone https://github.com/MarrowHealth/marrow-mcp
cd marrow-mcp
docker compose up -d

第一次啟動時,它會印出配對網址,並在你網路上的任何瀏覽器中顯示 QR 碼。

配對手機

  1. 在你附近的任何螢幕上打開配對網址。
  2. 在 Marrow 中:匯出、伺服器 MCP、與伺服器配對,掃描這個碼。
  3. 完成。手機開始推送,而伺服器頁面會顯示最後一次推送的時間,以及有多少筆記錄在等待。

配對會在伺服器的資料目錄中建立兩個權杖:一個供手機推送使用,一個供智慧代理讀取使用。刪除權杖檔就能更換它。

讓智慧代理連到它

claude mcp add --transport http marrow http://<server-ip>:8800/mcp \
  --header "Authorization: Bearer <mcp token>"

十三個工具,全部都是讀取。九個原始工具:health_summary、list_metrics、metric_daily、metric_samples、workouts、nutrition_log、strength_log、sleep_log、symptoms_and_mood。還有四個從原始工具停下來的地方開始,對照你自己的近期常態,用 App 首頁相同的算法評分:daily_brief(一天:每項關鍵指標及其數值和 App 自己的說法、對照目標的飲食和水、昨晚的睡眠、完成的訓練、值得一提的警示)、baselines(你每項指標自己的常態、最新數值的 z 值和 90 天趨勢)、what_changed(過去一週對照之前的四週:什麼有變動、對你來說有多明顯、睡眠和就寢時間的變化、開始或停止的資料串流)和 data_quality(哪些是最新的、過期的或缺少的,讓智慧代理絕不會把空缺當成事實)。每個讀取都可以指定往前幾天,或指定起迄日期,以手機的日曆為準。伺服器也列出四個提示(how_am_i_doing、weekly_review、doctor_prep、log_from_text)和四個資源,供會顯示它們的用戶端使用。它還有十二個寫入工具,在你的手機允許後才會列出。從 Marrow 1.5 起,在匯出、你的連線中為你的伺服器開啟允許 AI 寫入,AI 就能透過它記錄餐點、水、體重、體能訓練、睡眠、症狀、心情和目標,而且免費。伺服器會把每一筆記錄排入佇列,手機在 Marrow 開啟或喚醒時套用,而且每一筆都能復原。Claude Desktop、Cursor 和其他用戶端的設定在 MCP 頁面。只有網址不同。

從區域網路外連線

伺服器使用純 HTTP,本身沒有 TLS。不要直接用連接埠轉送暴露它。請在這台機器和手機上安裝 Tailscale 並使用 tailscale serve,或在前面加上 Cloudflare Tunnel 或任何會終止 HTTPS 的反向代理。配對 QR 碼帶有伺服器公告的位址:它自己的區域網路位址,或你用 --url 指定的位址。請用你實際會使用的位址來啟動它,例如 marrow-server --url https://pi.your-tailnet.ts.net,然後再配對。

磁碟上會有什麼

單位:健康指標會以儲存時的 SI 單位連同標籤傳來。重訓組數一律以磅傳來,並帶有 "unit": "lb",不論手機的顯示設定為何,所以鏡像絕不會混用單位。你可以把 Grafana、DuckDB 或排程工作直接指向資料庫檔案。

疑難排解

在執行你的 AI 的電腦上做兩個測試,就能知道問題出在哪裡。第一,伺服器有在執行嗎?這個不需要權杖:

curl http://<server-ip>:8800/health

它會回應 {"server": "marrow", "ok": true}。第二,你的智慧代理的權杖能用嗎?

curl -i http://<server-ip>:8800/mcp \
  -H "Authorization: Bearer <mcp token>" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
你會得到什麼代表什麼
200 OK 和一份工具清單伺服器正常。請檢查智慧代理設定中的位址、權杖和伺服器類型(HTTP),然後重新啟動智慧代理。
401 和 bad bearer token權杖不對。智慧代理使用的是 mcp 權杖,而不是手機配對用的那個。請見下方。
連線被拒絕或逾時伺服器沒有在執行、連接埠不對,或這台機器上的防火牆擋住了 8800 連接埠。使用 Docker 的話,請檢查 8800:8800 連接埠對應。

什麼時候選這個而不是其他的

當你的智慧代理需要在手機休眠或不在身邊時取得資料,或你想要的是可查詢的資料庫而不是檔案時,請選擇鏡像。當你的智慧代理在手機附近執行,而且你不想再多維護任何東西時,請選擇手機上的 MCP 伺服器。當你已經有資料該存放的地方時,請選擇自動化操作。