Unofficial local-first MCP server for Apple Health export data.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
β‘ One-command install with Delx Wellness for Hermes:
npx -y delx-wellness-hermes setupβ preconfigures this connector and the other 8 in a dedicated Hermes profile.Or wire it standalone into Claude Desktop / Cursor / ChatGPT Desktop β see the install section below.
Default is stdio. Optional Streamable HTTP β no session id, JSON responses, loopback only:
Env: APPLE_HEALTH_MCP_HOST, APPLE_HEALTH_MCP_PORT, APPLE_HEALTH_MCP_TRANSPORT=http.
Local-first MCP server that reads your Apple Health export and exposes it to AI agents.
Unofficial project. Not affiliated with, endorsed by or supported by Apple Inc. Apple Health is a trademark of Apple Inc. This package reads exports you generate yourself from the Apple Health app.
No live HealthKit access. This connector reads
export.xml/export.zipfiles exported from your iPhone. A native iOS HealthKit bridge is a separate future component.
Built by David Mosiah for people who use Claude, Cursor, Hermes, OpenClaw or other MCP-compatible agents to think about long-term health and activity trends β without copy-pasting numbers from the Health app.
Part of Delx Wellness, a registry of local-first wellness MCP connectors.
If this connector helps your agent workflow, please star the repo. Stars make the project easier for other AI builders to discover and help Delx keep shipping local-first wellness infrastructure.
Apple Health is the most complete personal health dataset most people own β years of activity, heart rate, sleep, workouts, body measurements, even ECGs. But Apple does not expose a public cloud API. The data lives on the iPhone behind HealthKit, and the only practical way to bring it off-device today is the Health Export feature inside the Health app.
This package reads that export locally β either the raw export.xml, the unzipped folder, or the export.zip β and exposes Apple Health through the Model Context Protocol. No tokens, no OAuth, no cloud sync. The export never leaves your machine.
1. Export your Apple Health data on iPhone:
Wait a few minutes. AirDrop or transfer the zip to this machine.
2. Configure and verify:
Or let the CLI find the newest local export in Downloads, Desktop or Documents, copy it into managed local storage, and save that path:
Supported export paths:
/path/to/export.zip/path/to/apple_health_export/ (unzipped folder)/path/to/export.xml (raw export file)Keep it fresh β watch a folder (no macOS needed):
Apple Health is a manual export, so the usual pain is that your data goes stale the moment you stop re-running setup. Point the connector at a folder you drop new exports into:
Now every time you export from your iPhone and drop the new export.zip (or export.xml, or unzipped apple_health_export/) into that folder, the connector auto-promotes the newest one to be the active export β on server startup and live while it runs β and refreshes the cached summaries. You can also trigger a re-scan on demand with the apple_health_reimport tool. This is the cross-platform recurring-refresh path; a fully live HealthKit bridge still needs a native macOS/iOS component.
Then add this to your MCP client config:
For Claude Desktop, run setup --client claude --export-path /path/to/export.zip and the snippet is written for you.
Three things to ask first:
This package parses Apple Health exports from the Health app. When this README says raw, it means the upstream XML record fields β not raw HealthKit data.
| Data | Available | Notes |
|---|---|---|
| Activity (steps, distance, energy, exercise) | β | Standard HKQuantityType records |
| Heart rate (resting + samples) | β | Recorded HR samples and resting HR |
| Sleep analysis + sleep stages | β | When iPhone/Watch logs sleep |
| Workouts + sport metadata | β | All HKWorkout entries |
| Body measurements (weight, BMI, body fat) | β | When the user logs them |
| HRV (SDNN) + breathing rate | β | When Watch supports them |
| ECG records | β (metadata) | Apple Watch ECG events; raw waveform requires PDF export |
| Live HealthKit access | β | Apple does not expose a public live API |
| iCloud Health sync | β | Not exposed by export files |
Start with these:
apple_health_connection_status β verify export path before reading dataapple_health_data_inventory β discover available record types, date coverage, sources count and stale export riskapple_health_daily_summary β daily wellness brief from export dataapple_health_weekly_summary β weekly comparison and habit signalsDiagnostics
apple_health_capabilities, apple_health_agent_manifest, apple_health_privacy_auditRecords
apple_health_list_records β bounded records by type (e.g. HKQuantityTypeIdentifierStepCount), start, end, limit. limit caps the returned list only: in the default summary privacy mode the aggregate block (count_by_type, units, date_range, numeric) is computed over every record matching the filter, and truncated / limit_applied / matched_count tell you whether the list itself was cut. The statistics live under numeric (numeric.min / numeric.max / numeric.sum / numeric.average / numeric.count), not at the top of aggregate β see What a payload looks likeapple_health_list_workouts β bounded workouts by start, end, limit. Same contract: limit caps the returned list only, and in summary privacy mode the aggregate totals (count_by_activity, date_range, total_duration_minutes, total_distance, distance_units, total_energy_kcal, workout_count) cover every workout matching the filter, with truncated / limit_applied / matched_count reporting whether the list was cutKeeping data fresh
apple_health_reimport β re-scan the watch folder (APPLE_HEALTH_WATCH_PATH) and promote the newest export, refreshing summaries; pass check_only: true to preview without promotingNo reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/apple-health-mcp)<a href="https://allmcps.com/mcp/apple-health-mcp"><img src="https://allmcps.com/api/badge/apple-health-mcp?style=directory" alt="Apple Health MCP on AllMCPs" /></a>