Most Apple Health MCP guides are per-client. Claude today, Cursor tomorrow, ChatGPT next week. That's the wrong abstraction. MCP is a protocol. The server command is identical across every client. Only the config file path and JSON shape change.
Eight read-only tools, all local:
| Tool | What it returns |
|---|---|
get_mcp_status |
|
| Health check: data source, metric count, most recent data date | |
list_metrics |
|
| Every available metric with unit, day count, date range | |
get_health_metrics |
|
| Values for a metric over a date range with aggregation | |
get_trends |
|
| Compare recent N-day window against prior N | |
compare_periods |
|
| A/B two arbitrary date windows for a single metric | |
get_structured_export |
|
| Clean structured JSON, paginated | |
get_intraday |
|
| Hour-by-hour window, live within-day view | |
query_health_data |
|
| Natural-language convenience query |
190 Apple Health metrics. 84 kB npm package. Zero dependencies. Zero network calls.
Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json
):
{
"mcpServers": {
"health-export": {
"command": "node",
"args": ["/Users/you/.health-export-mcp/server.mjs"],
"env": {
"HEALTH_DATA_DIR": "/Users/you/Library/Mobile Documents/iCloud~ai~healthexport~app/Documents"
}
}
}
}
Cursor uses the same shape at ~/.cursor/mcp.json
. Windsurf uses it at ~/.codeium/windsurf/mcp_config.json
. ChatGPT Desktop takes the inner block in Settings > MCP Servers. Codex CLI reads .mcp.json
. opencode uses mcp
-
environment -
array
command
instead of mcpServers
env
.
The server command never changes. Only the file path does.
You: What is my HRV trend over the last 14 days?
Agent: [calls get_trends] Your HRV averaged 58 ms, up 5.5% vs prior 14 days.
You: Compare my sleep this week to last week.
Agent: [calls compare_periods] Deep sleep up 17%, total sleep up 6%.
You: How does my RHR change on days I sleep less than 6 hours?
Agent: [calls query_health_data] RHR averages 58 bpm after <6h sleep, 53 bpm after >7h.
No CSV, no copy-paste, no screenshots. Live data from your iPhone, answered locally.
Full config blocks for all eight clients, troubleshooting, and FAQ: complete guide on healthexport.dev