Marrow Health
HE
הורדה

המראה באירוח עצמי

שרת קטן על חומרה שבבעלותכם ששומר עותק מלא וחי של נתוני Marrow שלכם ועונה לסוכנים כשהטלפון ישן, בכיס, או בצד השני של העולם.

ההגדרה לכל אפליקציה בנפרד נמצאת בדף משלה תחת חיבורים.

כל המדריכים של Marrow: MCP · מראה באירוח עצמי · אוטומציות · קבצים · תמיכה

מה זה

שרת קטן בקוד פתוח שאתם מריצים על חומרה שבבעלותכם: Raspberry Pi, NAS, מחשב נייד ישן, VPS ב-$5. הטלפון שלכם מצטמד אליו פעם אחת בסריקת קוד QR, ואז דוחף כל שינוי ברקע, כשהאפליקציה סגורה. השרת שומר עותק SQLite מלא של נתוני Marrow שלכם ומגיש שלושה עשר כלי MCP לקריאה: השבעה של הטלפון, sleep_log ו-symptoms_and_mood, וארבעה שעונים במונחים של האפליקציה עצמה (daily_brief, baselines, what_changed, data_quality), כך שסוכן יכול לשאול “איך ישנתי השבוע” בשלוש בלילה כשהטלפון שלכם במגירה. ברישיון 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. וארבעה שמתחילים איפה שהגולמיים נגמרים, מדורגים ביחס לנורמה הנגררת שלכם עם אותו חישוב שמסך הבית של האפליקציה משתמש בו: daily_brief (יום אחד: כל מדד מפתח עם הערך שלו והביטוי של האפליקציה עצמה, מזון ומים מול היעדים שלכם, השינה של אמש, האימונים שנעשו, דגלים ששווה להזכיר), baselines (הנורמה שלכם לכל מדד, ה-z של הערך האחרון ומגמת 90 הימים), what_changed (השבוע האחרון מול ארבעת הקודמים לו: מה זז, עד כמה זה בולט עבורכם, שינויים בשינה ובשעת השינה, זרמים שהתחילו או הפסיקו) ו-data_quality (מה טרי, מיושן או חסר, כך שסוכן אף פעם לא מטעה פער בעובדה). כל קריאה מקבלת ימים אחורה או from ו-to לפי לוח השנה של הטלפון. השרת מציג גם ארבעה פרומפטים (how_am_i_doing, weekly_review, doctor_prep, log_from_text) וארבעה משאבים ללקוחות שמציגים אותם. יש לו גם שנים עשר כלי כתיבה, שמופיעים ברגע שהטלפון שלכם מתיר אותם. מ-Marrow 1.5, הפעילו אפשר כתיבה על ידי AI עבור השרת שלכם בייצוא, החיבורים שלך ו-AI יכול לרשום דרכו ארוחות, מים, משקל, אימונים, שינה, תסמינים, מצב רוח ויעדים, בחינם. השרת מכניס כל רשומה לתור והטלפון מיישם אותה כש-Marrow נפתח או מתעורר, וכל אחת אפשר לבטל. ההגדרה ל-Claude Desktop, ל-Cursor ולאחרים נמצאת בדף MCP. רק הכתובת משתנה.

להגיע אליו מחוץ לרשת המקומית

השרת מדבר HTTP רגיל ואין לו TLS משלו. אל תעשו לו port-forward ישיר. שימו Tailscale על המכשיר ועל הטלפון והשתמשו ב-tailscale serve, או העמידו לפניו Cloudflare Tunnel או כל reverse proxy שמסיים HTTPS. קוד ה-QR של הצימוד נושא את הכתובת שהשרת מפרסם: הכתובת המקומית שלו, או זו שתתנו לו עם --url. הפעילו אותו עם הכתובת שבה תשתמשו בפועל, למשל marrow-server --url https://pi.your-tailnet.ts.net, ואז צמדו.

מה נוחת בדיסק

יחידות: מדדי Health מגיעים ביחידות SI השמורות שלהם עם תוויות. סטים של כוח מגיעים בפאונדים עם "unit": "lb" לא משנה מה הגדרת התצוגה של הטלפון, כך שהמראה אף פעם לא מערבבת יחידות. כוונו את Grafana, DuckDB או משימת cron ישר אל קובץ מסד הנתונים.

פתרון בעיות

שתי בדיקות מהמחשב שה-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 שעל הטלפון כשהסוכן שלכם רץ ליד הטלפון ואתם לא רוצים לתחזק שום דבר נוסף. בחרו באוטומציות כשיש לכם כבר מקום שהנתונים צריכים לנחות בו.