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".
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 screens

Status, the two things only you can do, and the door for your AI. That is the whole app. No screenshots yet; the app is pre-release. Here is what each screen holds.

Home

  • One sentence says whether it works: "Up to date, 14 sessions in your folder, last check 2 min ago."
  • The orange card is the one thing a human has to do, and it is one tap: "Your AI wrote S27" with Put on Watch and See parts. Ratings come from your Watch; the app never asks for one.
  • "Connected · Claude Code on Alex's MacBook Pro · last seen 2 min ago" when an AI has read the folder in the last week; "Not connected yet" before that.
  • The "Your AI" card copies the setup message with your folder path filled in. Paste it to Claude, ChatGPT or Cursor on your computer.
  • Files are a plain list (sessions, vitals) with Share. No charts.

Onboarding, four screens

  • What it is.
  • Pick a folder, any Files provider, with the one rule about reaching it from your computer.
  • Allow Health and notifications (one kind: your AI wrote a plan).
  • Connect your AI: "This app only writes the files. Your AI reads them on your computer." One button copies the setup message; the other says "I'll do it later".

Each screen has one sentence of why and one button.

Settings

  • Files: folder, Health access (the types you allowed), notifications.
  • Sessions: what "Put on Watch" means (schedule for the next day, or Apple's Add to Watch sheet).
  • Trust: "What left this phone", a real screen that is always empty because there is no server. Usage statistics, off until you flip them: which features you use and whether they worked, never a health value, never a file name. The sync log, every background wake and what it wrote.
  • About: the version.

Ideas for your AI

Six prompts, suggestions only, not part of the setup. 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 six.

Build my next swim session

Asks before anything else: pool length, how long you have, how the last session felt, anything sore, what this month is for. Then reads the last three swims and the summary, writes a session with step names under 40 characters, pushes it, and tells you to tap "Put on Watch".

Build my next rowing session

Same shape. Also asks for the resistance level you use and whether heart rate from the wrist has been reliable on the rower, because it often isn't.

Weekly check-in

Asks about sleep, stress, time next week and how the body feels. Reads the training summary and vitals. Proposes the next week as a list, not as files, until you say yes.

Explain my last session

No questions needed except one: what did you want from it? Then reads the session and explains it in plain words, what went to plan, what didn't, what it means for next time.

Am I overdoing it?

Asks how you've been sleeping and how motivated you feel. Reads resting heart rate, HRV and load over three weeks. Says what it sees as a hypothesis, not a verdict, and when to see a doctor instead of an AI.

Prepare this for my coach

Asks what the coach cares about. Writes a one-page summary of the last four weeks from the files, in words a coach uses, ready to send.

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.