mcpField
M
MetricBridge Apple Health

MetricBridge Apple Health

ローカル
healthexport.devヘルスケア10今日更新

MetricBridge Apple Health について

MetricBridge Apple Healthは、エクスポートしたApple Healthデータをエージェントから照会できるローカルMCPサーバーです。個人の記録を分析したい人向けで、読み取り専用で動作し、サーバーへのネットワークリクエストは行いません。

主な機能

  1. 01194項目のApple Health指標を照会
  2. 0216個の読み取り専用ツールと22個のプロンプト
  3. 03傾向と期間の比較
  4. 04結果に網羅範囲、単位、日付を表示
  5. 05ネットワークリクエストなしでローカル出力を読み取り

活用シーン

  1. 01今週と先週のHRVを比較
  2. 02日付を指定して睡眠やワークアウトを確認
  3. 03エクスポートの鮮度と指標の網羅範囲を確認

MCP 対応

このMCPサーバーは、ローカルstdio経由でApple Healthの指標、ワークアウト、睡眠セッション、イベント、プロフィール情報、関連する分析ツールをMCPクライアントに提供します。データはローカルのエクスポートから読み取ります。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ
パッケージ
npmhealth-export-mcp1.8.0
mcpbhealth-export.mcpb1.8.0

ツール

16

掲載時のツール一覧 · 今日に更新

このツールにパラメーターはありません。

詳細

health-export-mcp

あなた自身の Apple Health データを扱う MCP サーバーです。 194 種類の指標、16 個の読み取り専用ツール、22 個のプロンプトを、依存関係なし、アカウント不要、当社のサーバーを介さずにローカルの stdio 経由で利用できます。エージェントは単位、日付範囲、データの網羅状況を含む JSON を受け取り、あなたの数値に基づいて回答します。

npm CI npm provenance dependencies: 0 License: MIT Glama score

ドキュメントとクライアント別の設定:healthexport.dev/mcp · エージェントは SKILL.md からセットアップを実行できます · プライバシーについて:サーバーはローカルファイルを読み取るだけで、ネットワークリクエストを行いません。そのため、健康データが当社やクラウド AI に送信されることはありません。

インストール:コマンド 1 つ

claude mcp add health-export -- npx -y health-export-mcp

Mac ではこれだけでインストールできます。1.7.3 以降、サーバーは MetricBridge アプリの iCloud Drive フォルダーを自動で見つけます。Windows または Linux の場合、あるいは別のフォルダーにあるエクスポートを使う場合は、-- の前に --env "HEALTH_DATA_DIR=/path/to/folder" を追加してください。Node.js 18 以降が必要です。Claude Desktop: 代わりに health-export.mcpb を開いてください(JSON も PATH 上の Node も不要です)。Cursor、VS Code、opencode、OpenClaw、Hermes の場合は、AGENTS.md を参照してください。

次に 「health-export を使って、今週の HRV は先週と比べてどうでしたか?」 と尋ねてください。エージェントは get_trends を呼び出し、出典情報を伴う数値を取得します。数値には、単位、正確な日付範囲、各期間のデータが完全かどうか、エクスポートにどれだけの履歴が含まれているかが示されます。以下は 1.7.3 での実際の出力です(組み込みの --demo データセットからの出力です。公開できるよう合成データを使用しています。実際のエクスポートでも同じフィールドが返され、透かしは付きません)。

[SYNTHETIC DEMO DATA] {"metric":"heart_rate_variability","unit":"ms","window":7,"recent":50.859,"prior":51.306,
 "change":-0.447,"changePercent":-0.871,"direction":"flat","recentRange":{"from":"2026-08-12","to":"2026-08-18"},
 "recentDays":7,"priorDays":7,"windowSatisfied":true,"coverage":{"firstDate":"2025-07-15","lastDate":"2026-08-18","days":400}}

まだ iPhone をお持ちでない場合は? claude mcp add health-export-demo -- npx -y health-export-mcp --demo を実行すると、透かし入りの合成データセットを使って、スマートフォンに何もインストールする前に、30 秒ですべてのツールを試せます。

実際のデータを使う(初回は約 5 分、iPhone が必要)

  1. エクスポートします。 iPhone に MetricBridge をインストールし、ヘルスケアの読み取りアクセスを許可して、今すぐエクスポートをタップします。iCloud Drive(またはフォルダー、LAN)に .health-cache.json が書き込まれます。アプリは 7 日間の無料トライアル後、買い切りで 1 回購入($24.99)となり、サブスクリプションはありません。このサーバーは MIT ライセンスで、無料です。
  2. 接続します。 上記のコマンド(Claude Code)、.mcpb(Claude Desktop)、または AGENTS.md にあるクライアント用の設定ブロックを使います。
  3. ファイルが届いたことを確認します。 npx -y health-export-mcp --doctor を実行すると、選択されたフォルダーとその理由、各ファイルの経過時間、データの新しさが表示されます。新しいエクスポートが Mac に届くまで、iCloud では数分かかることがあります。

Apple Health は iCloud、フォルダー、または LAN にエクスポートされます。health-export-mcp はそのデータを読み取り、AI エージェントに 16 個のクエリツールを提供します


health-export-mcp とは?

Apple Health のエクスポートデータを、AI エージェントが自然言語で問い合わせられるツールに変換する MCP サーバーです。HRV、睡眠、安静時心拍数、歩数、ワークアウト、VO₂ max など、180 種類以上のデータに対応しています。

  • 対象となる方: 古い CSV ではなく、実際の健康データを AI に分析させたい方。
  • 対象外のもの: クラウドサービスではありません。開発者のサーバーを経由せず、データの送信先はご自身で指定した場所だけです。
  • セットアップ: エクスポートしたデータの場所をサーバーに指定し、AI クライアントに追加します。
  • データの取得元: MetricBridge iOS アプリ(旧 Health Export AI。 App Store から入手できます)が、このサーバーが読み込むエクスポートデータを書き出します。サーバーの serverInfo に表示される名前は引き続き health-export-ai で、npm パッケージ名とリポジトリ名も変更されていません。

エクスポートしたばかりで、Mac にまだ反映されていませんか? iCloud でファイルが同期されるまで数分かかることがあるため、アプリで「実行」をタップしてから 60 秒後に確認しても、タイムスタンプが古いままの場合があります。get_mcp_status で lastDataDate と日中の lastWrite を確認すると、「同期中」なのか「まだ届いていない」のかをすばやく見分けられます。

iPhone がなくてもお試しいただけます: npx -y health-export-mcp --demo(またはクローン内で node server.mjs --demo)を実行すると、決定論的な合成データセット(400 日分のデータ、ワークアウト、イベント、睡眠セッション)が提供され、すべての回答に合成データであることが明記されます。または npm test を実行すると、サンプルキャッシュを書き込み、すべてのツールをテストできます。


Apple Health を AI エージェントに接続する:クイックスタート

1. Apple Health のデータを同期する

コンパニオン iOS アプリの MetricBridge は、Apple Health のデータを読み取り専用で、自動かつプライベートにエクスポートします。この MCP サーバーで使用するには、読み込み可能な保存先にエクスポートしてください。

MetricBridge を App Store からダウンロード

保存先備考
iCloud Drive(デフォルト)Mac が同期済みのフォルダーを自動的に読み込みます
ローカルフォルダーMac と同期する任意のフォルダー(Dropbox、Google Drive、OneDrive、…)
LAN(HTTP / WebSocket)サーバーに直接送信します。Tailscale 経由での使用に最適です

MCP 以外のツール(ChatGPT、n8n、Home Assistant)をお使いですか? アプリから、これらのツールが直接読み込む Webhook に POST することもできます。詳しくは対応サービスをご覧ください。

2. サーバーをエージェントに追加する

最速の方法、コマンド1つ(Claude Code):

claude mcp add health-export -- npx -y health-export-mcp
# Windows, Linux, or an export outside iCloud Drive:
claude mcp add health-export --env "HEALTH_DATA_DIR=/path/to/folder" -- npx -y health-export-mcp

-- より前はすべて claude mcp add のオプションで、後ろはサーバーを起動するコマンドです。Mac では、HEALTH_DATA_DIR が未設定の場合、サーバーはアプリの iCloud Drive フォルダーを読み取ります(1.7.3 以降)。手動でそのフォルダーを指定する場合は、フォルダー名にスペースが含まれるためダブルクォートで囲み、シェルではクォートされた ~ が展開されないため $HOME を使用してください。--scope user を追加すると、すべてのプロジェクトでサーバーを利用できるようになります(デフォルトのスコープは現在のプロジェクトのみです)。claude mcp list で確認してください。

Claude Desktop(~/Library/Application Support/Claude/claude_desktop_config.json)および mcpServers ブロックを受け付けるすべてのクライアント:

{
  "mcpServers": {
    "health-export": {
      "command": "npx",
      "args": ["-y", "health-export-mcp"]
    }
  }
}

Mac 以外で使用する場合、または別のフォルダーを指定する場合は、エントリーに "env": { "HEALTH_DATA_DIR": "/path/to/folder" } を追加してください(先頭の ~ はサーバーによって展開されます)。npx -y はインストールを求めずに実行時に公開パッケージを取得するため(npm がパッケージの完全性を検証します)、クローンや絶対パスなしでどこでも実行できます。サーバーは HEALTH_DATA_DIR の先頭にある ~ を展開するため、JSON ではそのまま指定できます。検証済みのローカルチェックアウトを固定して使う場合は、"command": "node", "args": ["REPLACE_WITH_ABSOLUTE_PATH/server.mjs"] を使用し、リポジトリ内で node -e "console.log(process.cwd()+'/server.mjs')" を実行してパスを取得してください。 または、JSON の設定を省略し、health-export.mcpb を Claude Desktop → Settings → Extensions にドラッグします。

クローンから自動設定する場合:

git clone https://github.com/PhilipAD/health-export-mcp.git
cd health-export-mcp
node apply-mcp-config.mjs     # detects installed clients and writes the config for you

Cursor / VS Code: node gen-deeplinks.mjs を実行すると、ワンクリックでインストールできるリンクが表示されます。 opencode / OpenClaw / Hermes: 正確なブロックは AGENTS.md を参照してください。形式は同じで、クライアントごとに1つです。

3. エージェントに質問する

クライアントを再起動して、次のように試してください。

「health-export を使って、今週と先週の平均 HRV を比較してください」


Claude、Cursor、ChatGPT、OpenClaw、Hermes で利用できます

クライアント / エージェント統合方法方法
Claude Codeネイティブ MCPclaude mcp add ... -- npx -y health-export-mcp
Claude Desktopネイティブ MCP.mcpb バンドル、または mcpServers ブロック
Cursorネイティブ MCPワンクリックのディープリンク、または ~/.cursor/mcp.json
opencodeネイティブ MCPopencode.json の mcp ブロック
OpenClawネイティブ MCPMCP 設定にサーバーブロックを追加
Hermesネイティブ MCPエージェントの MCP 設定にサーバーブロックを追加
VS Code(Copilot / Continue)ネイティブ MCPワンクリックのディープリンク
ChatGPT · Gemini · GrokWebhook*アプリの webhook エクスポートを利用
n8n · Home AssistantWebhook*エクスポートされた JSON で自動化をトリガー

*MCP クライアントは、このサーバーに stdio 経由で直接クエリを送信します。ChatGPT / Gemini / Grok / n8n / Home Assistant は MCP に対応していないため、iOS アプリのトークン認証付き webhook エクスポートを通じて、同じ Apple Health データを利用します。


16 個の MCP ツール

リクエスト/レスポンスの例を含む完全なリファレンスは、healthexport.dev/mcp をご覧ください。

ツール機能
get_mcp_statusヘルスチェック:データソース、指標/ワークアウトの件数、存在するコンテキストファイル、最新データの日付、および freshness の概要を確認します。最初に呼び出してください。
get_freshnessエクスポートがどの程度最新かを確認します。指定されたしきい値(デフォルトは 26 h、HEALTH_STALE_AFTER_HOURS、または maxAgeHours)に照らした stale、age_hours、as_of、last_data_date、ファイルごとの書き込み時刻を返します。status --max-age の cron ゲートと同じルールを使用します。
list_metrics利用可能なすべての指標と、単位、日数、日付範囲を返します。
get_health_metrics指標(またはすべての指標)の指定日付範囲における日次値と、集計値(avg/sum/min/max/latest)を返します。filterDays(negate を指定して、記録済みイベントがある日に絞り込み)に対応しています。
get_trends直近 N 日間と、その前の N 日間を比較し、変化量、変化率、傾向を返します。excludeTravelDays に対応しています。
compare_periods指標を任意の 2 つの期間(A 対 B)で比較するか、記録済みイベントを基準に anchor: {eventId, days} で比較します(イベント当日は両期間から除外されます)。
get_structured_export指定した指標/期間の整形済み JSON を、カーソルによるページネーション付きで返します。
get_intradayアプリの時間単位の自動化機能(health-intraday.json、アプリ 1.4 以降)による、今日の時間ごとのデータを返します。実行のたびに置き換えられます。
query_health_data「先月の平均 HRV」 のような自然言語での問い合わせを、構造化された結果に振り分ける便利な機能です。
list_events記録済みのコンテキストイベント(服薬、習慣、受診、生活、勤務シフト、エピソード、旅行)を、タイプ/タグ/日付で絞り込んで返します。
get_profileオプトインされたコンテキスト項目(疾患、服薬、目標、アレルギー、メモ)と presentFields を返します。存在しない項目は非公開扱いであり、「なし」を意味するものではありません。
get_workoutsアクティビティ/日付でワークアウトを検索し、ページネーション付きで返します。エクスポートに含まれている場合は、心拍数、ランニングダイナミクス、サイクリングパワー、インターバル、hasRoute も含まれます。
get_sleep_sessions起床日に割り当てられた睡眠セッションをまとめて返します。分割された夜間の睡眠は、そのまま返されます。
get_cycle_context記録された月経開始日から導出した、周期日と大まかなフェーズを返します。予測は行いません。
correlate_metrics2 つの指標間のピアソン相関を、0〜3 日のラグで算出します。常に、相関は因果関係を示すものではないと明記します。
resolve_metricあらゆる表記(steps、StepCount、Body Weight、hrv)の標準名と単位、正確な計算式を含む単位のバリエーション、任意の {value, unit} 変換、およびエクスポートにそのデータが含まれているかどうかを返します。曖昧な語は推測せず、候補を返します。データツールも同じ別名を受け付け、resolvedFrom を返します。エクスポートにデータソースごとの帰属情報が含まれる場合(日次ポイントに src/by を書き込むアプリビルドと、キャッシュスキーマのマイナー 2 で health-sources.json を使用)、回答には sources ブロックが追加されます。このブロックには、エクスポートにデータを提供したデバイス、各指標で採用されたデータソース、優先順位のルールが記載され、sourceMerge は不一致を可視化します。それより古いエクスポートでは、利用できないことが示されます。

カバレッジ: アクティビティ、心臓、HRV、モビリティ、呼吸、身体、睡眠、聴覚、栄養に関する 194 種類の Apple Health 指標に加え、ワークアウトにも対応しています。データの回答には正確な coverage ブロックが含まれ、単一指標の回答では、期間内の記録済みイベントが segmentBoundaries として示されます。これにより、服薬開始や生活の変化をまたぐ平均値が、同一の状態における値であるかのように見えることを防ぎます。

データファイル

日次キャッシュ(.health-cache.json)とワークアウトキャッシュには、任意のコンテキストファイルを追加できます。いずれも読み取り専用で、すべて任意です。health-events.json(ログ記録用)、health-profile.json(オプトインのコンテキスト)、health-sessions.json(睡眠セッション)、health-cycles.json(観測された周期の開始日)、health-days.json(タイムゾーン変更ログ)があります。ファイルが存在しない場合は、決して「データなし」とせず、注記とともに available:false として報告します。形式については、docs/SCHEMA-CONTRACTS.md をご覧ください。

知っておくと便利なパターンが 2 つあります。自分の AI から親の Apple Health に問い合わせる(同意を優先し、親のスマートフォンを正本とします)方法と、Shortcuts 経由で Apple Health にデータを記録する方法です(サーバーとアプリは厳密に読み取り専用のままです)。

MCP プロンプト

サーバーには、prompts/list / prompts/get 経由で利用できる 22 個のプロンプトが含まれています。日次ブリーフ、週次レビュー、医師の診察準備、前回の診察からの変化、睡眠の質と規則性、HRV の傾向、トレーニングとレース週のレビュー、ゾーン滞在時間、N-of-1 実験、服薬前後の比較、GLP-1 の用量ステップ比較、断酒の節目、シフト期間の比較、旅行を考慮した誠実な月次レビュー、周期を考慮した傾向の読み取り、介護者向けチェックイン、血糖値の日次サマリー、長期的な活動の記録、データカバレッジ監査、プロフィールを考慮したコンテキストの初期設定です。どのプロンプトもデータカバレッジの正確な説明を最初に行い、データを診断に結び付けることはありません。

デモモード

node server.mjs --demo(または HEALTH_DEMO=1)を実行すると、決定論的な合成データセットが提供されます。固定日を基準とし、シード付き PRNG を使って、約 400 日分の約 15 種類の指標、インターバルを含む 30 件のワークアウト、8 件のイベント、プロフィール、60 件の睡眠セッション、周期の開始日、タイムゾーンの変更を生成します。すべての回答には demo: true と [SYNTHETIC DEMO DATA] のテキスト接頭辞が付くため、デモ出力が実際のエクスポートと誤認されることはありません。

CLI
node server.mjs --doctor            # diagnostics: files, sizes, schema, freshness, pairing
node server.mjs status --max-age 24 # exit 0 if data is fresh, 1 if stale (cron gate)
node server.mjs receive             # standalone LAN receiver (binds 127.0.0.1 by default)
node server.mjs --help

AI への質問例

"What has my resting heart rate done over the last 30 days?"
"Compare my deep sleep this week vs last week."
"Is my VO₂ max trending up or down this quarter?"
"Give me a clean JSON export of HRV, RHR and sleep for the last 14 days."
"Correlate my step count with my sleep duration this month."

ユースケース

  • AI ヘルスコーチ: 実際の HRV、安静時心拍数、睡眠データをエージェントに分析させ、一般論ではなく実際の数値に基づいて、負荷をかけるときと回復するときを提案できます。
  • トレーニング負荷の分析: ワークアウト、VO₂ max、心拍数の傾向を取得し、エージェントにオーバーリーチの兆候を検出させたり、フィットネスの向上をグラフ化させたり、トレーニング期間のペース配分を提案させたりできます。
  • 睡眠の相関関係: 深い睡眠の時間と、歩数、カフェイン、遅い時間のワークアウト、画面を見る時間などをエージェントに関連付けさせ、よりよく眠れた夜に何が伴っていたかを確認できます(因果関係ではなく、関連性を示します)。
  • 定量化された自己のダッシュボード: あらゆる指標と日付範囲のクリーンな JSON をノートブック、スプレッドシート、または LLM で構築したダッシュボードに直接取り込み、自分のセルフトラッキングに活用できます。
  • 個人研究と実験: N-of-1 実験(サプリメント、ルーティン、プロトコルの変更など)を行い、エージェントに 194 種類の指標で実施前後の期間を比較させ、何が変化したかを確認できます。

ウェルネス製品やコーチング製品を開発していますか?

このサーバーは、MetricBridge iOS アプリがユーザー自身のデバイス上に書き込むファイルを読み取ります。経路上に一元管理されたヘルスデータ処理業者は存在しません。同じアプリから署名付き JSON(Standard Webhooks v1、公開済みの JSON Schemas)をお客様のエンドポイントに直接 POST できるため、アプリに SDK を組み込んだり、ベンダーのサーバーにデータを保持させたりすることなく、ユーザー自身の Apple Health データを製品に取り込めます。提供内容、定額料金、利用範囲については、healthexport.dev/platforms をご覧ください。統合ガイドと依存関係ゼロの適合性キットについては、healthexport.dev/docs/platforms をご覧ください。ウェルネス用途に限定され、エンドユーザーの指示に基づいて使用します。臨床用途や HIPAA 対応には対応していません。


データを連携するアプリ

MetricBridge ダッシュボード    194 件の Apple Health 指標    iCloud、フォルダー、LAN、Webhook へのエクスポート

MetricBridge は、Apple Health のデータをエージェントに自動でエクスポートします。

App Store からダウンロード →


プライバシーとセキュリティ

エクスポートからサーバーが読み取る、健康データ以外の唯一の情報は _meta.license です。これはアプリが次の 2 種類の形式で書き込むマーカーです:{"state": "trial", "daysRemaining": N} または {"state": "unlocked"}。トライアル中の新しいエクスポートでは、トライアルの終了時期を示す一文が get_freshness に追加されます。ロック解除済みのエクスポートには何も追加されません。ネットワークリクエストは発生せず、情報がどこかに送信されることもありません。

  • 読み取り専用。 サーバーはエクスポートされたデータを読み取るだけで、HealthKit にアクセスしたり、データを書き戻したりすることはありません。
  • ローカル優先。 stdio を介してご利用のマシン上で動作します。経路上に開発者のサーバーはありません。
  • ペアリングは任意です。 アクセスを制限するには、PAIRING_SECRET に iOS アプリの画面(設定 → エージェントのペアリング)に表示されるコードを設定します。
  • 暗号化エクスポート(任意)。 iOS アプリで「エクスポートの暗号化」を有効にした場合、同じパスフレーズを HEALTH_EXPORT_PASSPHRASE(または HEALTH_EXPORT_PASSPHRASE_FILE)に設定すると、サーバーがご利用のマシン上でデータを復号します。暗号化エクスポートをご覧ください。
  • テレメトリなし。 サーバーはネットワークリクエストを行いません。get_mcp_status には、連携アプリのウェブサイト(および App Store ページ)への固定リンクが常に 1 つ含まれているため、この連携機能の提供元をインストール元までたどれます。どちらのリンクにも、すべてのユーザーで同一の固定キャンペーンラベル(utm_source=mcp、utm_medium=agent-tool、utm_campaign=mcp-unlock、ct=mcpserver、ppid=…)が付いており、ユーザーやデータに関する情報は含まれません。リンクを開いた場合にのみカウントされます。
  • 監査可能。 実行時の依存関係はなく、プレーンな ES モジュール約 4,000 行で構成され、ビルド手順もありません。npm 上のものはこのリポジトリ内のものと同一で、npm の来歴情報から各 tarball をビルドしたコミットとワークフローをたどれます。
  • 署名済みリリース。 ホストされているアーティファクトには minisign 署名とチェックサムが付いています。リリースの検証をご覧ください。

暗号化エクスポート

iOS アプリでは、選択したパスフレーズを使ってエクスポート内容を暗号化できます(設定 > エクスポートの暗号化で有効にし、保存先ごとに設定します:iCloud Drive、フォルダー、サーバー、ローカルネットワーク)。サーバーにも同じパスフレーズを設定すると、このマシン上で各ファイルがメモリ内で透過的に復号されます。

HEALTH_EXPORT_PASSPHRASE='your passphrase' HEALTH_DATA_DIR=... node server.mjs
# or keep it out of your shell history and process list:
HEALTH_EXPORT_PASSPHRASE_FILE=~/.config/metricbridge/passphrase HEALTH_DATA_DIR=... node server.mjs

両方が設定されている場合は、HEALTH_EXPORT_PASSPHRASE が優先されます。ファイル末尾の改行は 1 つ無視され、空の値は未設定として扱われます。.mcpb バンドルには、省略可能な エクスポートのパスフレーズ フィールドがあります。どちらの場合も、平文のエクスポートは引き続き利用できます。パスフレーズが未設定または間違っている場合や、ファイルの完全性チェックに失敗した場合は、その旨が報告されます(get_mcp_status は encrypted: true と理由を示し、--doctor は encryption: 行を出力します)。「データなし」とは報告されません。パスフレーズがログに記録されたり、表示されたりすることはありません。

LAN レシーバー(HEALTH_LISTEN=1)は、同じ変数を使って暗号化されたプッシュを復号し、機械可読な reason(passphrase_missing、passphrase_mismatch、tampered、malformed、unsupported_version、passphrase_file_unreadable、encryption_required)とともに 422 を返します。この接続ではペアリングトークンが平文の http ヘッダーで送信されるため、アプリがこの接続を暗号化するようになったら、HEALTH_REQUIRE_ENCRYPTED=1 を設定して平文のプッシュを拒否してください。Webhook やスクリプトなどで、メッセージ本文を自分で復号するには、次のようにします。

HEALTH_EXPORT_PASSPHRASE='...' node envelope.mjs open body.json     # prints the decrypted JSON

形式(metricbridge.enc v1、envelope.mjs、node:crypto のみを使用):JSON オブジェクト {format, v, alg: "A256GCM", kdf: "PBKDF2-HMAC-SHA256", iter, salt, kcv, nonce, ct}。 master = PBKDF2-HMAC-SHA256(NFC(passphrase), salt[16], iter)(OWASP の推奨値である 600,000 回の反復)から、HKDF-SHA256 を使って AES-256-GCM キーと 8 バイトの鍵チェック値を導出します。メッセージごとにランダムな 12 バイトのノンスを使用します。すべてのヘッダーフィールドは、次の文字列を AAD としてバインドされます。 metricbridge.enc|v=1|alg=A256GCM|kdf=PBKDF2-HMAC-SHA256|iter=<n>|salt=<b64>|kcv=<b64>|nonce=<b64>。 Base64 はパディング付きの正規形式です。test/fixtures/ には、iOS アプリの Swift エンコーダーとこのモジュールで作成したエンベロープが格納されています。envelope.test.mjs では、どちらも復号でき、バイト単位で再生成できることを検証します。

保護されるもの: 保存先(iCloud Drive、同期フォルダー、Webhook ホストのストレージ)に保存されたエクスポート、通信中の LAN プッシュ、封印されたすべてのファイルの完全性です。保護されないもの: ロック解除されたスマートフォン、このコンピューター(パスフレーズを保持しています)、メタデータ(サイズ、タイミング)、封印されたファイル全体のロールバックやリプレイ、アプリから手動で共有するファイル、弱いパスフレーズ(ファイルを持つ人は誰でもオフラインで推測できます。アプリでは 8 文字以上が必要です)。


リリースの検証

セットアップスキルで使用される、healthexport.dev/mcp/ でホストされているサーバーアーティファクトには minisign 署名 が付いており、すべてのダウンロードには SHA-256 チェックサム が付いています。署名用公開鍵は このリポジトリ内(minisign.pub)と SKILL.md で公開されています。鍵はウェブサイトだけでなく、ここからピン留めしてください。これにより、ウェブサイトだけが侵害されても、アーティファクトと鍵の両方がすり替えられることを防げます。

PUBKEY='RWS6TxVWSKUblYkx7Db6ZpmvHALwHpznZpjaED/FlZj+PpxSlel0MxHZ'   # = minisign.pub in this repo
curl -fsSL https://healthexport.dev/mcp/SHA256SUMS         -o SHA256SUMS
curl -fsSL https://healthexport.dev/mcp/SHA256SUMS.minisig -o SHA256SUMS.minisig
minisign -Vm SHA256SUMS -P "$PUBKEY" || { echo "signature INVALID, do not run"; exit 1; }   # fail closed
curl -fsSL https://healthexport.dev/mcp/server.mjs -o server.mjs
shasum -a 256 --ignore-missing -c SHA256SUMS || { echo "checksum mismatch, do not run"; exit 1; }

上記のピン留め済みでチェックサム検証済みのダウンロードが、最も厳格な方法です。一方、npx -y health-export-mcp は実行時に npm で公開されている最新バージョンを解決します(npm には独自のパッケージ完全性検証機能があります)。GitHub リリースには SHA256SUMS ファイルと CycloneDX SBOM(*.cdx.json)が含まれます。同じ鍵で作成された SHA256SUMS.minisig は、メンテナーがそのリリースにローカルで署名した時点で添付されるため、信頼する前にファイルの有無を確認してください。npm のプロベナンスと脆弱性を非公開で報告する方法を含む、ポリシーの全文は SECURITY.md をご覧ください。セキュリティの概要:https://healthexport.dev/security。


要件

  • Node.js ≥ 18(node -v)。
  • MetricBridge からエクスポートした .health-cache.json を含むフォルダー。または、npm test を実行してサンプルを生成してください。
  • MCP 互換クライアント(Claude Desktop、Cursor、opencode、OpenClaw、Hermes、VS Code)、または Webhook エクスポートを読み取れるツール。

よくある質問

Apple Health のデータを Claude/ChatGPT/AI エージェントに取り込むにはどうすればよいですか? health-export-mcpをインストールし、MetricBridge iOS アプリで Apple Health のデータをエクスポート(iCloud、フォルダー、または LAN)してから、MCP サーバーを AI クライアントに追加します。エージェントは、自然言語で Apple Health の指標を問い合わせられるようになります。(ChatGPT などの MCP 以外のツールは、代わりにアプリの Webhook エクスポートを読み取ります。)

健康データはサーバーに送信されますか? 当社には送信されません。MCP サーバーはローカルで動作し、設定したエクスポートファイルまたはエンドポイントのみを読み取ります。開発者のサーバーが間に入ることはありません。iOS のエクスポート先(iCloud、LAN、Webhook)は、すべてご自身で選択できます。

どのエージェントに対応していますか? 任意の MCP クライアント、Claude Desktop、Cursor、opencode、OpenClaw、Hermes、VS Code にネイティブ対応しています。ChatGPT、Gemini、Grok、n8n、Home Assistant は、Webhook 経由で同じデータを利用します。

iOS アプリは必要ですか? ご自身のデータを使う場合は必要です。サーバーは MetricBridge アプリが書き出したファイルを読み取り、HealthKit には直接アクセスしません。まず試す場合は、アプリも iPhone も不要な、透かし入りの合成データセットを提供する--demoを使用できます。


トラブルシューティング

  • 「指標が見つかりません」: npx -y health-export-mcp --doctorを実行してください。サーバーが選択したフォルダーとその理由(HEALTH_DATA_DIR、Mac での iCloud のデフォルト、または現在のディレクトリ)、および.health-cache.jsonがそこにあるかどうかが表示されます。アプリで少なくとも一度エクスポートしたことを確認してください。get_mcp_statusで同じデータソースと最新の日付を確認できます。
  • クライアントにサーバーが表示されない: ターミナルでnpx -y health-export-mcp --doctorを実行してください。そこで動作する場合、クライアントがnpxを見つけられていません(nvm または Homebrew で Node をインストールした Claude Desktop でよく発生します)。.mcpbを使用するか、"command"にwhich npxで確認したフルパスを設定してください。その後、クライアントを完全に終了して再起動します。
  • 1 週間後にエクスポートが停止した: アプリの無料トライアルが終了しています。get_freshnessでエクスポートが古いことが報告され、ロック解除ページへのリンクが表示されます。アプリのロックを解除すると、この側で変更を加えることなくエクスポートが再開します。
  • データがロックされているというエラー: エクスポートファイルは、再起動後に初めてロック解除するまで保護されています。デバイスのロックを一度解除してください。

ローカルで実行する

# Node ≥18, no install needed
HEALTH_DATA_DIR=~/Library/Mobile\ Documents/iCloud~ai~healthexport~app/Documents node server.mjs

# integration test, writes a 14-day sample cache and exercises every tool
npm test

stdio トランスポート(改行区切りの JSON-RPC 2.0)を使用します。これは汎用的な MCP トランスポートです。任意でHEALTH_LISTEN=1を設定すると、同じプロセスで iOS アプリからの LAN プッシュも受け付けます(receiver.mjsを参照)。


動作の仕組み

iOS アプリは Apple Health を読み取り専用で読み込み、選択した保存先にコンパクトな.health-cache.json(および任意のコンテキストファイル)を書き出します。このサーバーはそれらのファイルを読み取り、上記の 16 個のツールを MCP 経由で公開します。ブリッジも、Docker も、データベースも不要です。ファイルと stdio だけで動作します。

Apple Health → MetricBridge (iOS) → .health-cache.json → health-export-mcp → MCP client → you

関連プロジェクト

エコシステム内のほかの Apple Health MCP サーバーです。ご利用の環境に応じてご覧ください。

health-export-mcpとの違い: iPhone アプリがバックグラウンドでエクスポートを最新の状態に保つため、手動でのexport.xmlの作成も再インポートも不要です。サーバーには依存関係がなく、Docker、データベース、Mac アプリも必要ありません。すべての回答に単位、日付範囲、データの網羅範囲が含まれます。また、最初から最後まで読み取り専用です。


関連情報

  • コンパニオン iOS アプリ: MetricBridge。Apple Health の 194 個の指標を自動的にエージェントへエクスポートします。
  • Model Context Protocol: modelcontextprotocol.io
  • エージェントごとのセットアップ: AGENTS.md

セットアップに役立った場合は、⭐を付けていただくと、ほかの人にも見つけてもらいやすくなります。

License

MIT, see LICENSE. Contributions welcome.


コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。