Your health data (weight, macros, weigh-ins) as MCP tools β in your own Supabase, zero custody.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
Your health data (weight, body composition, calories, macros, water) as an MCP data layer your AI can query. Zero custody: it lives in a Postgres database in a Supabase project you create and own β nobody but you ever holds your data or your keys. An iOS Shortcut syncs it daily from Apple Health; Claude (or any MCP client) reads it back through a connector that runs entirely inside your own project.
Three ways, pick one β all three end with the same thing: your connector URL, plus your ingest URL and ingest key.
npx @almostjacked/health-mcp setup β fastest, needs Node β₯ 18. Walks
you through logging in to Supabase, picking or creating a project,
applying the schema, deploying both functions, and minting your secrets,
then prints the connector URL and Shortcut config.Supabase's free tier allows 2 active projects, so this fits alongside one other free project you may already have.
Without this, adaptive-TDEE needs about two weeks of daily syncs before it has enough data to work. With it, everything works immediately.
export.zip (can take a few minutes for a long
history).The Shortcut panel has one download button β no signing step, no Terminal. Download the shortcut, install it on your iPhone (iOS asks you to paste in your ingest URL and key during import), then turn on the 9 AM daily automation. Full click-by-click detail (including what to do if a step doesn't survive the iOS import): docs/shortcut.md.
Easiest install (Mac-first): download the signed shortcut on your Mac and double-click it β the two import prompts appear right next to the page's copy buttons, and iCloud syncs the shortcut to your iPhone automatically. (No Mac? Send the file to your phone and answer the prompts there.)
If adding the connector fails with "Couldn't register with [name]'s sign-in service", that's a transient claude.ai hiccup, not a problem with your connector β just try adding it again.
Ask Claude things like:
What's my average calorie intake this week vs last?
Show me my weight trend over the last 90 days.
Has my daily sync stalled? Check get_sync_status.
health-mcp answers "what happened" (your logged weight and calories);
fitness-tools answers "so
what" (TDEE, macros, body fat, 1RM). The get_energy_inputs tool returns
{date, weight, kcal} entries shaped exactly for fitness-tools'
adaptive-tdee β no reformatting needed. Ask Claude:
Get my energy inputs for the last 90 days, then compute my adaptive TDEE with fitness-tools.
adaptive-tdeeneeds at least 10 days that have BOTH a weigh-in and a calorie total β if you skipped step 2, expect ~2 weeks of syncing before the pairing works.
If you also train with Hevy, pair with hevy-mcp for the training side of the picture (routines, logged sets, 1RM trend).
| Tool | Description |
|---|---|
| get_schema | The Postgres schema (two tables) and the metric registry (names, units, classes). Call before writing SQL for the query tool. |
| get_sync_status | Latest date, row count, and days-since-last-entry per metric. Use to detect a stalled daily sync before trusting an analysis. |
| get_recent | Rows for the last N days (default 30), optionally one metric. Daily totals and individual measurements in one date-sorted list. |
| get_daily_summary | All metrics for one day (default: the most recent day with any data): totals plus every weigh-in/measurement. |
| get_stats | Min/max/avg plus a rolling-average series for one metric over a date range (daily/weekly/monthly rollup). |
| query | Escape hatch: run one read-only SQL statement (SELECT or WITHβ¦SELECT) against the schema from get_schema. Writes/DDL rejected; LIMIT 500 enforced. |
| get_energy_inputs | Daily (date, weight, kcal) entries for days with both a calorie total and a weigh-in β shaped exactly for fitness-tools' adaptive-tdee. |
Nothing above touches infrastructure we operate. The two Edge Functions run on your Supabase project; the only thing that ever leaves your device is the Shortcut's HTTP POST straight to your own project's URL.
Zero custody. health-mcp is software you run against infrastructure you own β we (the maintainers) never operate a server that sees your health data or your keys, and there is nothing to disconnect from us because nothing was ever connected to us.
MCP_TOKEN, INGEST_KEY, your Supabase secret key) are
generated by you or the wizard running on your machine, stored as secrets
in your own Supabase project, and β for the stdio/.mcpb install path β
held locally by your MCP client (Claude Desktop / Claude Code) and sent
only to your own project's URL.query tool is SQL-guarded to read-only statements, and the database
role it runs as (health_reader) is granted SELECT only β enforced at
the Postgres level, not just in application code.Prefer Claude Desktop, or running the server yourself instead of the hosted connector? Both use the same Supabase project from step 1 β just a different way of talking to it.
Claude Desktop: download
health-mcp.mcpb,
double-click it, and paste in your Supabase project URL and secret key when
prompted.
Any stdio MCP client (Claude Code, etc.):
MIT β see LICENSE.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/health-data-your-own-supabase)<a href="https://allmcps.com/mcp/health-data-your-own-supabase"><img src="https://allmcps.com/api/badge/health-data-your-own-supabase?style=directory" alt="Health Data (your own Supabase) on AllMCPs" /></a>