health-mcp
An MCP server that securely syncs and queries your health data from Apple Health, storing it in your own Supabase Postgres database and exposing tools for AI assistants to retrieve weight, calories, macros, and more.
README
health-mcp
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.
Apple Health --> "Sync Health Data" Shortcut --> your health-ingest function --> your Postgres
|
Claude <-- run_readonly (SELECT-only) <-- your health-mcp connector function <------+
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.
Pair it with fitness-tools
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
adaptive-tdeeneeds at least 10 days that have BOTH a weigh-in and a calorie total — expect ~2 weeks of syncing before the pairing works.
with fitness-tools.
If you also train with Hevy, pair with hevy-mcp for the training side of the picture (routines, logged sets, 1RM trend).
Install
Three ways to get a working connector. All three end with the same thing: a
Supabase project holding your two tables (daily_totals, measurements),
two Edge Functions (health-mcp, health-ingest), and a connector URL you
add to Claude.
1. Wizard (fastest — one command)
npx @almostjacked/health-mcp setup
Interactive: 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.
Non-interactive (scripting / CI):
npx @almostjacked/health-mcp setup --new --name my-health --region us-east-1 [--org-index N]
# or, against a project you already have:
npx @almostjacked/health-mcp setup --existing <project-ref>
--region is required when running non-interactively (there's no TTY to
prompt for it — the interactive wizard defaults the prompt to us-east-1).
--org-index picks an organization by number when your account belongs to
more than one; omit it if you only have one.
Requires Node >= 18 and a free Supabase account. Any step the wizard can't automate prints the exact manual fallback for that step (see path 2 below) and keeps going.
2. Manual dashboard (~15 min, no terminal)
Point-and-click through the Supabase dashboard yourself — no CLI, no Node. Full click-by-click instructions: docs/setup-manual.md.
Short version: create a project → SQL Editor, paste
packages/core/setup.sql → Edge Functions, create
health-mcp and health-ingest, pasting in the
release bundles
→ Project Settings → Edge Functions, add MCP_TOKEN / INGEST_KEY secrets
(any long random strings) → your connector URL is
https://<project-ref>.supabase.co/functions/v1/health-mcp/<MCP_TOKEN>.
Supabase's free tier allows 2 active projects, so this fits alongside one other free project you may already have.
3. Claude Desktop
Download health-mcp.mcpb,
double-click it, and paste in your Supabase project URL and secret key when
prompted (from either install path above).
Prefer running it yourself instead of the .mcpb? It's a plain stdio
server:
claude mcp add health-mcp -e SUPABASE_URL=<url> -e SUPABASE_SECRET_KEY=<key> -- npx -y @almostjacked/health-mcp
Sync your data: the Shortcut
An iOS Shortcut reads eight metrics out of Apple Health for the last 3 days
and POSTs them to your health-ingest function daily. Generate, install,
and automate it: docs/shortcut.md.
Don't use Shortcuts, or want to backfill older history? The ingest function
accepts the same {"entries": [...]} payload from any HTTP client — script
your own export against it. A dedicated browser-based export.zip
importer/backfill tool is coming in 3c.
Tools
| 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. |
Privacy Policy
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.
- Your data lives only in the Supabase Postgres project you created. We have no access to it, no copy of it, and no way to see it.
- Your keys (
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/.mcpbinstall path — held locally by your MCP client (Claude Desktop / Claude Code) and sent only to your own project's URL. - The Shortcut sends data straight from your phone to your Edge Function URL; it never passes through any server of ours.
- The
querytool is SQL-guarded to read-only statements, and the database role it runs as (health_reader) is grantedSELECTonly — enforced at the Postgres level, not just in application code.
Repo layout
packages/core @almostjacked/health-mcp-core — tools, ingest/normalization, setup.sql
apps/mcp @almostjacked/health-mcp — stdio server, .mcpb, setup wizard
supabase/functions/health-mcp the read connector (deployed to your project)
supabase/functions/health-ingest the write endpoint the Shortcut posts to
Develop
corepack enable
pnpm install
pnpm -r test
pnpm -r typecheck
License
MIT — see LICENSE.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。