marrow について
marrow-mcp は、無料の Marrow iOS アプリ向けセルフホスト型サーバーです。Apple Health のデータをローカルの SQLite にミラーし、AI エージェントから照会できます。データを所有者のハードウェアに保管し、MCP 経由で読み取り専用アクセスを提供します。
主な機能
- 01178 種類の健康データをミラー
- 02日次サマリーと個人ベースライン
- 03睡眠・栄養・運動・症状の照会
- 04ローカル SQLite 保存とバックグラウンド同期
- 05プロンプトとリソースを付属
活用シーン
- 01睡眠とトレーニングの最近の変化を確認
- 02個人ベースラインに沿って健康指標を解釈
- 03受診に向けて健康記録を整理
MCP 対応
Streamable HTTP と bearer token 認証で MCP サーバーを提供します。ペアリング済みのセルフホスト構成では、読み取り専用ツール 13 個、プロンプト 4 個、リソース 4 個を公開し、書き込みツールは利用できません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Marrow Health MCP サーバー(marrow-mcp)
AI エージェントが、あなた自身の Apple Health データを読み取れるようにします。
Marrow は、178 種類の健康データ系列(Apple Health の 172 種類に加え、独自の食事日記とセットごとのウェイトリフティング記録)を追跡する無料の iOS アプリです。このリポジトリはそのセルフホスト可能なコンパニオンサーバーです。標準ライブラリのみを使用する Python ファイル 1 つで、所有するハードウェア上にデータの SQLite ミラーを保持し、Model Context Protocol 経由で提供するため、スマートフォンをポケットに入れたままでも、エージェントは 24 時間いつでもデータを照会できます。
ここからクラウドに接続することはありません。データはスマートフォンからあなたのマシンへ流れるだけです。

実行する
pip install "marrow-mcp[qr]" # [qr] adds segno, which draws the pairing QR
marrow-server --port 8800 --data ./data # prints a pairing URL
[qr] を指定しない場合、ペアリングページにはコードではなくペアリング用 JSON が表示されます。
または、クローンから実行します
python3 marrow_server.py # prints a pairing URL
python3 marrow_server.py --port 8800 --data ./data
または Docker で実行します
docker compose up -d
任意の画面でペアリング URL を開き、Marrow で Export, Server MCP,
Pair with a server を選択して、スキャンしてください。以降は、アプリを閉じていても、アプリのバックグラウンドプッシュによってミラーが最新の状態に保たれます。アプリがプレーン HTTP でペアリングできるのは、自分のネットワーク上のみです(プライベートまたは tailnet の IPv4 アドレス、.local または .ts.net の名前、短い LAN 名)。公開アドレスには HTTPS が必要です(--url https://...)。
0.3.0 へのアップグレード
古いサーバーを停止し、同じ --data ディレクトリを指定して新しいサーバーを起動します。既存の mirror.sqlite には初回起動時に新しい列が追加され、--data 内のトークンも引き継がれるため、スマートフォンのペアリングはそのまま維持されます。Marrow 1.4 で記録したセットには set_type(work、
warmup、failure、drop)が含まれます。ウォームアップは引き続き一覧に表示されますが、ボリュームや記録にはカウントされなくなります。また、アップグレード前にミラーされた行は work セットとして扱われます。
エージェントを接続する
このサーバーは Streamable HTTP 経由で MCP を提供します(JSON-RPC 2.0、プロトコルバージョン
2025-06-18)。初回起動時に生成され、ペアリングリンクとともに表示されるベアラートークンで認証します。
Claude Code
claude mcp add --transport http marrow \
http://<server-ip>:8800/mcp \
--header "Authorization: Bearer <mcp token>"
Claude Desktop、ワンクリックで設定
marrow.mcpb
をダウンロードしてダブルクリックすると、Claude Desktop が拡張機能をインストールし、URL とトークンを尋ねます。ターミナルは不要です。(このバンドルは mcpb/ にある、依存関係のない小さなブリッジです。Claude の stdio を Marrow の URL に転送するだけで、それ以外の処理は行いません。)
Claude Desktop(手動)、Cursor、または mcp.json を使用するもの
{
"mcpServers": {
"marrow": {
"type": "http",
"url": "http://<server-ip>:8800/mcp",
"headers": { "Authorization": "Bearer <mcp token>" }
}
}
}
手動で確認する
curl -s http://<server-ip>:8800/mcp \
-H "Authorization: Bearer <mcp token>" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
ツール
13個のツールがあり、すべて読み取り専用です。サーバーには書き込みツール(食事やワークアウトの記録など)もありますが、書き戻し用にスマートフォンを登録した後にのみ表示されます。現在、これに対応しているのは Marrow Connect だけです。アプリからペアリングしたセルフホスト可能なサーバーが提供するのは13個の読み取りツールのみで、エージェントが健康記録に書き込めるツールはありません。
そのうち4つは、アプリ独自の基準に沿って回答します。アプリのホームページと同じ計算方法で、あなた自身の直近の通常値と照らして評価します(当日分は除外)。そのため、エージェントは数値を全体集団と比較して判断するのではなく、あなたにとってすでに適切な読み取り結果を出発点にできます。
| ツール | 戻り値 |
|---|---|
daily_brief | 1日分:各主要指標の値と説明(あなたの通常値、通常値より高い、通常値を大幅に下回る)、食事と水分の目標に対する達成状況、昨夜の睡眠、実施したトレーニング、気分と症状、言及すべきフラグ |
baselines | 指標ごとのあなた自身の通常値:対象期間の平均値とばらつき、最新値の z 値と説明、7日間の平均値、月ごとの90日間の傾向 |
what_changed | 直近の日々とその前の期間との比較:変化した項目と、あなたにとっての注目度、食事、トレーニング、睡眠と就寝時刻の変化、データが届き始めたストリームや届かなくなったストリーム |
data_quality | ミラーに保存されているデータとその鮮度:指標ごとの最新日、カバレッジ、更新頻度、データソース、データが古くなっているかどうかに加え、日誌、睡眠、トレーニングのカバレッジと、スマートフォンが最後に同期した日時 |
9つの生データ読み取りツール:
| ツール | 戻り値 |
|---|---|
health_summary | 活動、心臓、睡眠、栄養に関する直近の日々のデータ |
list_metrics | ミラー内のすべての指標と、単位およびカバレッジ |
metric_daily | 任意の指標の日ごとの値(最大400日分) |
metric_samples | タイムスタンプとデータソースのデバイスを含む生データのレコード |
workouts | すべてのデータソースのワークアウト:活動、開始、終了、時間、データソース |
nutrition_log | 食事日誌:記録したすべての食品と栄養素の詳細(日ごと) |
strength_log | すべての筋力トレーニングのセット(セットの種類と推定1RMを含む)、種目ごとの進捗、筋肉群ごとの総ボリューム(ウォームアップは除外) |
sleep_log | 起床日ごとの1晩分のデータ:就寝時刻、起床時刻、睡眠時間、各睡眠ステージの時間 |
symptoms_and_mood | 重症度を含む症状と、感情価、感情、内容を含む「心の状態」の記録 |
すべての読み取りツールでは、スマートフォン上の今日から遡る日数を days で指定するか、スマートフォンのカレンダーに基づいて from と to を指定します。metric_samples は before(手元にある最新レコードの開始日時)を使ってページ分割します。出力スキーマを持つツールは、structuredContent も返します。
サーバーには4つのプロンプト(how_am_i_doing、weekly_review、doctor_prep、log_from_text)と4つのリソース(marrow://today、marrow://metrics、marrow://targets、marrow://quality)が付属しており、それらを表示するクライアントで利用できます。
指標キー:list_metrics には Apple の短縮名(active_energy_burned)が表示されます。また、ツールはアプリ独自のキー(active_energy、heart_rate_variability)も受け付けるため、スマートフォンから移行したエージェントも、これまでと同じ用語を使えます。
エージェントに 「朝のトレーニングを始めてから、睡眠はどう変わりましたか?」 のようなことを尋ねて、調べてもらいましょう。
キット、レシピ、Claude Code プラグイン
- kits/:Claude Code、Claude Desktop、 Cursor、OpenClaw、Hermes Agent 向けのコピー&ペーストで使えるセットアップ。
- recipes/:Marrow のオートメーションの受信側(アプリを閉じていても、スケジュールに沿ってアプリから任意の URL にデータを POST します):Home Assistant、 n8n、Apps Script 経由の Google Sheets、InfluxDB。
- Marrow で構築: これらの接続を使って実行されている、ユーザー作成の完成プロジェクトです。最初のプロジェクトは、Marrow が送信するあらゆる種類のデータを表示する Grafana ダッシュボード、Body Ops です。ぜひ投稿してください。
- Claude Code プラグイン:
/plugin marketplace add MarrowHealth/marrow-mcpの後に/plugin install marrow-health@marrowを実行します。Marrow Connect サーバーと4つのコマンド(/marrow-health:how-am-i-doing、weekly-review、doctor-prep、log)、さらに各ツールが何に答えるかを把握したスキルが追加されます。
Claude や ChatGPT に組み込まれたコネクターを使わない理由は?
Claude(米国の Pro/Max)と ChatGPT は、どちらも Apple Health のデータをネイティブに読み取れるようになりました。それだけで十分な場合は、そちらをご利用ください。ただし、これらの機能が対応する範囲は、このサーバーが提供する機能には及びません。
| Claude/ChatGPT コネクター | Marrow + このサーバー | |
|---|---|---|
| 動作する場所 | iOS アプリのみ | Claude Code、Claude Desktop、Cursor、OpenClaw、Hermes、あらゆる MCP クライアント、あらゆるマシン |
| 動作するタイミング | スマートフォンでチャットをしている間 | 24時間365日、スマートフォンをポケットに入れたまま、自分のマシンから |
| モデルが参照するデータ | HealthKit の生の数値 | Apple 独自の合計値と照合された日次データ、食事日記、セットごとのリフト記録 |
| データの保存場所 | 会話ごとに各社のクラウド | 自分が所有するハードウェア上の SQLite |
| 費用 | サブスクリプション | 無料、MIT |
OpenClaw/Hermes/自宅のマシンで動くあらゆるエージェント。 上記の mcp.json
ブロックと同じように、ベアラートークンとサーバー URL をエージェントの MCP
設定に指定します。tailscale serve --bg --https=8800 http://127.0.0.1:8800 を使うと LAN の外からアクセスでき、tailnet の URL を使用できます。
その他のアクセス方法
このサーバーは Marrow の「エクスポート」タブにある接続方法のひとつです。エージェントにアクセス権を与えるのに、このサーバーは必須ではありません。
- ローカル MCP。 Marrow は iPhone 上で
http://<phone-ip>:21212/mcpに MCP サーバーを実行し、アプリの実行中に応答します。上記の生データ読み取りのうち7つを利用でき、追加のハードウェアは不要です。 - サーバー MCP。 このパッケージです。自分のマシン上で常時稼働するミラーです。
- 自動化。 任意の URL へのスケジュール送信(Home Assistant、n8n、自分のエンドポイントなど)。
- 手動。 共有シートから CSV、JSON、GPX ファイルを書き出します。
4つすべてを無料プランで利用できます。すべてのセットアップ方法はこちらをご覧ください: https://marrowhealthapp.com/guides。
Marrow Connect はホスト型の Pro プランです。Marrow がミラーを実行するため、スマートフォンの電源がオフでも、何も実行せずに ChatGPT、Claude、Gemini からデータを読み取れます。アプリで「AI による書き込みを許可」をオンにすると、操作の記録までできる唯一の接続方法です。https://marrowhealthapp.com/connect
セキュリティ
- どちらのサーバーも LAN または tailnet 向けです。インターネットにポートフォワーディングしないでください。 リモートから利用する場合は、
tailscale serve、Caddy、または同等の仕組みを前段に配置し、トランスポートに HTTPS を使い、ベアラートークンを提示する前にデバイスを認証してください。 --dataには、スマートフォンからの送信用の.app-tokenと、エージェント用の.mcp-tokenの2つのトークンが別々に保存されます。一方をローテーションしても、もう一方には影響しません。- データ取り込みは冪等で UUID をキーにするため、バッチを再送しても二重にカウントされません。
ステータス
Marrow は App Store で配信中です。iOS 17 以降に対応し、Apple Health が必要です。 App Store から入手。
iOS アプリはクローズドソースです。このサーバーはオープンソースです。自分のハードウェアで実行するよう求められるものは、すべて内容を確認できるべきだからです。
レジストリ
公式 MCP レジストリに tech.skeletonarmy/marrow として登録され、skeletonarmy.tech の DNS により検証されています。
mcp-name: tech.skeletonarmy/marrow
ヘルプとポリシー
- エージェントのセットアップガイド、クライアントごとの詳しい手順
- サポートとトラブルシューティング、または [email protected] までメールでお問い合わせください
- プライバシーポリシー。要約:健康データはお使いのデバイスに保存され、このサーバーはお客様が所有するハードウェア上で稼働し、ここから当社に報告されることはありません。
- 利用規約
ライセンス
MIT。LICENSEをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。