Readit News logoReadit News
Posted by u/_neil 5 months ago
Show HN: Apple Health MCP Servergithub.com/neiltron/apple...
Hey HN,

This is an MCP server to chat with Apple Health data. I built it because I'm working on (yet another) personal trainer tool that keeps track of my workout goals, etc. and does scheduling for me. Part of that is weekly check-ins. I thought pairing those check-ins with sensor data could be useful, so here we are.

It seems there isn't a way to automate access to Apple Health data, so this relies on an iOS app that can quickly/easily export key data to CSV. So the process at the moment is to export the data every Sunday before doing a check-in. More steps than I'd like, but in practice isn't a big lift.

Under the hood this is mostly a thin wrapper around duckdb.

There's a video of it in action here: https://x.com/realtron/status/1947710791521591514

woodylondon · 5 months ago
This is really cool - I recently worked on a tool that I installed on my iPhone, which extracts all health data nightly to CSV and then to a cloud database.

This was quite straightforward once you understand the permissions. I wonder why the OP didn’t do this and was instead using a simple health export CSV?

The main concern I had with releasing this or turning it into a tool was data security.

I have been swimming 1500m x 365 days of the year for the last 7 years. My use case was to build a personalised dashboard for my daily swimming and heart rate data to track detailed progress beyond what Apple offers. Having the ability to query this data with AI could be quite useful, rather than relying on manual reports.

_neil · 5 months ago
Simple Health Export CSV was just the fastest route to proving to myself that the idea would work. I really considered making an app but decided that was one nerd snipe too many for the given task.

But I'd like to revisit it because it would be a natural fit to just put the personal trainer flow directly in an app.

Tom1380 · 5 months ago
1500m no days off? Props to you
pheeney · 5 months ago
Is any of it open source? What tools for the CSV? I’d like to build a dashboard of my cycling rides?
formerly_proven · 5 months ago
There is a native export function in Health but it generates about 1-2 GB of XML per year, since the schema is extremely verbose, so it takes a while. On the other hand, it’s very literally self-describing. But no need for handing access to Health to more or less dubious apps. I also think you can „export“ select data points to „CSV“ using a ten step Shortcut. Might be quicker.
_neil · 5 months ago
I actually started with this but the export always had the appearance of stalling unless I left it for long periods. For a first version, the CSV export app was much quicker. And actually, the author of the app (Eric Wolter) has a nice site that will convert the xml format to csv using the FileReader api, etc.

I would like to go back to this though and add it as an integration option.

NotPractical · 5 months ago
> But no need for handing access to Health to more or less dubious apps

I mean, it's been vetted by Apple, right? If they did their job then it should be fine. This isn't the Play Store you're dealing with; it's the App Store. I kinda dig the "simple utility app that does one job well" format, tbh.

echoangle · 5 months ago
I don’t think the App Store Review is as comprehensive as you think.
friggeri · 5 months ago
This is awesome! I’ve been working on and off for the last few months on an AI running coach app. Would love to compare notes of effectively prompting Claude or O3 to analyze workouts / build workout plans. In my experience it still requires a lot of hand holding (sudden mileage increases w/w, inconsistent intervals, etc)
cstone · 5 months ago
Hey - if you're interested in prototyping with real data, we've built a platform for stuff like this -- Fulcra Context (https://www.fulcradynamics.com/). We have an iOS app that collects Apple Health data, and you can then share it with a coach/trainer/doctor/etc.

We have a REST API with python client lib (https://fulcradynamics.github.io/developer-docs/), an MCP server (https://fulcradynamics.github.io/developer-docs/mcp-server/), and did some experiments with ChatGPT actions as well (https://www.fulcradynamics.com/chatgpt).

It doesn't have the simplicity of a plain export to duckdb/sqlite, but it definitely helps solve a lot of the sharing/collaboration problems.

_neil · 5 months ago
I haven't gone deep on prompting around health data specifically, but I've built some other data agents. Agree that there isn't always an easy path, depending on the domain. It might be worth exploring multiple subagents with different focuses. I.e., have one subagent that is going to focus on writing window function queries in order to find interval variations.

My general belief around data agents is to offload as much as possible to SQL.

rikbruggink · 5 months ago
i am trying todo same with glue-ing mcp servers together and as a bonus try get my CHO rates and overall KCAL for the week with the proposed schedule and all palnned intake based on mets. Analyzing my workouts is something that works great at the moment if the data in is correct. i mostly use intervals.icu for this.

Would love to chip in on the discussion around this topic.

hcm · 5 months ago
Love it!

For getting Apple Health data into duckdb, I’ve used this in the past: https://github.com/dogsheep/healthkit-to-sqlite. (You can load the SQLite database directly in duckdb.)

dcreater · 5 months ago
This is a much more seamless solution that what OP is using (for both his project and for users)!

@_neil, any reason not to use this instead? duckdb over a .db file is a more straightforward approach

_neil · 5 months ago
It seems like you still need to export the database here, so maybe same amount of steps since duckdb can import CSV files directly as well.

I think supporting the native Apple Health export feature would be a good idea. It just takes longer than the CSV export, so I started there. I would imagine the native export has more data, though, which might be nice.

monatron · 5 months ago
Very cool indeed. I started building something similar - relying on Auto Export [https://apps.apple.com/us/app/health-auto-export-json-csv/id...] to export my health data to an endpoint which stores it in a sqlite database. I never got as far as building an MCP server around the data but that's certainly the direction I was heading. The initial idea was to use my health data to provide context to a health/fitness agent that would recommend workouts, check-in on things, etc.
dkdcio · 5 months ago
it is wild to me that products like this don’t allow you to easily export all data into sqlite (or duckdb) natively. it’s 2025 and you frequently have to page through hundreds or thousands of API calls to get a trivial amount of data (or use 3p services)
s0sa · 5 months ago
This isn’t some bespoke API/format that they made up to make it harder for you to get your data. Apple did the right thing here and implemented HL7 standards like CDA and FHIR. This is a win for interoperability. There are already a wealth of tools available for dealing with these standards.
mattkrause · 5 months ago
I thought this was sort of deliberate for Apple Health.

People use it to track sensitive information, like reproductive and mental health data, that should only be exported very intentionally.

_neil · 5 months ago
Great minds :)

I haven't experimented with MCP too much because I have some reservations about it, but I decided to go MCP-first for this to see how it feels to prototype around it. My typical flow would have been to go sqlite+sveltekit.

yurishimo · 5 months ago
Thanks for the link to that app. Gonna setup something this weekend to ingest and aggregate my workout stats onto my personal website :)
hahahacorn · 5 months ago
Can imagine this is really useful for development too.

if RubyLLM.with_tools(...).ask("Do my health metrics indicate I am stressed?") model = 'claude-4-opus' else model = 'claude-4-sonnet' end

tosh · 5 months ago
If you are looking for a way to explore Apple Health data:

I have a proof of concept here that turns the Apple Health export xml file into a timeseries .parquet that you can then load into clickhouse or duckdb.

https://github.com/atlaslib/atlas

_neil · 5 months ago
Very cool. I already had this started at GitHub so I must have seen it in the past.

I love the use of a notebook as an updating dashboard here. One of my demos before this MCP server was an evidence.dev dashboard.

felixrieseberg · 5 months ago
Hey Neil, this is cool! If you package it up as a desktop extension (https://github.com/anthropics/dxt) and send it to me (https://docs.google.com/forms/d/e/1FAIpQLScHtjkiCNjpqnWtFLIQ...), I'd add it to Claude's directory of local MCP servers!
_neil · 5 months ago
Awesome! I was just looking at dxt. I’ll take a look tomorrow.