health-mcp

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.

Category
Visit Server

README

health-mcp

CI npm MCP Registry

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-tdee needs 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/.mcpb install 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 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.

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.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured