6 ms·
Show HN: Apple Health MCP Server
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 https://x.com/realtron/status/1947710791521591514
- brandonb 1y agoSuper cool. An iPhone + Apple Watch generate about 40 distinct biomarkers of your data (resting heart rate, VO2max, workouts, sleep stages, sleep apnea risk, ECGs, and so on), but the ability to interpret them is very limited. I work on an iOS health app, and I'd love to try integrating this. It'd help eliminate the step of having to manually export to a CSV every Sunday. Feel free to shoot me an email if you want to collaborate!
- guzik 1y agowe've built a wrapper around Apple Health to simplify data extraction and synchronization. If you think this might be useful, feel free to drop me a message.
- monatron 1y agoVery cool indeed. I started building something similar - relying on Auto Export [https://apps.apple.com/us/app/health-auto-export-json-csv/id1115567069 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 1y agoit 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)
- mattkrause 1y agoI 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 1y agoAgreed. I'm fine jumping through a couple hoops to get my own data in this case.
- yunohn 1y agoWhy would a malicious actor not be willing to setup the same infra as you, with an app on the iOS store to mine data once consented? I don’t see how api usage difficulty is a real security feature…
- s0sa 1y agoThis 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.
- yurishimo 1y agoThanks for the link to that app. Gonna setup something this weekend to ingest and aggregate my workout stats onto my personal website :)
- _neil 1y ago
- friggeri 1y agoThis 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)
- rikbruggink 1y agoi 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.
- _neil 1y agoI 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.
- cstone 1y agoHey - if you're interested in prototyping with real data, we've built a platform for stuff like this -- Fulcra Context (https://www.fulcradynamics.com/ 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/ https://fulcradynamics.github.io/developer-docs/), an MCP server (https://fulcradynamics.github.io/developer-docs/mcp-server/ https://fulcradynamics.github.io/developer-docs/mcp-server/), and did some experiments with ChatGPT actions as well (https://www.fulcradynamics.com/chatgpt 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.
- formerly_proven 1y agoThere 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 1y agoI 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 1y 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 1y agoI don’t think the App Store Review is as comprehensive as you think.
- dostick 1y agoWhat Apple health actually is? It’s Apple Watch. My data coming from Oura and Withings, I wonder maybe those would have better ways to integrate with actual API.
- _neil 1y agoIt would work with those devices since it all funnels into apple health. I have a Withings scale as well so it’s part of my export. But you’re right, there may be easier integration with Oura.
- woodylondon 1y agoThis 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 1y agoSimple 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 1y ago1500m no days off? Props to you
- pheeney 1y agoIs any of it open source? What tools for the CSV? I’d like to build a dashboard of my cycling rides?
- solarkraft 1y agoI am once again wishing screen time data was in Apple Health :( Exporting that is even worse.
- cstone 1y agoI agree entirely. It's especially frustrating since the DeviceActivity framework comes close, but doesn't provide enough detail for users to allow apps to track this info. The best approach we've found to tracking specific app use time is to have our app publish App Intents, and then tell users to trigger those intents with shortcuts. It's fairly effective, but very clunky to set up and has to be done app by app..
- yodamus 1y ago[dead]
- neomantra 1y agoOne could pretty easily wrap an MCP server around the ScreenTime activity SQLite database file on MacOS. You could use DuckDB like this server does. I’ve found good value in making purpose-build MCP servers like that with the general model: Data<>DuckDB<>MCP<>LLM With verbose description for the LLM of an “sql” tool endpoint for it to use to explore.
- neomantra 1y agoOK, I said it was easy and proved that by doing so in a few hours ;) I did have my sample code, but that was open source too. https://github.com/AgentDank/screentime-mcp https://github.com/AgentDank/screentime-mcp It's pretty crazy what it can do! I'll put examples once I can scrub personal info. But it has browsing history too. Sensitive data, so please be careful!!
- neomantra 1y agoMaybe tacky to turn a comment thread into a Show HN, but the top dope is always in the comments anyways. This morning I kept pushing and started getting Claude into an human-agentic loop of suggesting MCP tool description and pre-flight SQL changes (for views). I'd ask it a some MCP queries, have it examine the SQL mistakes (e.g. CoreData vs UNIX timestamps, tricky queries), then evolved it. Since the endpoint is SQL, it can generate SQL to generate better SQL.... I had some human intelligence in that (and surely at the outset), but right now mostly I'm building and restarting Claude Desktop, then prompting: "i have integrated those changes. examine my habits of concurrent browsing. identify statistical patterns in the timing and correlation of the destinations. after you do that, look at the issues you had and present new tool descriptions and sql migration. test the sql migrations before final presentation" Tool Desc: https://github.com/AgentDank/screentime-mcp/blob/main/internal/mcp/screentime_sql.tooldesc.md https://github.com/AgentDank/screentime-mcp/blob/main/intern... SQL Migration : https://github.com/AgentDank/screentime-mcp/blob/main/internal/db/duckdb_up.sql https://github.com/AgentDank/screentime-mcp/blob/main/intern...
- voska 1y agoWe built https://sensai.fit https://sensai.fit to solve this problem for ourselves. Hope it can be helpful for some of you as well.
- ellisv 1y agoI’m on mobile and can’t try it out first hand right now but looks great. Does it include health records (eg from Epic)?
- _neil 1y agoThe current version does not. I’m not sure if the official Health export includes that info. My current doctor unfortunately uses some app that doesn’t integrate with Apple Health. It would be a great feature here though.
- beaker52 1y agoIt’d be great if the agent could update things like my BP and weight.
- vincvinc 1y agoIs there any type of advocacy or laws anywhere to push Apple to make data like this intercompatible?
- Tempest1981 1y agoDid you see the earlier comment on interop? https://news.ycombinator.com/item?id=44683967 https://news.ycombinator.com/item?id=44683967
- hahahacorn 1y agoCan 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
- felixrieseberg 1y agoHey Neil, this is cool! If you package it up as a desktop extension (https://github.com/anthropics/dxt https://github.com/anthropics/dxt) and send it to me (https://docs.google.com/forms/d/e/1FAIpQLScHtjkiCNjpqnWtFLIQStChXlvVcvX8NPXkMfjtYPDPymgang/viewform https://docs.google.com/forms/d/e/1FAIpQLScHtjkiCNjpqnWtFLIQ...), I'd add it to Claude's directory of local MCP servers!
- _neil 1y agoAwesome! I was just looking at dxt. I’ll take a look tomorrow.
- hcm 1y agoLove it! For getting Apple Health data into duckdb, I’ve used this in the past: https://github.com/dogsheep/healthkit-to-sqlite https://github.com/dogsheep/healthkit-to-sqlite. (You can load the SQLite database directly in duckdb.)
- dcreater 1y agoThis 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 1y agoIt 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.
- dcreater 1y agoYes, the native export is the whole enchilada. Please do it!
- leguy 1y agoThis is SO freaking cool. I'm doing something similar for a startup, albeit in a different domain and against a massive dataset. Looking at the code (and "for the future..." note about LLM generated queries), you cannot ask arbitrary questions? Is that correct?
- _neil 1y agoNo, you can ask arbitrary queries. I’ve found that foundation models (and Claude in particular) do a great job at writing sql. It even seems to handle time series questions pretty well.
- tosh 1y agoIf 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 https://github.com/atlaslib/atlas
- _neil 1y agoVery 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.
- dcreater 1y agoCan you please add examples of actual chat questions and answers so that we can understand how it actually performs?
- _neil 1y agoGood idea. The video on Twitter has a few different queries (though I don’t expand all of them) in order to build the dashboard. If you pause it at different points, you can see some of the questions it’s asking and then subsequently writing queries for. All that said, I’ll try to add some examples to the readme.
- deleted 1y ago[deleted]
- christopherkao 1y agoHere is the link to the OP's Github Apple Health MCP: https://github.com/neiltron/apple-health-mcp https://github.com/neiltron/apple-health-mcp
- marryAnn44 1y ago[dead]