Before you start
- The Health Access app on your iPhone has written files into your folder, and that folder syncs to this computer (iCloud Drive, Dropbox, Google Drive, OneDrive, Box).
- Node.js 18 or newer is installed, so
npxexists. Check:npx --version. If not, install it from nodejs.org or withbrew install node.
Register the server
claude mcp add --scope user healthaccess -- npx -y healthaccess-mcp
- That is the whole setup. The first start downloads the server for your computer from npm (a few MB); later starts use the copy npm keeps.
- No path needed: the server looks for your Health Access folder in iCloud Drive, then in Dropbox, Google Drive, OneDrive and Box, then in
~/Documents, and uses the one the app updated last. - To name the folder yourself, add it at the end:
npx -y healthaccess-mcp --dir "/path/to/your/folder". iCloud Drive folders live under~/Library/Mobile Documents/com~apple~CloudDocs/; the other providers under~/Library/CloudStorage/. --scope usermakes the server available in every project. Leave it out and it is registered for the current project only.
The same thing as a project file, .mcp.json in the project root, if you prefer to check it into a repository:
{
"mcpServers": {
"healthaccess": {
"command": "npx",
"args": ["-y", "healthaccess-mcp"]
}
}
}
Check
claude mcp list # healthaccess should show as connected npx -y healthaccess-mcp --check # prints the folder it found and where from
Inside a Claude Code session, /mcp lists the server and its thirteen tools: list_workouts, get_workout, get_vitals, training_summary, rate_workout, push_plan, get_plan_status, list_plans, get_day, get_days, get_catalog, get_profile, list_ecgs. The Health Access app shows "Connected" once a session has started the server.
Then say to it
List my last 5 workouts, one line each. Then open the newest one and tell me in plain words what the parts were and where the heart rate went. Before you judge it, ask me how it felt.
If you want ideas for what to ask next, the six prompts are suggestions in the shape that works: ask first, read second, write last.
If something is off
- "no Health Access folder found": the folder has not synced to this computer yet, or it lives somewhere the search does not look. Open it in Finder, then pass it with
--dir. - Two folders found: the server uses the one with the newest
index.jsonand names the other in its log. Pass--dirto choose. - A workout is missing in
list_workoutsbut the file exists: the app'sindex.jsonlags behind. Ids are also resolved by scanningworkouts/, soget_workoutwith the file name or the 8-character id in it still works. - Logs go to stderr.
HEALTHACCESS_LOG=debugturns them up. Claude Code shows server stderr under/mcp. - Folder and zone bounds can also be set once in
~/.config/healthaccess/config.toml; the--dirargument wins over it. - From source instead of npm: Rust stable, then
cargo install --path mcp --lockedin the repository, and registerhealthaccess-mcpinstead ofnpx -y healthaccess-mcp.