health-relay
health-relay
セルフホスト型ブリッジです。Samsung Watch → Sync2R1 スマホアプリと Hermes AI エージェントを接続します。アプリはLAN経由でヘルスデータをこのリレーに送信し、 データはローカル(SQLite)に保存され、REST と MCP の両方で公開されるため、 エージェントからクエリできます。
Galaxy Watch ─▶ Samsung Health ─▶ Sync2Ra1 (phone) ──push──▶ health-relay ──MCP/REST──▶ Hermesすべてのデータはネットワーク内に留まります。外部へ送信されることはありません。
クイックスタート(Docker または Podman)
echo "HR_AUTH_TOKEN=<choose-a-secret>" > .env
docker compose up -d # or: podman compose up -d
curl http://localhost:8790/healthz # -> {"ok":true}データは ./data/ledger.db(SQLite、WALモード)に保存されます。
Docker を使わずに実行する
python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
HR_AUTH_TOKEN=<secret> ./run.shスマホアプリをリレーに接続する
Sync2R1 → データタブ → Relay(Hermes ブリッジ) で設定します:
フィールド | 値 |
リレーURL |
|
トークン |
|
Save → Sync now をタップすると、数秒以内に測定値が届きます。
接続
phone (Sync2Ra1) ──HTTP :8790──▶ health-relay ◀──MCP stdio / HTTP── Hermes
same LAN · or Tailscale for anywhere-access項目 | 詳細 |
向き | スマホ → リレー(スマホからのアウトバウンド。スマホへ接続されるものはありません) |
ポート | リレーを実行中のマシンへのTCP 8790インバウンド — そのホストのファイアウォールで開放してください |
プロトコル | 平文HTTP + |
どこからでも接続可 | Tailscale をマシンとスマホにインストールし、Tailscale IP( |
同期頻度 | アプリは1時間ごと、アプリ起動時、手動の 今すぐ同期 で自動同期します |
オフライン時 | スマホはすべてをローカルSQLiteにバッファリングします。再接続時にそのバックログ全体を(古い順に)送信し、過去48時間を再同期して、Samsung側の更新も反映します |
重複対策 | 二重にカウントするのは不可能です — 各読み取りには一意なキーがあり、再送はサーバー側で無視されます |
Hermesの場所 | 同じマシン(MCPがローカルサブプロセスとしてSQLiteファイルを読み取る)またはリモート(MCP の代わりにRESTエンドポイントを使う) |
REST API(ベアラー認証)
エンドポイント | 目的 |
| liveness(認証なし) |
| バッチ取り込み — 冪等、再送は no-op |
| 生の測定値 |
| メトリックごとの最小/最大/平均/件数 |
| 日次ロールアップ |
| 種別ごとの合計 |
curl -H "Authorization: Bearer <secret>" \
"http://localhost:8790/api/v1/health/daily-summary?date=$(date +%F)&tz=Europe/London"Hermes に接続する(MCP)
MCPサーバーは同じSQLiteファイルを読み取ります — このリポジトリから起動してください。
python3 -m venv .venv-mcp
.venv-mcp/bin/pip install fastmcpエージェントのMCP設定に以下を追加します。
{
"mcpServers": {
"health-relay": {
"command": "<repo-path>/.venv-mcp/bin/python",
"args": ["<repo-path>/mcp_server.py"],
"env": { "HR_DATA_DIR": "<repo-path>/data" }
}
}
}エージェントが使えるツール
ツール | 対応する質問の例 |
| 「どんなヘルスデータがありますか?」 |
| 「今朝の心拍数を表示」 |
| 「昨日はどれくらい活動しましたか?」 |
| 「今週の睡眠状態はどうでしたか?」 |
日付の境界はタイムゾーン(tz="Europe/London" など、DSTにも対応)に従います。
記録されるデータ
心拍数・SpO₂・肌温度・呼吸回数・安静時心拍数・VO₂max・ sleep時間/スコア/ステージ・歩数と階数(毎時+毎日)・運動・ アクティビティーカロリー/時間/距離・体組成(BIA)・エナジースコア・血圧・glucose・水分補給・食事。
設定
環境変数 | デフォルト | 説明 |
|
| 本番では必ず設定 |
|
| |
|
| 信頼できるLAN内にのみ |
|
| SQLiteはここに保存されます |
テスト
.venv/bin/python -m pytest tests/ -qThis server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
MCP server for Withings health data — sleep, activity, heart, and body metrics.
63 tools for Apple Health, Fitbit, Oura & Health Connect data in Claude, ChatGPT, Grok & Mistral.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nnishad/health-relay'
If you have feedback or need assistance with the MCP directory API, please join our Discord server