มิเรอร์ที่โฮสต์เอง
เซิร์ฟเวอร์ขนาดเล็กบนฮาร์ดแวร์ของคุณที่เก็บสำเนาสดครบชุดของข้อมูล Marrow ของคุณ และตอบเอเจนต์ขณะที่โทรศัพท์พักอยู่ อยู่ในกระเป๋า หรืออยู่อีกฟากของโลก
ขั้นตอนสำหรับแต่ละแอปอยู่ในหน้าของตัวเองใต้การเชื่อมต่อ.
คู่มือ Marrow ทั้งหมด: MCP · มิเรอร์ที่โฮสต์เอง · การทำงานอัตโนมัติ · ไฟล์ · ความช่วยเหลือ
คืออะไร
เซิร์ฟเวอร์โอเพนซอร์สขนาดเล็กที่คุณรันบนฮาร์ดแวร์ของคุณเอง: Raspberry Pi, NAS, แล็ปท็อปเครื่องเก่า หรือ VPS ราคา $5 โทรศัพท์ของคุณจับคู่กับมันครั้งเดียวด้วยการสแกนคิวอาร์โค้ด จากนั้นส่งทุกการเปลี่ยนแปลงเบื้องหลัง แม้ปิดแอปอยู่ เซิร์ฟเวอร์เก็บสำเนา 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
เมื่อเริ่มครั้งแรก มันพิมพ์ URL สำหรับจับคู่และแสดงคิวอาร์โค้ดในเบราว์เซอร์ใดก็ได้บนเครือข่ายของคุณ
จับคู่โทรศัพท์
- เปิด 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 (อะไรสดใหม่ ล้าสมัย หรือขาดหาย เอเจนต์จึงไม่เข้าใจช่องว่างเป็นข้อเท็จจริง) ทุกการอ่านรับค่าจำนวนวันย้อนหลังหรือจากและถึงตามปฏิทินของโทรศัพท์ เซิร์ฟเวอร์ยังมีพรอมต์สี่ตัว (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 ในตัว อย่าทำ port-forward แบบดิบ ติดตั้ง Tailscale บนเครื่องและโทรศัพท์ แล้วใช้ tailscale serve หรือวาง Cloudflare Tunnel หรือ reverse proxy ใดก็ได้ที่ยุติ HTTPS ไว้ด้านหน้า คิวอาร์การจับคู่มีที่อยู่ที่เซิร์ฟเวอร์ประกาศ คือที่อยู่ LAN ของมันเอง หรือที่อยู่ที่คุณระบุด้วย --url เริ่มมันด้วยที่อยู่ที่คุณจะใช้จริง เช่น marrow-server --url https://pi.your-tailnet.ts.net แล้วจึงจับคู่
สิ่งที่ถูกเขียนลงดิสก์
- ฐานข้อมูล SQLite ที่มีทุกชุดข้อมูลรายวัน ตัวอย่าง รายการไดอารี่ และเซ็ตเวทเทรนนิ่ง อัปเดตด้วยข้อมูลที่โทรศัพท์ส่งมา
- ทุกการส่งข้อมูลดิบถูกเก็บพักเป็น JSONL ไว้ข้างๆ เพื่อให้สร้างฐานข้อมูลใหม่ได้หากคุณทำเสียหาย
- เผื่อไว้ 50 ถึง 150 MB ต่อปีสำหรับประวัติความละเอียดเต็ม
หน่วย: ตัวชี้วัดสุขภาพมาในหน่วย SI ที่เก็บไว้พร้อมป้ายกำกับ เซ็ตเวทเทรนนิ่งมาเป็นปอนด์พร้อม "unit": "lb" ไม่ว่าโทรศัพท์จะตั้งการแสดงผลอย่างไร มิเรอร์จึงไม่เคยปนหน่วย ชี้ Grafana, DuckDB หรือ cron job ไปที่ไฟล์ฐานข้อมูลได้โดยตรง
การแก้ปัญหา
สองการทดสอบจากคอมพิวเตอร์ที่ 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=ของมัน - หน้าจับคู่แสดงข้อความ ไม่ใช่คิวอาร์โค้ด คิวอาร์ต้องใช้แพ็กเกจ
segnoที่เป็นตัวเลือก:pip install "marrow-mcp[qr]"หรือใน Marrow เลือก ป้อนข้อมูลด้วยตนเองแทน แล้วพิมพ์urlและtokenจากข้อความนั้น - จับคู่ไม่สำเร็จ บนโทรศัพท์ โทรศัพท์เข้าถึงที่อยู่ในคิวอาร์ไม่ได้ ภายใต้ Docker เซิร์ฟเวอร์เห็นเฉพาะที่อยู่ของคอนเทนเนอร์เอง จึงให้ที่อยู่ของคุณแทน: เพิ่ม
--url http://<your-computer-ip>:8800ในคำสั่งของมัน เมื่ออยู่นอก Wi-Fi ที่บ้าน ให้ใช้ที่อยู่ HTTPS จากtailscale serveหรือทันเนล - สิทธิ์เข้าถึงเครือข่ายในพื้นที่ เพื่อเข้าถึงเซิร์ฟเวอร์ในเครือข่ายบ้านของคุณ Marrow ต้องได้รับสิทธิ์เข้าถึงเครือข่ายในพื้นที่ iOS ถามในครั้งแรกที่คุณจับคู่ หากคุณตอบไม่อนุญาต ให้เปิด Marrow ใน การตั้งค่า, ความเป็นส่วนตัวและความปลอดภัย, เครือข่ายในพื้นที่ (Local Network) แล้วจับคู่อีกครั้งโดยเปิด Marrow ไว้
- คิวอาร์โค้ดนั้นไม่ใช่รหัสจับคู่ของ Marrow กล้องอ่านรหัสอื่น สแกนรหัสที่อยู่บนหน้าจับคู่ของเซิร์ฟเวอร์
- ข้อมูลเก่า หรือ ส่งข้อมูลไม่สำเร็จ ใน Marrow โทรศัพท์ส่งข้อมูลไปที่เซิร์ฟเวอร์ไม่ได้ หน้า MCP เซิร์ฟเวอร์ใน Marrow แสดงการส่งล่าสุดและจำนวนระเบียนที่รออยู่ ตรวจดูว่าเซิร์ฟเวอร์ทำงานอยู่ แล้วเปิด Marrow เพื่อส่งสิ่งที่รออยู่ การส่งเบื้องหลังทำงานเมื่อ iOS อนุญาต
- เซิร์ฟเวอร์นี้ต้องอัปเดตก่อนจึงจะบันทึกได้ อัปเดตด้วย
pip install -U marrow-mcpแล้วรีสตาร์ท ใน Docker ให้รันgit pullและdocker compose up -d --buildในโฟลเดอร์ที่โคลน - รายการจาก AI ไม่แสดง เปิดอนุญาตให้ AI เขียนข้อมูลสำหรับเซิร์ฟเวอร์ใน ส่งออก, การเชื่อมต่อของคุณ เครื่องมือเขียนจะปรากฏบนเซิร์ฟเวอร์หลังจากนั้นเท่านั้น แต่ละรายการรออยู่บนเซิร์ฟเวอร์และเข้ามาเมื่อ Marrow เปิดหรือตื่นครั้งถัดไป
- เปิดการเชื่อมต่อไม่ได้ แพลนฟรีเปิดได้ครั้งละ 1 การเชื่อมต่อ Marrow Pro ได้สูงสุด 10 รวม AI เซิร์ฟเวอร์ และการทำงานอัตโนมัติทั้งหมด
เมื่อไรควรเลือกสิ่งนี้แทนตัวเลือกอื่น
เลือกมิเรอร์เมื่อเอเจนต์ของคุณต้องการข้อมูลขณะที่โทรศัพท์พักอยู่หรือไม่อยู่ใกล้ หรือเมื่อคุณอยากได้ฐานข้อมูลที่ค้นหาได้แทนไฟล์ เลือกเซิร์ฟเวอร์ MCP บนโทรศัพท์เมื่อเอเจนต์ของคุณทำงานใกล้โทรศัพท์และคุณไม่อยากดูแลอะไรเพิ่ม เลือกการทำงานอัตโนมัติเมื่อคุณมีที่ที่ข้อมูลควรไปอยู่แล้ว