Health Data (your own Supabase) について
health-mcpは、自分の測定値や栄養記録をAIクライアントで分析したい人向けの健康データ用MCPサーバーです。データは本人が所有するSupabaseプロジェクトに保管され、iOSショートカット経由でApple Healthから毎日取り込まれます。読み取り専用のクエリツールを備えています。
主な機能
- 01健康指標と日別サマリーの取得
- 02推移・平均・範囲の確認
- 03指標ごとの同期状態の確認
- 04制限付き読み取り専用SQLクエリ
- 05adaptive-TDEE用データの出力
活用シーン
- 01週ごとのカロリー摂取量の比較
- 02数か月にわたる体重推移の確認
- 03毎日の健康データ同期の停止確認
- 04体重測定値とカロリーデータのfitness-toolsへの受け渡し
MCP 対応
ユーザー自身のSupabaseプロジェクトで動くコネクター、またはローカルのstdioサーバーを通じて健康データツールを提供します。MCPクライアントはデータを読み取れ、queryツールは読み取り専用SQLのみを許可します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
7掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
health-mcp
健康データ(体重、体組成、カロリー、マクロ栄養素、水分)を、AI が参照できる MCP データレイヤーとして利用できます。データを預ける必要はありません。データは、あなた自身が作成して所有する Supabase プロジェクトの Postgres データベースに保存されます。あなた以外の誰かがデータやキーを保持することはありません。iOS ショートカットが Apple Health から毎日同期し、あなた自身のプロジェクト内でのみ動作するコネクターを通じて、Claude(または任意の MCP クライアント)がデータを読み取ります。
セットアップ(4 ステップ、約 20 分)
1. データベースとコネクターを作成する
方法は 3 つあります。どれを選んでも、コネクター URL、取り込み URL、取り込みキーが得られます。
- セットアップページ — ターミナルは不要です。Supabase ダッシュボードで案内に沿って操作します。
npx @almostjacked/health-mcp setup— 最速の方法です。Node ≥ 18 が必要です。Supabase へのログイン、プロジェクトの選択または作成、スキーマの適用、両方の関数のデプロイ、シークレットの発行までを案内し、最後にコネクター URL とショートカットの設定を表示します。- 手動のダッシュボード操作ガイド — セットアップページと同じ手順を記載しています。先に内容を確認したい場合や、手動で進めたい場合にご利用ください。
Supabase の無料プランでは、アクティブなプロジェクトを 2 つまで利用できます。そのため、すでにお持ちの無料プロジェクトに加えて利用できます。
2. 過去のデータを読み込む
読み込まない場合、adaptive-TDEE が動作に必要なデータを得るまで、毎日の同期に約 2 週間かかります。読み込めば、すぐにすべての機能を利用できます。
- iPhone で、ヘルスケアアプリ → プロフィール画像 → すべてのヘルスケアデータを書き出すを選択します。
export.zipが作成されます(履歴が長い場合、数分かかることがあります)。 - セットアップに使うデバイスにファイルを移し、セットアップページの**インポートパネルにドロップします。送信を確定する前に内容を確認できるよう、まずはドライラン**にチェックを入れたままにしてください。
3. 毎日の同期を設定する
**ショートカットパネルにはダウンロードボタンが 1 つあります。署名の手続きもターミナルも不要です。ショートカットをダウンロードして iPhone にインストールします(インポート時に iOS から取り込み URL とキーの入力を求められます)。その後、午前 9 時の毎日のオートメーションを有効にします。各手順の詳しい説明(iOS へのインポート後に手順がうまく反映されない場合の対処法を含む)については、docs/shortcut.md**をご覧ください。
最も簡単なインストール方法(Mac を優先): Mac で署名済みショートカットをダウンロードしてダブルクリックします。インポート時の 2 つの確認画面がページ上のコピーボタンのすぐ隣に表示され、iCloud によってショートカットが iPhone に自動で同期されます。(Mac をお持ちでない場合は、ファイルを iPhone に送り、そこで確認画面に答えてください。)
4. Claude に接続する
- claude.ai → Settings → Connectors → Add custom connectorを開きます。
- ステップ 1 で取得したコネクター URL を貼り付けます。
- 保存します。これで Claude が health-mcp のツールを利用できます。
コネクターを追加するときに 「Couldn't register with [name]'s sign-in service」 というエラーが表示される場合、これは一時的な claude.ai の不具合であり、コネクターに問題があるわけではありません。もう一度追加してみてください。
使い方
Claude に、次のような質問をしてみましょう。
今週の平均摂取カロリーを先週と比べて教えてください。
過去 90 日間の体重の推移を表示してください。
毎日の同期が止まっていませんか?get_sync_status を確認してください。
fitness-tools と組み合わせる
health-mcp は「何が起きたか」(記録した体重とカロリー)に答え、
fitness-tools は「それが何を意味するか」(TDEE、マクロ栄養素、体脂肪率、1RM)に答えます。get_energy_inputs ツールは、fitness-tools の
adaptive-tdee にそのまま使える形式の {date, weight, kcal} エントリーを返すため、形式を変換する必要はありません。Claude に次のように尋ねてください。
過去 90 日分のエネルギー入力を取得して、fitness-tools で適応型 TDEE を計算してください。
adaptive-tdeeには、体重測定とカロリー合計の両方が記録された日が少なくとも 10 日必要です。手順 2 を省略した場合は、連携が機能するまでに約 2 週間の同期が必要です。
Hevy も使ってトレーニングしている場合は、 hevy-mcp と組み合わせることで、トレーニングの情報(ルーティン、記録したセット、1RM の推移)も確認できます。
ツール
| ツール | 説明 |
|---|---|
| get_schema | Postgres スキーマ(2 つのテーブル)とメトリクスレジストリ(名称、単位、クラス)です。クエリツールで SQL を記述する前に呼び出してください。 |
| get_sync_status | メトリクスごとの最新日、行数、最終エントリーからの経過日数です。分析を信頼する前に、毎日の同期が停止していないか確認するために使います。 |
| get_recent | 過去 N 日分(デフォルトは 30 日)の行です。必要に応じてメトリクスを 1 つに絞れます。日次合計と個々の測定値を、日付順に並べた 1 つのリストで返します。 |
| get_daily_summary | 1 日分の全メトリクス(デフォルトはデータがある最新日)です。合計に加えて、すべての体重測定値・測定値を返します。 |
| get_stats | 日付範囲内の 1 つのメトリクスについて、最小値/最大値/平均値と移動平均の系列(毎日/毎週/毎月の集計)を返します。 |
| query | 最終手段として、get_schema のスキーマに対して読み取り専用の SQL 文(SELECT または WITH…SELECT)を 1 つ実行します。書き込み/DDL は拒否され、LIMIT 500 が強制されます。 |
| get_energy_inputs | カロリー合計と体重測定の両方がある日の、日付・体重・カロリーのエントリーです。fitness-tools の adaptive-tdee にそのまま使える形式です。 |
アーキテクチャ
Apple Health --> "Sync Health Data" Shortcut --> your health-ingest function --> your Postgres
|
Claude <-- run_readonly (SELECT-only) <-- your health-mcp connector function <------+
上記のいずれも、私たちが運用するインフラには触れません。2 つの Edge Functions はお客様の Supabase プロジェクト上で動作します。デバイスの外に出るのは、Shortcut からお客様自身のプロジェクトの URL へ直接送信される HTTP POST だけです。
プライバシーポリシー
データを預かることは一切ありません。 health-mcp は、お客様が所有するインフラ上で実行するソフトウェアです。私たち(メンテナー)が、お客様の健康データやキーを参照するサーバーを運用することはありません。また、私たちに接続されたことがないため、私たちとの接続を解除する必要もありません。
- お客様のデータは、お客様が作成した Supabase Postgres プロジェクト内にのみ保存されます。私たちはデータにアクセスできず、コピーも保持せず、閲覧する手段もありません。
- お客様のキー(
MCP_TOKEN、INGEST_KEY、Supabase のシークレットキー)は、お客様自身またはお客様のマシン上で実行されるウィザードが生成します。お客様自身の Supabase プロジェクトにシークレットとして保存され、stdio/.mcpbでインストールした場合は MCP クライアント(Claude Desktop/Claude Code)がローカルで保持し、お客様自身のプロジェクトの URL にのみ送信します。 - Shortcut は、データをスマートフォンから Edge Function の URL へ直接送信します。私たちのサーバーを経由することはありません。
queryツールは SQL を読み取り専用の文に制限しており、実行に使うデータベースロール(health_reader)に付与されているのはSELECT権限だけです。この制限はアプリケーションコードだけでなく、Postgres のレベルで強制されます。
その他のクライアント
Claude Desktop を使いたい場合、またはホスト型コネクターではなく自分でサーバーを実行したい場合も、どちらも手順 1 と同じ Supabase プロジェクトを使います。接続方法が異なるだけです。
Claude Desktop: health-mcp.mcpb をダウンロードしてダブルクリックし、プロンプトが表示されたら Supabase プロジェクトの URL とシークレットキーを貼り付けてください。
stdio MCP クライアント全般(Claude Code など):
claude mcp add health-mcp -e SUPABASE_URL=<url> -e SUPABASE_SECRET_KEY=<key> -- npx -y @almostjacked/health-mcp
リポジトリの構成
packages/core @almostjacked/health-mcp-core — tools, ingest/normalization, setup.sql
apps/mcp @almostjacked/health-mcp — stdio server, .mcpb, setup wizard
web the setup page (provision + import + Shortcut panels)
supabase/functions/health-mcp the read connector (deployed to your project)
supabase/functions/health-ingest the write endpoint the Shortcut posts to
開発
corepack enable
pnpm install
pnpm -r test
pnpm -r typecheck
ライセンス
MIT — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。