Marrow Health
TH
ดาวน์โหลด

มิเรอร์ที่โฮสต์เอง

เซิร์ฟเวอร์ขนาดเล็กบนฮาร์ดแวร์ของคุณที่เก็บสำเนาสดครบชุดของข้อมูล 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 สำหรับจับคู่และแสดงคิวอาร์โค้ดในเบราว์เซอร์ใดก็ได้บนเครือข่ายของคุณ

จับคู่โทรศัพท์

  1. เปิด URL จับคู่บนหน้าจอใดก็ได้ใกล้ตัวคุณ
  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 (อะไรสดใหม่ ล้าสมัย หรือขาดหาย เอเจนต์จึงไม่เข้าใจช่องว่างเป็นข้อเท็จจริง) ทุกการอ่านรับค่าจำนวนวันย้อนหลังหรือจากและถึงตามปฏิทินของโทรศัพท์ เซิร์ฟเวอร์ยังมีพรอมต์สี่ตัว (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 แล้วจึงจับคู่

สิ่งที่ถูกเขียนลงดิสก์

หน่วย: ตัวชี้วัดสุขภาพมาในหน่วย 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

เมื่อไรควรเลือกสิ่งนี้แทนตัวเลือกอื่น

เลือกมิเรอร์เมื่อเอเจนต์ของคุณต้องการข้อมูลขณะที่โทรศัพท์พักอยู่หรือไม่อยู่ใกล้ หรือเมื่อคุณอยากได้ฐานข้อมูลที่ค้นหาได้แทนไฟล์ เลือกเซิร์ฟเวอร์ MCP บนโทรศัพท์เมื่อเอเจนต์ของคุณทำงานใกล้โทรศัพท์และคุณไม่อยากดูแลอะไรเพิ่ม เลือกการทำงานอัตโนมัติเมื่อคุณมีที่ที่ข้อมูลควรไปอยู่แล้ว