המראה באירוח עצמי
שרת קטן על חומרה שבבעלותכם ששומר עותק מלא וחי של נתוני 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 בכל דפדפן ברשת שלכם.
צימוד הטלפון
- פתחו את כתובת הצימוד על כל מסך לידכם.
- ב-Marrow: ייצוא, MCP בשרת, צימוד לשרת, סרקו את הקוד.
- זהו. הטלפון מתחיל לדחוף, ודף השרת מציג את זמן הדחיפה האחרונה וכמה רשומות ממתינות.
הצימוד יוצר שני אסימונים בתיקיית הנתונים של השרת: אחד שהטלפון משתמש בו לדחיפה, אחד שסוכנים משתמשים בו לקריאה. מחקו קובץ אסימון כדי להחליף אותו.
כוונו סוכן אליו
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, ואז צמדו.
מה נוחת בדיסק
- מסד נתונים SQLite עם כל סדרה יומית, דגימה, רשומת יומן וסט כוח, שנשמר מעודכן על ידי הדחיפות של הטלפון.
- כל דחיפה גולמית מאוחסנת כ-JSONL לידו, כך שאפשר לבנות את מסד הנתונים מחדש אם תקלקלו אותו אי פעם.
- תקצבו 50 עד 150 MB לשנה של היסטוריה בנאמנות מלאה.
יחידות: מדדי 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. |
- איזה אסימון. השרת מדפיס את אסימון הסוכנים כשהוא מתחיל, בשורה שמתחילה ב-
agents:. הוא גם בקובץ.mcp-tokenבתיקיית הנתונים (./dataאלא אם העברתם--data,/dataב-Docker). הטלפון משתמש באסימון אחר, מ-.app-token. כדי להחליף את אסימון הסוכנים, מחקו את.mcp-token, הפעילו מחדש את השרת ועדכנו כל סוכן. - דף הצימוד אומר אסימון שגוי או חסר. פתחו את קישור הצימוד בדיוק כפי שהשרת הדפיס אותו, עם החלק
?token=שלו. - דף הצימוד מציג טקסט ולא קוד QR. ה-QR צריך את החבילה האופציונלית
segno:pip install "marrow-mcp[qr]". או, ב-Marrow, בחרו הזנה ידנית במקום והקלידו את ה-urlוה-tokenמהטקסט הזה. - הצימוד נכשל בטלפון. הטלפון לא הצליח להגיע לכתובת שב-QR. תחת Docker השרת רואה רק את הכתובת של הקונטיינר עצמו, ולכן תנו לו את שלכם: הוסיפו
--url http://<your-computer-ip>:8800לפקודה שלו. מחוץ ל-Wi-Fi הביתי, השתמשו בכתובת HTTPS מ-tailscale serveאו ממנהרה. - גישה לרשת מקומית. כדי להגיע לשרת ברשת הבית שלכם, Marrow צריך גישה לרשת מקומית. iOS שואל בפעם הראשונה שאתם מצמדים. אם אמרתם לא, הפעילו את Marrow בהגדרות, פרטיות ואבטחה, רשת מקומית, ואז צמדו שוב כש-Marrow פתוח.
- קוד ה-QR הזה אינו קוד צימוד של Marrow. המצלמה קראה קוד אחר. סרקו את זה שבדף הצימוד של השרת.
- נתונים ישנים, או לא מקבל נתונים ב-Marrow. הטלפון לא מצליח לדחוף לשרת. דף MCP בשרת ב-Marrow מציג את הדחיפה האחרונה וכמה רשומות ממתינות. בדקו שהשרת פועל, ואז פתחו את Marrow כדי לשלוח את מה שממתין. דחיפות ברקע רצות כש-iOS מאפשר.
- השרת הזה צריך עדכון לפני שהוא יכול לרשום. עדכנו אותו עם
pip install -U marrow-mcpוהפעילו אותו מחדש. עם Docker, הריצוgit pullו-docker compose up -d --buildבשכפול. - רשומות מה-AI לא מופיעות. הפעילו אפשר כתיבה על ידי AI עבור השרת בלשונית ייצוא, החיבורים שלך. כלי הכתיבה מופיעים בשרת רק אחרי זה. כל רשומה ממתינה בשרת ונוחתת כש-Marrow נפתח או מתעורר בפעם הבאה.
- החיבור לא נדלק. במסלול החינמי חיבור אחד פועל בכל רגע, ב-Marrow Pro עד 10: AI, שרתים ואוטומציות ביחד.
מתי לבחור בזה על פני האחרים
בחרו במראה כשהסוכן שלכם צריך את הנתונים בזמן שהטלפון ישן או רחוק, או כשאתם רוצים מסד נתונים שאפשר לשאול עליו שאילתות במקום קבצים. בחרו בשרת ה-MCP שעל הטלפון כשהסוכן שלכם רץ ליד הטלפון ואתם לא רוצים לתחזק שום דבר נוסף. בחרו באוטומציות כשיש לכם כבר מקום שהנתונים צריכים לנחות בו.