सेल्फ़-होस्टेड मिरर
आपके अपने हार्डवेयर पर एक छोटा सर्वर जो आपके Marrow डेटा की पूरी, लाइव कॉपी रखता है और एजेंट को तब जवाब देता है जब आपका फ़ोन सोया हो, जेब में हो, या दुनिया के दूसरे छोर पर हो।
एक-एक ऐप का सेटअप कनेक्शन के नीचे अपने अलग पेज पर है.
Marrow की सभी गाइड: MCP · सेल्फ़-होस्टेड मिरर · ऑटोमेशन · फ़ाइलें · सहायता
यह क्या है
आपके अपने हार्डवेयर पर चलने वाला एक छोटा ओपन-सोर्स सर्वर: Raspberry Pi, NAS, कोई पुराना लैपटॉप, $5 का VPS। आपका फ़ोन QR कोड स्कैन करके एक बार उससे पेयर होता है, फिर ऐप बंद होने पर भी बैकग्राउंड में हर बदलाव पुश करता है। सर्वर आपके Marrow डेटा की पूरी SQLite कॉपी रखता है और पढ़ने के लिए तेरह MCP टूल परोसता है: फ़ोन के सात, sleep_log और symptoms_and_mood, और चार जो ऐप की अपनी भाषा में जवाब देते हैं (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
पहली बार शुरू होने पर यह एक पेयरिंग URL छापता है और आपके नेटवर्क के किसी भी ब्राउज़र में QR कोड दिखाता है।
फ़ोन को पेयर करें
- पेयरिंग URL को अपने पास की किसी भी स्क्रीन पर खोलें।
- 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 पेज पर है। सिर्फ़ URL बदलता है।
अपने LAN के बाहर से पहुँचना
सर्वर सादा HTTP बोलता है और उसका अपना कोई TLS नहीं है। उसका पोर्ट सीधे फ़ॉरवर्ड न करें। मशीन और फ़ोन पर Tailscale लगाएँ और tailscale serve इस्तेमाल करें, या उसके आगे Cloudflare Tunnel या कोई भी रिवर्स प्रॉक्सी लगाएँ जो HTTPS खत्म करे। पेयरिंग QR में वह पता होता है जो सर्वर बताता है: उसका अपना LAN पता, या वह जो आप उसे --url से दें। उसे उस पते के साथ शुरू करें जो आप असल में इस्तेमाल करेंगे, जैसे marrow-server --url https://pi.your-tailnet.ts.net, फिर पेयर करें।
डिस्क पर क्या आता है
- एक SQLite डेटाबेस जिसमें हर दैनिक सीरीज़, सैम्पल, डायरी प्रविष्टि और स्ट्रेंथ सेट है, फ़ोन के पुश से ताज़ा रखा जाता है।
- हर रॉ पुश उसके बगल में JSONL के रूप में रखा जाता है, ताकि अगर डेटाबेस कभी बिगड़ जाए तो उसे दोबारा बनाया जा सके।
- पूरे ब्योरे वाले इतिहास के लिए हर साल 50 से 150 MB मानकर चलें।
इकाइयाँ: स्वास्थ्य मेट्रिक्स अपनी सहेजी हुई 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) जाँचें, फिर एजेंट रीस्टार्ट करें। |
bad bearer token के साथ 401 | गलत टोकन। एजेंट mcp टोकन इस्तेमाल करते हैं, वह नहीं जिससे फ़ोन पेयर होता है। नीचे देखें। |
| Connection refused या टाइमआउट | सर्वर चल नहीं रहा, पोर्ट गलत है, या मशीन का कोई फ़ायरवॉल पोर्ट 8800 रोक रहा है। Docker के साथ 8800:8800 पोर्ट मैपिंग जाँचें। |
- कौन-सा टोकन। सर्वर शुरू होते समय एजेंट का टोकन छापता है, उस लाइन पर जो
agents:से शुरू होती है। वह डेटा फ़ोल्डर की.mcp-tokenफ़ाइल में भी है (./dataजब तक आपने--dataन दिया हो, Docker में/data)। फ़ोन दूसरा टोकन इस्तेमाल करता है,.app-tokenसे। एजेंट का टोकन बदलने के लिए.mcp-tokenहटाएँ, सर्वर रीस्टार्ट करें और हर एजेंट अपडेट करें। - पेयरिंग पेज bad or missing token कहता है। पेयर लिंक को ठीक वैसे खोलें जैसे सर्वर ने छापा था, उसके
?token=हिस्से के साथ। - पेयरिंग पेज QR कोड की जगह टेक्स्ट दिखाता है। QR के लिए वैकल्पिक
segnoपैकेज चाहिए:pip install "marrow-mcp[qr]"। या Marrow में इसके बजाय मैन्युअल रूप से दर्ज करें चुनें और उस टेक्स्ट सेurlऔरtokenटाइप करें। - पेयरिंग विफल रही, फ़ोन पर। फ़ोन QR में दिए पते तक नहीं पहुँच सका। Docker के तहत सर्वर को सिर्फ़ कंटेनर का अपना पता दिखता है, इसलिए उसे अपना दें: उसकी कमांड में
--url http://<your-computer-ip>:8800जोड़ें। घर के Wi-Fi के बाहरtailscale serveया किसी टनल से मिला HTTPS पता इस्तेमाल करें। - Local Network एक्सेस। घर के नेटवर्क पर सर्वर तक पहुँचने के लिए Marrow को Local Network एक्सेस चाहिए। iOS पहली बार पेयर करते समय पूछता है। अगर आपने मना कर दिया, तो Settings, Privacy and Security, Local Network में Marrow को चालू करें, फिर Marrow खुला रखकर दोबारा पेयर करें।
- वह QR कोड Marrow का पेयरिंग कोड नहीं है। कैमरे ने कोई दूसरा कोड पढ़ा। सर्वर के पेयरिंग पेज वाला कोड स्कैन करें।
- पुराना डेटा, या Marrow में डेटा नहीं पहुंच रहा। फ़ोन सर्वर तक पुश नहीं कर पा रहा। Marrow में सर्वर MCP पेज आख़िरी पुश और कितने रिकॉर्ड इंतज़ार में हैं यह दिखाता है। देखें कि सर्वर चल रहा है, फिर जो इंतज़ार में है उसे भेजने के लिए Marrow खोलें। बैकग्राउंड पुश तब चलते हैं जब iOS इजाज़त दे।
- लॉग करने से पहले इस सर्वर को अपडेट चाहिए। इसे
pip install -U marrow-mcpसे अपडेट करें और रीस्टार्ट करें। Docker के साथ क्लोन मेंgit pullऔरdocker compose up -d --buildचलाएँ। - AI की प्रविष्टियाँ नहीं दिखतीं। एक्सपोर्ट, आपके कनेक्शन में सर्वर के लिए AI को लिखने की अनुमति दें चालू करें। राइट टूल सर्वर पर उसके बाद ही दिखते हैं। हर प्रविष्टि सर्वर पर इंतज़ार करती है और Marrow के अगली बार खुलने या जागने पर पहुँचती है।
- कनेक्शन चालू नहीं होता। मुफ़्त प्लान में एक समय में 1 कनेक्शन चालू रह सकता है, Marrow Pro में 10 तक: AI, सर्वर और ऑटोमेशन मिलाकर।
दूसरों के मुकाबले इसे कब चुनें
मिरर तब चुनें जब आपके एजेंट को डेटा तब चाहिए जब आपका फ़ोन सोया हो या दूर हो, या जब आपको फ़ाइलों की जगह ऐसा डेटाबेस चाहिए जिससे सवाल पूछे जा सकें। फ़ोन पर चलने वाला MCP सर्वर तब चुनें जब आपका एजेंट फ़ोन के पास चलता हो और आप कुछ और सँभालना न चाहें। ऑटोमेशन तब चुनें जब आपके पास पहले से कोई जगह हो जहाँ डेटा पहुँचना चाहिए।