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.
What the server exposes
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.
The config that works everywhere
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.
Real queries
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
Top comments (0)