AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
MCP verified MIT Self-run

Healthmirror Mcp

mcp-mlyxz-healthmirror-mcp · by mlyxz

Local MCP server that exposes your Apple Health data (synced to your Mac by the HealthMirror iOS app) to AI tools like Claude — runs locally, no network access.

No reviews yet
0 installs
36 views
0.0% view→install

Install

$ agentstack add mcp-mlyxz-healthmirror-mcp

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/mcp-mlyxz-healthmirror-mcp)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
3mo ago

Declared compatibility

Claude CodeClaude DesktopCursorWindsurf

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Healthmirror Mcp? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

HealthMirror MCP

English · [简体中文](./README.zh.md)

A local MCP server that exposes your own Apple Health data — exported to iCloud Drive by the HealthMirror iOS app — to AI tools running on your Mac (e.g. Claude).

It reads the JSONL files HealthMirror writes into its iCloud container and answers structured queries (sleep, heart-rate metrics, workouts, a daily recovery summary). Your health data never leaves your machine: the server runs locally, has no network access, and only returns query results to the MCP client you connect.

How it works

iPhone HealthKit
  ↓  HealthMirror iOS app   (reads HealthKit, writes JSONL)
iCloud Drive container:  iCloud.com.mlyz.HealthBridge
  ↓  macOS iCloud auto-sync
~/Library/Mobile Documents/iCloud~com~mlyz~HealthBridge/Documents/
  ↓  this MCP server        (reads JSONL, runs queries)
Claude / any MCP client

The server is read-only over your data and makes no outbound network requests (enforced by a sandbox profile — see [Security model](#security-model)).

Requirements

  • macOS (Apple Silicon or Intel).
  • The HealthMirror iOS app installed on

your iPhone with iCloud sync enabled, so health data has synced down to this Mac. Without the app there is no data to read.

  • uvbrew install uv.
  • Python ≥ 3.12 (uv can install this for you).

Install

git clone https://github.com/mlyxz/healthmirror-mcp.git
cd healthmirror-mcp
uv sync

Confirm your health data has actually synced to this Mac — this folder should exist and contain per-metric subfolders:

ls ~/Library/Mobile\ Documents/iCloud~com~mlyz~HealthBridge/Documents/raw/

If it's missing or empty, open the HealthMirror app on your iPhone, let it finish syncing, and make sure iCloud Drive is enabled on this Mac.

Smoke test (no sandbox)

Confirm dependencies resolve and the server starts:

uv run health-bridge-mcp

It speaks the MCP protocol over stdio and waits for a client, so you'll see no visible output. If it starts without an import error, you're good — press Ctrl+C to exit.

Register with Claude (recommended: sandboxed)

The repo ships run-sandboxed.sh, which launches the server inside a macOS sandbox-exec profile that denies all network access and restricts writes to a small allow-list. This is the recommended way to run it.

claude mcp add healthmirror /ABSOLUTE/PATH/TO/healthmirror-mcp/run-sandboxed.sh

Replace /ABSOLUTE/PATH/TO/healthmirror-mcp with the real path where you cloned the repo. The wrapper resolves your home directory and the repo location automatically, so you never have to edit absolute paths inside sandbox.sb.

To run without the sandbox (e.g. while debugging), register the plain command:

claude mcp add healthmirror -- uv run --directory /ABSOLUTE/PATH/TO/healthmirror-mcp health-bridge-mcp

Other MCP clients: launch run-sandboxed.sh as the server command; it communicates over stdio.

> uv: command not found? GUI-launched MCP clients sometimes don't inherit your > shell PATH. run-sandboxed.sh tries common install locations automatically; if it > still fails, run which uv and use that full path. For Claude Desktop, point its > MCP config JSON at "command": "/ABSOLUTE/PATH/TO/healthmirror-mcp/run-sandboxed.sh".

Tools

| Tool | What it does | |---|---| | ping | Liveness / connection check. | | get_sleep | Sleep episodes (main sleep + naps), per-stage minutes, coverage. | | get_metric | A quantity metric (heart_rate, hrv_sdnn, resting_heart_rate, active_energy, steps, weight) with aggregation, optional per-day buckets, and per-source breakdown. | | get_workouts | Workout records with multi-source dedup, plus a per-type summary. | | get_daily_summary | One-shot daily summary: recovery score, cycle phase, today's activity, last night's sleep. |

By default queries are limited to the last 30 days; pass allow_historical=true for older data. Every tool call is appended as a line to ~/Library/Application Support/HealthBridge/audit.log, so you can see what the AI queried (tail -f it). See [Security model](#security-model) for exactly what that log records.

Security model

  • No network. The sandbox profile denies all network access; the server cannot

exfiltrate data. This is the primary protection.

  • Writes are allow-listed. Only the HealthMirror app-support directory, the cloned

repo's own venv/bytecode cache, and Python temp are writable.

  • Reads are not sandbox-restricted (macOS needs broad read access to load), but the

server code only reads your local HealthMirror data — and with the network blocked, a read can't go anywhere.

  • Audit log. Each call appends tool name, params, and a small result summary to a

local log — result counts and a few derived figures (e.g. the daily recovery score), never the raw health samples.

sandbox-exec is marked deprecated by Apple but remains functional on current macOS.

Why two names?

The product and this repository are named HealthMirror. The Python package and module keep the original development codename health_bridge (distribution health-bridge-mcp, import health_bridge_mcp), and the iCloud container ID is iCloud.com.mlyz.HealthBridge. These identifiers were frozen early to avoid disrupting a working data pipeline, so they intentionally differ from the product name. Functionally it's all the same project.

Maintainer

Developed by Xiao Zhang, publishing as @mlyxz on GitHub. Contact: support@mlyz.me

License

[MIT](./LICENSE)

Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.