Health Access MCP · Apple Health for AI

Apple won't let your AI read your Watch. This does.

Health Access is middleware. It does the one thing Apple requires a phone app for, writing your workouts and vitals as JSON into a folder you pick, and then it gets out of the way. Your AI reads that folder, through the MCP or just as files. If it writes you a plan, one tap puts it on your Watch.

Who this is for

You have an Apple Watch and an AI coach. Claude, ChatGPT, Cursor, a local model, whatever. You want it to see your actual sessions, heart rate, sleep and weight instead of what you remember to type. That is the main job.
Or a human coach. Same folder, shared with a person. They get the real splits instead of a screenshot.
Second job: plans back to the Watch. Your AI writes the session as a small JSON file. The app turns it into a custom workout with the step names on your wrist. No file import, no Watch app to configure.
Not for: looking at charts in the app. There are none. The AI is the user of this data, so the effort goes into the files, the MCP and the docs, not into screens.

The order of things

Who does what, and when. Orange is you, green runs on its own, blue is your AI.

Once, about five minutes, you
  1. Install the app. App Store soon It is in testing now.
  2. Pick a folder. Anything the iOS Files app can see: iCloud Drive, Dropbox, Google Drive, OneDrive, Proton Drive, a NAS, local. The one rule: your AI has to be able to reach the same folder, so pick one that syncs to the computer where the AI runs.
  3. Allow Health access (read only, you choose the types) and notifications (one kind only: "Your AI wrote S27", when a plan arrives).
  4. Give the MCP to your AI. Paste one paragraph, it sets itself up from these docs. Details below.
Every workout, nobody
  1. You end a workout on the Watch.
  2. Next time the phone is unlocked, the app writes workouts/2026-05-14_0712_PoolSwim_7A1C3E90.json into the folder: distance, time, heart rate every few seconds, every interval with its name, every length with stroke and SWOLF. Vitals land once a day.
  3. The folder syncs to your computer.
  4. Your AI reads it. No app on that side.
Sometimes, one tap, you
  1. Rate the session on your Watch when it asks. Effort is the one number nobody else can measure, and it turned out to matter more than heart rate. Apple exports your Effort score and the app picks it up; the app itself never asks.
  2. When your AI has written a plan: tap "Put on Watch" in the Import tab. Or switch on "Put new plans on my Watch automatically" once, and skip even that.
Whenever you ask, your AI
  1. Reads sessions, vitals and trends through the MCP, or reads the JSON directly. The folder is the API.
  2. Writes plans/S27.json. It shows up in the app within a minute.
  3. Works without the MCP too: the folder also holds briefing.md, a one-page summary any AI can read. Upload it to ChatGPT, drop it in a Claude Project, mail it to a coach.

Two honest limits, both Apple's. Health data can only be read while the phone is unlocked, so a workout finished with the phone in the bag exports the next time the phone is unlocked, not before. And the Watch keeps its own pool length setting, the plan can't set it.

Connect your AI, first thing

The MCP is the product. The app's onboarding ends on this screen, the README starts with it, and these docs are written so an AI can read them and do the setup itself.

Paste this to your AI

Set up the Health Access MCP for me.
Docs for you: https://healthaccessmcp.com/llms.txt
The server runs with: npx -y healthaccess-mcp
It finds my Health Access folder on its own.
Register it in this app, then list my last 5 workouts.

That is the whole onboarding for the AI side, the same for everyone. llms.txt and llms-full.txt carry the setup per client, the file schemas, the tool list and the plan format. The app puts this paragraph on your clipboard, with your folder's name in it in case the search needs a hint.

Or by hand

claude mcp add --scope user healthaccess -- npx -y healthaccess-mcp
{ "mcpServers": { "healthaccess": { "command": "npx", "args": ["-y", "healthaccess-mcp"] } } }

The first line is Claude Code, the second is the config entry for Claude Desktop, Cursor, LM Studio and most other hosts. Needs Node.js 18 or newer. The server finds your folder in iCloud Drive, Dropbox, Google Drive, OneDrive, Box or ~/Documents; --dir names it yourself. One page per client: Claude Code, Claude Desktop, Cursor, ChatGPT, local models.

What the AI gets

ToolDoes
list_workoutsCompact rows, newest first. One line per session, written for an LLM.
get_workoutOne session in full: every interval with its name, pace and heart rate, zone seconds, lengths, recovery heart rate, your effort rating. Heart-rate series only if asked.
get_vitalsResting heart rate, HRV, sleep, weight, steps, VO2max by day.
training_summaryPer week: volume, sessions, easy-zone share, mean effort, and the cardiac cost trend (beats per 100 m).
rate_workoutStores the effort you told the AI. The AI must ask you, never guess.
push_planValidates a session (labels under 40 characters, zones 1 to 5) and writes it to plans/. Then the app, then your Watch.
get_plan_statusWhether the app has put a plan on the Watch yet: pending, scheduled, failed or cancelled.
list_plansEvery plan in plans/ with its state, newest first.

Arguments, return shapes and the heuristics behind the derived numbers are in the tool reference. The server also exposes the index and every workout as MCP resources (healthaccess://index, healthaccess://workout/<id>) and the same data through the healthaccess command line.

The app, three tabs

Export, Import, Settings. Each tab opens with what it does in one line and a status that is green when nothing needs you. Shown with synthetic example data.

The Export tab: Up to date with a green check, the Health Access folder connected, Claude Code connected, automatic sync after every workout.
Export your Apple Health data. Workouts and daily data, written as files into your folder after every workout. Your AI's connection shows here.
The Import tab: an AI-written run waiting with Put on Watch, a swim already scheduled on the Watch with Remove from Watch.
Import workout plans. Plans your AI wrote, each with its day and time. One tap puts one on the Watch, or switch on Automatic.
The Settings tab: the Health data folder and the Workout plans folder, Health access, notifications, what gets exported.
Settings. The two folders, permissions, what gets exported, and "What left this phone", which stays empty because there is no server.

Ideas for your AI

Eleven prompts in two groups, suggestions only, not part of the setup. None assumes a sport: the AI asks. Each one makes the AI ask first, then read the data, then act. A plan written without asking how you feel is a guess with formatting. Full text of all eleven.

Export: understand what your Watch recorded

Weekly check-in

Asks about the week, sleep, stress and anything hurting. Reads four weeks of training and two weeks of sleep, resting heart rate and HRV. One win, one change, one question.

Explain my last session

One question: what did you want from it? Then explains the session in plain words, what went to plan, what didn't, what it means for next time.

Am I overdoing it?

Asks about sleep, motivation and stress. Reads resting heart rate, HRV and load over three weeks. A hypothesis, not a verdict, and when to see a doctor instead of an AI.

How am I sleeping and recovering?

Asks how rested you feel and what changed lately. Reads four weeks of sleep, heart and breathing next to your training days. One pattern, one thing to try.

What changed over the last months?

Asks what you hoped to improve. Compares the first and last four of twelve weeks: three things that moved, one that did not.

Prepare this for my coach or doctor

Asks who it is for and what they care about. Writes a one-page summary from the files, no diagnosis, ready to send.

Plans: sessions from your AI onto the Watch

Plan my next session

Asks sport, place, day and time, how long, how the last one felt and the goal. Writes one session with instructions on the wrist, for the time you said.

Plan my week

Asks which days you can train and what the week is for. Proposes the week as a table, mostly easy, and writes one plan per session after your yes.

Change my plan

Missed a day, feel tired, travelling? Suggests the smallest change that works, never doubling up, and rewrites the sessions still ahead.

Build up to a goal

Asks the goal and the date, says honestly whether it is realistic, sketches the weeks and writes only the next one.

Make my workout a Watch workout

Paste a workout from a coach, a club or an app. It becomes a plan the Watch can run, with repeats and labels.

Compared with the others

Four other ways to get Apple Health data to an AI exist. The differences that matter: where the data lives, whether you need an account, and whether anything goes back to the Watch. The full table, with prices and what we could not confirm.

ProductWhere your data livesAccountPlans back to the WatchOpen source
Health Access MCPA folder you choose, on your own storageNoneYes (WorkoutKit)Yes, MIT (server and CLI)
Health Auto ExportDestinations you pick (files, REST, MQTT) plus a read-only MCP server over your networkNoneNo; its MCP server is read-only per its listingNo
HealthPipeTheir servers in GermanyYes, Sign in with AppleNo, read-onlyNot stated
Health MCP: Private SyncTheir encrypted cloud with a trusted execution environmentYesNot found in its listingNot stated
Health Bridge for AIA receiver you run on your own computerNoneNo, read-onlyYes

Questions people type

How do I get Apple Health data into Claude?

Install the Health Access app on your iPhone, pick a folder that syncs to your Mac, allow Health access. After every workout the app writes a JSON file into that folder. Then register the server once: claude mcp add --scope user healthaccess -- npx -y healthaccess-mcp for Claude Code, or the JSON snippet for Claude Desktop. Claude can then list workouts, read a session, read vitals and write a plan. Without the MCP, the folder holds plain JSON and a one-page briefing.md you can drop into a Claude Project.

Does it work with ChatGPT?

Through the files, yes. Through the MCP, not today. ChatGPT connects to MCP servers at an HTTPS URL, on some plans only, and does not start a program on your Mac. Health Access MCP is a program on your Mac that talks over stdio. So with ChatGPT you upload the briefing or the workout JSON, or paste what the healthaccess command prints. What is true today, and the two paths.

Where does my data go?

Into the folder you picked, and nowhere else. There is no server and no account. The folder syncs through the storage provider you chose, which is your account with them, not ours. Usage statistics are off until you turn them on; when on, they carry event names and counts, never a health value, a file name or a path. The exact event names.

Why does it need my phone unlocked?

Apple only lets apps read Health data while the iPhone is unlocked. iOS wakes the app the moment a workout is saved, but if the phone is locked in a bag the export waits until the phone is unlocked again. The app says so instead of pretending.

Can it write workouts to my Apple Watch?

Yes. Your AI calls push_plan, which writes plans/<id>.json into the folder. The app turns it into a WorkoutKit custom workout with the step names on your wrist and puts it on the Watch, scheduled for a date or through Apple's "Add to Watch" sheet. Limits: pool swim and indoor rowing today, step labels under 40 characters, step names need iOS 18, and the Watch keeps its own pool length setting. The plan format and the flow.