Bridges Claude Desktop to the MorningForm web app by proxying stdio MCP calls to its HTTPS server. Morning Form is a mobile health optimization platform that combines user assessments, wearable data from Apple Health, Garmin, Whoop, Oura, and Fitbit, and personalized protocol recommendations. The server lets you interact with the app's state engine, retrieve user profiles and check-in data, and query its hybrid retrieval system that combines vector embeddings with lexical and graph search. Useful if you're building agents that need to read health insights, generate daily guidance, or analyze activation funnels without leaving your editor. The underlying app uses Prisma for persistence and Terra for most wearable integrations.
Morning Form is a premium mobile-first state-optimization web app covering assessment, profile generation, protocol recommendation, daily guidance, check-ins, insights, and wearable integrations.
cd /Users/reubenselby/Desktop/morning-form
npm install
npx prisma db push
npm run db:seed
npm run dev
App URL:
http://localhost:3000
Demo user seeded locally:
demo@morningform.com
main: built MVPfeat/real-health-oauth: review branch for real provider connection wiringOpen PR:
https://github.com/contactxyz-admin/morning-form/pull/1
Morning Form currently supports:
Detailed provider setup lives in:
npx tsx scripts/metrics/activation-funnel.ts --signup-since 2026-03-22 --signup-until 2026-04-21. Prints CSV + human-readable summary. See docs/plans/2026-04-21-002-feat-activation-funnel-instrumentation-plan.md.The retest loop (off by default, behind RETEST_LOOP_ENABLED) runs the "return leg": a lab panel completes a Draw, the next retest is scheduled, a daily Vercel cron (/api/cron/retest-nudge, gated by CRON_SECRET) sends a capped nudge sequence, and retention-to-retest is measured (nudge-attributed = loop-caused). The metrics CLI above appends a retest-retention section when the flag is on. Backfill existing users (run dark, before the flip): npx tsx scripts/retest/backfill-baseline-draws.ts (dry run) then --apply. Tunables live in src/lib/retest/constants.ts. See docs/runbooks/retest-loop-go-live.md and docs/plans/2026-06-17-001-feat-return-leg-retest-loop-plan.md.
Hybrid retrieval is enabled when an embedding provider is configured. It embeds only SourceChunk.text, stores one VectorEmbedding per chunk, and keeps search_graph_nodes on the same public contract while ranking with vector + lexical + graph RRF. Set HYBRID_RETRIEVAL_ENABLED=false to roll back to legacy lexical/graph behavior.
Production rollout:
npx prisma generate
npx prisma db push
npx tsx scripts/backfill-embeddings.ts --dry-run --estimate
npx tsx scripts/backfill-embeddings.ts --batch 80
See docs/runbooks/hybrid-retrieval-production.md and docs/runbooks/backfill-embeddings.md.
MORNINGFORM_TOKEN*secretBearer token issued from https://morning-form.vercel.app/settings/integrations/claude
MORNINGFORM_URLServer endpoint override. Defaults to the production MorningForm host. Only override for local dev — controls where your bearer token is sent.