<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Bartosz Michalak</title>
    <description>The latest articles on DEV Community by Bartosz Michalak (@bartmichalak).</description>
    <link>https://dev.to/bartmichalak</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3542774%2Feaa5f287-2070-4fef-96df-ad052ccc6f8f.png</url>
      <title>DEV Community: Bartosz Michalak</title>
      <link>https://dev.to/bartmichalak</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bartmichalak"/>
    <language>en</language>
    <item>
      <title>Unlock your Apple Health data in 15 minutes: export, analyze &amp; ask AI anything about it</title>
      <dc:creator>Bartosz Michalak</dc:creator>
      <pubDate>Fri, 20 Feb 2026 10:37:06 +0000</pubDate>
      <link>https://dev.to/bartmichalak/unlock-your-apple-health-data-export-analyze-it-in-15-minutes-5ek9</link>
      <guid>https://dev.to/bartmichalak/unlock-your-apple-health-data-export-analyze-it-in-15-minutes-5ek9</guid>
      <description>&lt;p&gt;As you may know, extracting data from Apple Health is not straightforward. Apple doesn't expose a REST API, so if you want access to your data - say, to run some analysis or let LLMs work with it - you basically have two options:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Use a third-party app that leverages &lt;a href="https://developer.apple.com/documentation/healthkit" rel="noopener noreferrer"&gt;HealthKit&lt;/a&gt; to access your data and then sends it to a server or cloud storage like Google Drive / Dropbox. Apps like &lt;a href="https://apps.apple.com/pl/app/health-auto-export-json-csv/id1115567069" rel="noopener noreferrer"&gt;Auto Health Export&lt;/a&gt; exist, but they're usually paid.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use Apple's built-in export - if you have a lot of data and you've tried this before, you know how painful this process is. The export takes several long minutes and is easy to interrupt. On top of that, if you want up-to-date data, you'd need to repeat this every single day. Good luck keeping that habit!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I've been interested in wearable data for quite some time now. As a 7+ year Apple Watch user, this problem has been bothering me for a while.&lt;/p&gt;

&lt;p&gt;Some time ago with small team I worked on a project called &lt;a href="https://github.com/the-momentum/apple-health-mcp-server" rel="noopener noreferrer"&gt;Apple Health MCP&lt;/a&gt;. It was our first experiment with connecting wearable data to LLMs. It worked pretty well and the project got quite a bit of attention, but it remained mostly a curiosity - asking users to manually export their data was simply too much friction.&lt;/p&gt;

&lt;p&gt;All these problems and the journey of exploring available tools led to building an ecosystem - a platform that not only lets you export your data, but also provides a backend &amp;amp; storage, a pretty nice UI to browse that data, and an AI layer that, through an MCP server, lets you connect your data to whatever LLM client you're using. This project is called &lt;a href="https://github.com/the-momentum/open-wearables" rel="noopener noreferrer"&gt;Open Wearables&lt;/a&gt; - an &lt;strong&gt;open-source&lt;/strong&gt;, &lt;strong&gt;self-hosted&lt;/strong&gt; platform for wearable data. And it's not just Apple Health - it supports a bunch of other integrations too (Garmin, Polar, Whoop, Suunto and more). &lt;/p&gt;

&lt;p&gt;What's interesting is that the solution could appeal to two very different audiences: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;developers building applications around wearables - who would benefit from it as a middleware layer handling the complexities of provider integration, data normalisation, and so on &lt;/li&gt;
&lt;li&gt;also individual users looking for a single place to store and access their own (or their family's) wearable data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to get your Apple Health data back - step by step
&lt;/h2&gt;

&lt;p&gt;Let me show you how to actually get this done. The whole process takes about 15 minutes and you'll have your Apple Health data flowing into a platform where you can actually &lt;em&gt;do things&lt;/em&gt; with it.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Spin up Open Wearables
&lt;/h3&gt;

&lt;p&gt;First things first - you need a running instance of Open Wearables. There are basically two ways to get it running:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option A: Deploy to Railway (easiest)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the fastest route. Railway gives you a one-click deploy that sets up everything - the backend, frontend, database, Redis, background workers - all pre-configured and ready to go.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://railway.com/deploy/open-wearables-1" rel="noopener noreferrer"&gt;Deploy on Railway&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hit the link, wait a couple of minutes, and you've got a production instance running. An admin account is created automatically on first startup (&lt;code&gt;admin@admin.com&lt;/code&gt; / &lt;code&gt;secret123&lt;/code&gt;) - you can customize these credentials before deploying.&lt;/p&gt;

&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/Cn5IkLMi5Uo"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;p&gt;Keep in mind that Railway is a paid SaaS - there's no permanent free tier. New users get a one-time $5 credit for a 30-day trial, and after that the minimum cost is $5/month (Hobby plan).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option B: Run locally + expose with ngrok&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you prefer to keep things on your machine (or just want to poke around the code), you can run it locally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
git clone https://github.com/the-momentum/open-wearables.git

&lt;span class="nb"&gt;cd &lt;/span&gt;open-wearables

docker compose up &lt;span class="nt"&gt;-d&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Since the mobile app needs to reach your backend over the internet, you'll need to expose it using ngrok:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
ngrok http 8000

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This gives you a public HTTPS URL like &lt;code&gt;https://abc123.ngrok-free.app&lt;/code&gt; that points to your local backend. Keep this URL handy - you'll need it in a moment.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; For a consistent URL that doesn't change on restart, you can set a custom domain: &lt;code&gt;ngrok http 8000 --domain=your-custom-domain.ngrok-free.app&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  2. Create a user invitation code in the dashboard
&lt;/h3&gt;

&lt;p&gt;Now that your platform is running, head to the Open Wearables dashboard. You need to create a user and generate an invitation code that the mobile app will use to authenticate.&lt;/p&gt;

&lt;p&gt;Here's the flow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Log in to the dashboard &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a new user &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Generate an &lt;code&gt;invitation code&lt;/code&gt; for SDK authentication&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Copy that code - you'll paste it into the mobile app in the next step.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/GBjnl--_KL4"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Get the Open Wearables app on your phone
&lt;/h3&gt;

&lt;p&gt;This is where the 'magic' happens. The app connects to Apple Health on your device and syncs data to your Open Wearables instance in the background. Two ways to get it:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option A: Build it yourself&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The SDK repository includes a fully functional example app. If you're a developer and want to see how things work under the hood:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
git clone https://github.com/the-momentum/open_wearables_health_sdk.git

&lt;span class="nb"&gt;cd &lt;/span&gt;open_wearables_health_sdk/example

flutter pub get

flutter run

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You'll need to open &lt;code&gt;ios/Runner.xcworkspace&lt;/code&gt; in Xcode, select your development team, and make sure the HealthKit capability is enabled. And remember - &lt;strong&gt;run on a physical device&lt;/strong&gt;, HealthKit doesn't work in the simulator.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option B: Get a TestFlight invite&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Don't want to deal with building the app? Totally fair. Join our &lt;a href="https://discord.gg/qrcfFnNE6H" rel="noopener noreferrer"&gt;Discord&lt;/a&gt; and ask for a &lt;strong&gt;TestFlight&lt;/strong&gt; beta invitation - we'll get you set up.&lt;/p&gt;

&lt;p&gt;And the app should be available in the App Store soon - completely free! &lt;/p&gt;

&lt;p&gt;Once you have the app running, enter the invitation code and your API URL (e.g. &lt;code&gt;https://api.openwearables.ai&lt;/code&gt; or your ngrok URL if running locally), grant HealthKit permissions, and hit sync.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Heads up:&lt;/strong&gt; Make sure you enter the &lt;strong&gt;API URL&lt;/strong&gt;, not the dashboard URL. If you're running locally, use the ngrok URL.&lt;br&gt;


  &lt;iframe src="https://www.youtube.com/embed/MPT-Ok3pMRA"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;p&gt;By default, the app syncs your entire history. If you have a lot of data - like me, with 7 years and ~5 million data points - the full sync can take around 20 minutes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  4. Browse your data in the dashboard
&lt;/h3&gt;

&lt;p&gt;Once the sync kicks in, head back to the dashboard. Your health data should start appearing - steps, heart rate, sleep, workouts, and more. You can explore timeseries data, check trends, and just generally geek out over your own numbers. It's You have finally a place where you can actually work with it.&lt;/p&gt;

&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/NyD-EFQC1Ok"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Talk to your data with AI (MCP)
&lt;/h3&gt;

&lt;p&gt;Here's where it gets really fun. Open Wearables comes with an MCP server that lets you connect your health data to any LLM client - Claude, Cursor, or whatever you're using. Just ask questions in natural language: &lt;em&gt;"How did my sleep look last week?"&lt;/em&gt;, &lt;em&gt;"Show me my heart rate trends during workouts"&lt;/em&gt;, &lt;em&gt;"Compare my step counts this month vs last month"&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;To get it running, you'll need your Open Wearables API key (grab it from the dashboard) and add the MCP server configuration to your LLM client. The full setup guide for Claude is available &lt;a href="//docs.openwearables.io/mcp-server/claude-desktop"&gt;at docs&lt;/a&gt;, but the gist is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Get your API key from the Open Wearables dashboard&lt;/li&gt;
&lt;li&gt;Add the MCP server config to your client (Claude Desktop, ChatGPT)&lt;/li&gt;
&lt;li&gt;Start chatting with your data&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/Jb8N2jNbs1Y"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;p&gt;Have fun! &lt;/p&gt;

&lt;h2&gt;
  
  
  The best part? There's more than one.
&lt;/h2&gt;

&lt;p&gt;But if I had to highlight a few things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It's all Open Source.&lt;/strong&gt; If something is missing, if you want a feature that doesn't exist yet - you can build it. Open a PR, propose changes, contribute to the project. Or just fork it and make it your own. No vendor lock-in, no waiting for someone else to prioritize your use case.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The community.&lt;/strong&gt; We have over 100 fantastic people in our Discord, and every single one of them is passionate about wearable data. It's the kind of place where you'll find inspiration, share ideas, help each other debug things at 2 AM, and geek out over heart rate variability graphs. Whether you're a developer, a health enthusiast, or both - you'll feel at home. &lt;a href="https://discord.gg/qrcfFnNE6H" rel="noopener noreferrer"&gt;Come say hi.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You can do whatever you want with your data&lt;/strong&gt;. Get creative and have fun! For example, you could build an automation in N8N that queries the Open Wearables API, checks your daily activity, and sends you a nudge on your favourite messaging app when it's time to get moving! (you can take a look at &lt;a href="https://www.themomentum.ai/blog/turning-apple-health-data-into-actionable-personal-fitness-insights" rel="noopener noreferrer"&gt;my hackathon story&lt;/a&gt; where I built exactly that kind of automation)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hope this tutorial has been helpful and gets you closer to accessing your data! &lt;br&gt;
Here are the links for reference:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/the-momentum/open-wearables" rel="noopener noreferrer"&gt;Open Wearables GitHub repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discord.gg/qrcfFnNE6H" rel="noopener noreferrer"&gt;Discord community&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=As2eV2UqQzQ" rel="noopener noreferrer"&gt;Open Wearables walkthrough video&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;PS Let me know if you were able to complete the setup in under 15 minutes! We care deeply about a great developer / user experience, so if there's anything we can improve, we'd love to hear your feedback!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>ios</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Stop integrating wearables one by one - there's an open-source way</title>
      <dc:creator>Bartosz Michalak</dc:creator>
      <pubDate>Mon, 02 Feb 2026 12:55:51 +0000</pubDate>
      <link>https://dev.to/bartmichalak/stop-integrating-wearables-one-by-one-theres-an-open-source-way-3bd4</link>
      <guid>https://dev.to/bartmichalak/stop-integrating-wearables-one-by-one-theres-an-open-source-way-3bd4</guid>
      <description>&lt;p&gt;Hello all wearables enthusiasts! &lt;br&gt;
(and everyone who just has to integrate with them! 😁)&lt;/p&gt;

&lt;p&gt;If you're building a project with wearable data integrations, or just want to keep data from your personal wearables in one place - I believe you may find this article interesting. Here's a TL;DR so you can quickly assess if it's worth your time:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open Wearables = open-source alternative to expensive SaaS solutions that integrates data from hundreds of wearables&lt;/li&gt;
&lt;li&gt;Single REST API for Garmin, Apple Health, Whoop, Polar, Suunto (and much more in the pipeline)&lt;/li&gt;
&lt;li&gt;Self-hosted, no per-user pricing, you own the data&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;docker compose up&lt;/code&gt; and you're running&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  🚀 Wearables market is exploding
&lt;/h2&gt;

&lt;p&gt;The popularity of wearables is growing year after year. The wearables market is worth over $200 billion in 2025 and is projected to grow to $500 billion by 2030. Over 86 million Americans (almost 1/4 of the US population) use health-related wearables. Smartwatches make up nearly half of this market. &lt;/p&gt;

&lt;p&gt;CES 2026 was &lt;a href="https://counterpointresearch.com/en/insights/ces-2026-wearables-market-overview" rel="noopener noreferrer"&gt;packed with health tech and wearables announcements&lt;/a&gt; - the industry is shifting from all-in-one devices toward specialization, with focus on battery life and AI as an active tool rather than passive tracking. Over half of the health-related exhibits were tied to the "longevity economy" (valued at $35 trillion, projected to reach $95 trillion by 2050). &lt;/p&gt;

&lt;p&gt;If you're into Reddit, check out these subreddits to see how big the wearables communities are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.reddit.com/r/whoop/" rel="noopener noreferrer"&gt;r/whoop&lt;/a&gt; - 132k members&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.reddit.com/r/ouraring/" rel="noopener noreferrer"&gt;r/ouraring&lt;/a&gt; - 297k members&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.reddit.com/r/Garmin/" rel="noopener noreferrer"&gt;r/garmin&lt;/a&gt; - 541k members&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.reddit.com/r/AppleWatch/" rel="noopener noreferrer"&gt;r/AppleWatch&lt;/a&gt; - 564k members&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;(if you're building something around wearables, I actually recommend browsing these subreddits - you'll find plenty of interesting problems that still remain unsolved)&lt;/p&gt;

&lt;p&gt;Many people can't imagine working out without a watch on their wrist nowadays. If it's not tracked, it didn't happen!&lt;/p&gt;
&lt;h2&gt;
  
  
  💡 The untapped potential of wearables data
&lt;/h2&gt;

&lt;p&gt;The devices collect massive amounts of data about us. For example, Apple Health has collected 5 million measurements from me over 7 years. Look at the ones that are the most numerous:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;- HKQuantityTypeIdentifierActiveEnergyBurned: 1,934,715
- HKQuantityTypeIdentifierBasalEnergyBurned: 695,903
- HKQuantityTypeIdentifierHeartRate: 606,774
- HKQuantityTypeIdentifierDistanceWalkingRunning: 525,721
- HKQuantityTypeIdentifierStepCount: 339,895
- HKQuantityTypeIdentifierDistanceCycling: 156,524
- HKQuantityTypeIdentifierAppleStandTime: 117,785
- HKQuantityTypeIdentifierAppleExerciseTime: 84,134
- HKQuantityTypeIdentifierPhysicalEffort: 78,791
- HKQuantityTypeIdentifierWalkingStepLength: 50,668
- HKQuantityTypeIdentifierWalkingSpeed: 50,666
- HKQuantityTypeIdentifierRespiratoryRate: 45,750
- HKQuantityTypeIdentifierWalkingDoubleSupportPercentage: 42,814
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There's a ton of raw data - and researchers are just scratching the surface of what's possible. &lt;a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC9038375/" rel="noopener noreferrer"&gt;Machine learning models&lt;/a&gt; are being used to predict health issues before they become critical. &lt;a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC10708748/" rel="noopener noreferrer"&gt;AI-powered wearable analysis&lt;/a&gt; can detect patterns in heart rate, sleep, and activity that humans would never spot. Studies show that &lt;a href="https://www.nature.com/articles/s41746-025-02036-9" rel="noopener noreferrer"&gt;continuous glucose monitors paired with AI&lt;/a&gt; are changing diabetes management. The challenge is getting all this data in one place and making sense of it.&lt;/p&gt;

&lt;p&gt;If you want to build something meaningful with this data, you need to wrangle all these integrations yourself (or pay for an expensive SaaS). Unless you use something like...&lt;/p&gt;

&lt;h2&gt;
  
  
  🤔 What is Open Wearables and how can it help you?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://docs.openwearables.io/" rel="noopener noreferrer"&gt;Open Wearables&lt;/a&gt; is an open-source project that lets you pull data from hundreds of wearable devices through a single REST API. Instead of spending weeks wrestling with each provider's OAuth flows and data formats, you get one unified interface. It's self-hosted via Docker Compose, so you own your infrastructure and your data.&lt;/p&gt;

&lt;p&gt;To give you a better understanding, we've prepared a diagram to show how wearables data typically flows:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu0f2ub4k76jhsprcq10q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu0f2ub4k76jhsprcq10q.png" alt="Open Wearables Diagram" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, there are two ways to access wearables data:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cloud-based (via REST API)&lt;/strong&gt; - providers like Garmin, Whoop, or Polar expose their APIs, and Open Wearables connects to them directly&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SDK-based (via Health SDK)&lt;/strong&gt; - data lives only on the user's device (like Apple Health or Samsung Health), never hits the provider's cloud. You need a mobile app to access it and sync to your backend&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Below is an example of how the &lt;a href="https://pub.dev/packages/open_wearables_health_sdk/versions" rel="noopener noreferrer"&gt;Open Wearables Health SDK&lt;/a&gt; helps you sync user data with Open Wearables:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="s"&gt;'package:health_bg_sync/health_bg_sync.dart'&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;HealthService&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;Future&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;initialize&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="kd"&gt;async&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// 1. Configure the SDK&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;HealthBgSync&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;configure&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="nl"&gt;environment:&lt;/span&gt; &lt;span class="n"&gt;HealthBgSyncEnvironment&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;production&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// 2. Check if already signed in (session restored from Keychain)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;HealthBgSync&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;isSignedIn&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Session restored for &lt;/span&gt;&lt;span class="si"&gt;${HealthBgSync.currentUser?.userId}&lt;/span&gt;&lt;span class="s"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;// 3. Get credentials from YOUR backend&lt;/span&gt;
    &lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;credentials&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;yourBackend&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getHealthCredentials&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="c1"&gt;// 4. Sign in with the SDK&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;HealthBgSync&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;signIn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="nl"&gt;userId:&lt;/span&gt; &lt;span class="n"&gt;credentials&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;userId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nl"&gt;accessToken:&lt;/span&gt; &lt;span class="n"&gt;credentials&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;accessToken&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// 5. Request health permissions&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;HealthBgSync&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;requestAuthorization&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="nl"&gt;types:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="n"&gt;HealthDataType&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;HealthDataType&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;heartRate&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;HealthDataType&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;HealthDataType&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;workout&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;// 6. Start background sync&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;HealthBgSync&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;startBackgroundSync&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. The SDK handles background sync, retries, and data normalization. Open Wearables backend receives clean, unified data.&lt;/p&gt;

&lt;p&gt;And when you need to fetch that data? Here's an example of getting daily activity summary:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;http://localhost:8000/api/v1/users/{user_id}/summaries/activity&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;X-Open-Wearables-API-Key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;start_date&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2025-01-01&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;end_date&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2025-01-31&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Returns daily aggregated metrics - same schema for all providers
# {
#   "date": "2025-01-15",
#   "steps": 8432,
#   "distance_meters": 6240.5,
#   "active_calories_kcal": 342.5,
#   "active_minutes": 60,
#   "heart_rate": {"avg_bpm": 72, "max_bpm": 145, "min_bpm": 52},
#   "source": {"provider": "apple_health", "device": "Apple Watch Series 9"}
# }
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Simple as that! 🚀&lt;/p&gt;

&lt;h2&gt;
  
  
  🏗️ How is it built?
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://github.com/the-momentum/open-wearables" rel="noopener noreferrer"&gt;entire project&lt;/a&gt; lives in a monorepo. Why? In the age of AI coding agents, &lt;a href="https://monorepo.tools/ai" rel="noopener noreferrer"&gt;monorepos make a lot of sense&lt;/a&gt; - LLMs work better when they can see the full picture of your codebase rather than jumping between scattered repositories. Plus, it keeps things simple: one repo to clone, one place to contribute, consistent tooling across all components.&lt;/p&gt;

&lt;p&gt;*There's one exception to this rule - the &lt;a href="https://pub.dev/packages/open_wearables_health_sdk/versions" rel="noopener noreferrer"&gt;Health SDK for Flutter&lt;/a&gt; lives in a separate repository. &lt;/p&gt;

&lt;p&gt;Here's what's inside:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/the-momentum/open-wearables/tree/main/backend" rel="noopener noreferrer"&gt;&lt;strong&gt;Backend&lt;/strong&gt;&lt;/a&gt; – The heart of Open Wearables, powered by &lt;strong&gt;FastAPI&lt;/strong&gt;. We use &lt;strong&gt;PostgreSQL&lt;/strong&gt; for data storage and &lt;strong&gt;Redis&lt;/strong&gt; for session management and caching. This is where the &lt;strong&gt;Provider Integration Layer&lt;/strong&gt; lives, handling OAuth flows, data synchronization, and normalization into our unified schema.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/the-momentum/open-wearables/tree/main/frontend" rel="noopener noreferrer"&gt;&lt;strong&gt;Frontend&lt;/strong&gt;&lt;/a&gt; – Our &lt;strong&gt;Developer Portal&lt;/strong&gt; built with React + TypeScript. While developers use it to manage API keys, it's also useful for &lt;strong&gt;personal trainers&lt;/strong&gt; monitoring their athletes or &lt;strong&gt;individual users&lt;/strong&gt; who want to track health data for themselves and their families in one place.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/the-momentum/open-wearables/tree/main/docs" rel="noopener noreferrer"&gt;&lt;strong&gt;Docs&lt;/strong&gt;&lt;/a&gt; – Built with &lt;strong&gt;Mintlify&lt;/strong&gt;. We focus on great developer experience, providing interactive guides and copy-paste code snippets to get you integrated quickly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/the-momentum/open-wearables/tree/main/mcp" rel="noopener noreferrer"&gt;&lt;strong&gt;MCP&lt;/strong&gt;&lt;/a&gt; – Model Context Protocol integration, so you can plug Open Wearables data directly into your AI workflows.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🚀 How to get started &lt;em&gt;in minutes&lt;/em&gt;?
&lt;/h2&gt;

&lt;p&gt;This project is built by devs, for devs. We, as core contributors, spent over 10 years building custom software for various clients - and used many different 3rd party services along the way. Some were great, but we also had plenty of frustrating experiences. That's why developer experience (DX) is our top priority here - we want Open Wearables to be the tool we wish we had.&lt;/p&gt;

&lt;p&gt;We hate complex setups, so we made sure you can get up and running in minutes. You can start the entire stack with a single command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker compose up
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once you run this, you should see 7 up-and-running containers:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg1a64yuh1f7x4okt29v5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg1a64yuh1f7x4okt29v5.png" alt="Open Wearables Docker Containers" width="800" height="221"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then, you can run &lt;code&gt;make init&lt;/code&gt;. This sets up your database and seeds it with real-world sample data so you can see the dashboard in action immediately. An admin account is created automatically during this process, so you can use the default credentials to log in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;admin@admin.com
secret123
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once you log in, you'll see the main dashboard:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx7z3xdqgd18gk02hp17k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx7z3xdqgd18gk02hp17k.png" alt="Open Wearables developer dashboard" width="800" height="454"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can see a quick summary of the system, like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The number of users &lt;/li&gt;
&lt;li&gt;Active connections &lt;/li&gt;
&lt;li&gt;Total data points &lt;/li&gt;
&lt;li&gt;A breakdown of different data types &lt;/li&gt;
&lt;li&gt;And the latest users added to the system&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The next tab you'll discover is Users. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5fv5pbh3j6uvoxdm2h0w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5fv5pbh3j6uvoxdm2h0w.png" alt="Open Wearables Users Tab" width="800" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And here’s the 'tricky' part which we're proud of: We built Open Wearables so that &lt;strong&gt;every action possible via API is also available in the UI&lt;/strong&gt;. This means our platform isn't just for software developers - as mentioned at the beginning, it's powerful enough for personal trainers monitoring athletes or even families tracking their health data together.&lt;/p&gt;

&lt;p&gt;So, if you're a software dev - you'll be using this panel mostly for monitoring purposes and managing API keys. But if you're a wearables enthusiast or personal trainer, this panel, after small adjustments, can be your operational center for wearables data! Just look at these charts you get out of the box:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy6dtubg7qob4jcav1zby.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy6dtubg7qob4jcav1zby.png" alt="Open Wearables Sleep analytics" width="800" height="454"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're an Apple Watch user, the quickest way to test Open Wearables with your own data is through our demo app included in the Health SDK.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpac2xa8hxhxveutmi80n.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpac2xa8hxhxveutmi80n.gif" alt="Open Wearables Health SDK Demo App" width="760" height="1646"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can learn more about the SDK and how to use it in your Flutter app in the &lt;a href="https://docs.openwearables.io/sdk" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  💡 Why should you use Open Wearables as a developer?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Active community&lt;/strong&gt; - We have a &lt;a href="https://discord.gg/qrcfFnNE6H" rel="noopener noreferrer"&gt;Discord server&lt;/a&gt; where the core team hangs out. Got stuck? Have an idea? Want to discuss a PR before submitting? We're there. There's also &lt;a href="https://github.com/the-momentum/open-wearables/discussions" rel="noopener noreferrer"&gt;GitHub Discussions&lt;/a&gt; if that's more your style.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Full customization&lt;/strong&gt; - It's open-source, so you can fork it, extend it, or rip out parts you don't need. Want to add a new niche wearable provider? We prepared a &lt;a href="https://docs.openwearables.io/dev-guides/how-to-add-new-provider" rel="noopener noreferrer"&gt;guide&lt;/a&gt; so you (or your favorite LLM) can do it without any hassle. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Skip the boring (and challenging) parts&lt;/strong&gt; - I don't want to throw around lofty phrases like 'Save months by using X'. But just look at our &lt;a href="https://github.com/the-momentum/open-wearables/commits/main/" rel="noopener noreferrer"&gt;git history&lt;/a&gt;, the number of commits and lines of code - building a stable solution that integrates wearables data is not a tivial task. OAuth flows, token refresh logic, data normalization across different providers, rate limiting, webhook handling... we've already dealt with all of that (and still fighting).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  👋 Who's behind this?
&lt;/h2&gt;

&lt;p&gt;We're a small, but experienced team - we've been building health &amp;amp; fitness apps for clients for years and kept seeing the same integration problems pop up across different projects - so we decided to solve them once and for all. Oh, and most of us are wearables enthusiasts ourselves - we actually use this stuff daily.&lt;/p&gt;

&lt;p&gt;Core contributors:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/bartmichalak" rel="noopener noreferrer"&gt;bartmichalak&lt;/a&gt; - Owns product vision and roadmap, but also actively contributes to the codebase.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/KaliszS" rel="noopener noreferrer"&gt;KaliszS&lt;/a&gt; - Python, Rust and Go developer in one. Good luck getting your PR past his code review - he catches every LLM hallucination.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/czajkub" rel="noopener noreferrer"&gt;czajkub&lt;/a&gt; - Python dev, mainly responsible for Apple Health integrations.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/farce1" rel="noopener noreferrer"&gt;farce1&lt;/a&gt; - AI wizard, maxing out his capabilities with agentic AI workflows.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/FBegiello" rel="noopener noreferrer"&gt;FBegiello&lt;/a&gt; - AI/ML specialist coordinating all AI implementations around wearables data.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Gasiek" rel="noopener noreferrer"&gt;Gasiek&lt;/a&gt; - Brought many beautiful colors to the developer dashboard.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/healthkowshik" rel="noopener noreferrer"&gt;Health Kowshik&lt;/a&gt; - Pushing forward MCP and WHOOP integrations. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  👉 Next steps
&lt;/h2&gt;

&lt;p&gt;If you made it this far - thank you for your attention! Holding someone's focus these days isn't easy, so I appreciate it. Drop a comment and let me know what you think about our platform. If you're wondering what to do next, here's what I'd suggest:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/the-momentum/open-wearables" rel="noopener noreferrer"&gt;Leave a star on the repo&lt;/a&gt; - it helps us a lot!&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.openwearables.io/quickstart" rel="noopener noreferrer"&gt;Run the project&lt;/a&gt; - &lt;code&gt;docker compose up&lt;/code&gt; and you're good to go&lt;/li&gt;
&lt;li&gt;Integrate your first wearable data (your users or your own!)
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://discord.gg/qrcfFnNE6H" rel="noopener noreferrer"&gt;Join the Discord&lt;/a&gt; - say hi, tell us what you're trying to build&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.openwearables.io/" rel="noopener noreferrer"&gt;Read the docs&lt;/a&gt; - plenty of examples and guides there&lt;/li&gt;
&lt;li&gt;Build something great! 🚀&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>api</category>
      <category>iot</category>
      <category>opensource</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Apple Health MCP Server: Use Cases for Developers</title>
      <dc:creator>Bartosz Michalak</dc:creator>
      <pubDate>Thu, 06 Nov 2025 04:12:00 +0000</pubDate>
      <link>https://dev.to/momentumai/apple-health-mcp-server-use-cases-for-developers-kaa</link>
      <guid>https://dev.to/momentumai/apple-health-mcp-server-use-cases-for-developers-kaa</guid>
      <description>&lt;h1&gt;
  
  
  Apple Health MCP Server: Use Cases for Developers
&lt;/h1&gt;

&lt;p&gt;Apple Health stores years of health data from workouts, sleep tracking, heart rate measurements, and step counts. While this data is valuable for building personalized health applications, accessing it has always been challenging. Apple Health exports come as complex XML files that require significant parsing effort to use effectively.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Apple Health MCP Server
&lt;/h2&gt;

&lt;p&gt;The Apple Health MCP Server is an open-source tool that implements the Model Context Protocol, providing a clean interface for accessing Apple Health data. It takes Apple Health XML exports, indexes them in DuckDB for fast querying, and exposes the data through tools that AI agents can use naturally. The server also supports Elasticsearch integration for advanced search capabilities.&lt;/p&gt;

&lt;p&gt;The server handles XML structure analysis, health record search, data extraction by type, and trend generation. Instead of building custom XML parsers, developers get structured access to health data through simple API calls that work with AI applications like Claude Desktop.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why It Matters
&lt;/h2&gt;

&lt;p&gt;Building health applications typically means dealing with fragmented data sources and inconsistent formats. Apple Health solves data fragmentation, but its XML export format creates technical challenges. Parsing Apple's XML structure requires domain knowledge and custom code for each data type you want to extract.&lt;/p&gt;

&lt;p&gt;The MCP server eliminates this friction. Developers can query health data using natural language rather than writing complex parsing logic. This means more time building features that help users and less time wrestling with data infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use Cases for Developers
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Fitness and Training Applications
&lt;/h3&gt;

&lt;p&gt;Fitness apps can leverage complete Apple Health histories to create personalized workout recommendations. A running coach app can query average weekly mileage over months and analyze rest day patterns between long runs. This historical context enables realistic training progressions based on actual performance rather than user estimates.&lt;/p&gt;

&lt;p&gt;Sleep coaching applications benefit similarly by analyzing sleep patterns alongside other lifestyle factors. They can correlate sleep quality with workout intensity, daily activity levels, and timing patterns to provide targeted improvement recommendations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Wellness and Habit Tracking
&lt;/h3&gt;

&lt;p&gt;Wellness applications help users understand connections between different health metrics. Users can discover how their step count affects mood scores or whether meditation practice correlates with stress levels measured through heart rate variability. These insights require cross-referencing multiple data types over extended periods, which the MCP server handles automatically.&lt;/p&gt;

&lt;p&gt;The server's trend analysis tools identify patterns that would be difficult to spot manually, enabling apps to surface meaningful insights without building custom analytics infrastructure.&lt;/p&gt;

&lt;h3&gt;
  
  
  Corporate Wellness Platforms
&lt;/h3&gt;

&lt;p&gt;Enterprise wellness solutions can analyze employee health trends while maintaining privacy. Companies building B2B wellness platforms can query aggregate activity levels across teams, helping design better wellness initiatives based on actual usage patterns rather than assumptions.&lt;/p&gt;

&lt;p&gt;These platforms often serve clients willing to pay premium prices for personalized medicine approaches, where detailed health analysis justifies higher service costs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Research and Analytics Tools
&lt;/h3&gt;

&lt;p&gt;Researchers studying personal health patterns can access structured data from Apple Health exports without building custom parsers for each study. A research platform can quickly extract heart rate data during workout sessions across hundreds of participants, standardizing the analysis process.&lt;/p&gt;

&lt;p&gt;Data enthusiasts building personal health dashboards can ask complex questions about their metrics without database expertise. The natural language interface makes health data exploration accessible to non-technical users while providing the depth that power users require.&lt;/p&gt;

&lt;h3&gt;
  
  
  AI Health Assistants and Chatbots
&lt;/h3&gt;

&lt;p&gt;Developers building AI health assistants can use the MCP server to create context-aware coaching experiences. An AI assistant can notice that a user's resting heart rate has been elevated for several days while sleep quality decreased, then suggest recovery strategies based on what worked during similar periods in their historical data.&lt;/p&gt;

&lt;p&gt;These applications become particularly powerful when they can reference years of user data to provide personalized recommendations rather than generic health advice.&lt;/p&gt;

&lt;h3&gt;
  
  
  Clinical Decision Support Tools
&lt;/h3&gt;

&lt;p&gt;Healthcare applications can use Apple Health data to provide additional context during patient consultations. While not replacing clinical monitoring, the lifestyle data helps clinicians understand patient behavior patterns between visits.&lt;/p&gt;

&lt;p&gt;A telehealth platform might analyze a patient's activity levels and sleep patterns leading up to reported symptoms, helping providers make more informed recommendations during virtual consultations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;The Apple Health MCP Server is available on GitHub with Docker setup and documentation for popular MCP clients. Development teams can integrate it into existing applications or use it as the foundation for new health-focused products.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Resources:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="//github.com/the-momentum/apple-health-mcp-server"&gt;GitHub Repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=yuP0xVd8N-I" rel="noopener noreferrer"&gt;Apple Health MCP Server Demo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="//modelcontextprotocol.io"&gt;Model Context Protocol&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="//github.com/the-momentum"&gt;Momentum Open Source&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The server represents a significant acceleration in accessing health context for application developers. Teams can focus on creating value-added features rather than building data processing pipelines.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>apple</category>
      <category>opensource</category>
      <category>ai</category>
    </item>
    <item>
      <title>FHIR MCP Server: Use Cases for Healthcare Developers</title>
      <dc:creator>Bartosz Michalak</dc:creator>
      <pubDate>Wed, 05 Nov 2025 12:36:34 +0000</pubDate>
      <link>https://dev.to/momentumai/fhir-mcp-server-use-cases-for-healthcare-developers-4c5i</link>
      <guid>https://dev.to/momentumai/fhir-mcp-server-use-cases-for-healthcare-developers-4c5i</guid>
      <description>&lt;h1&gt;
  
  
  FHIR MCP Server: Use Cases for Healthcare Developers
&lt;/h1&gt;

&lt;p&gt;Healthcare systems generate vast amounts of structured clinical data through Electronic Health Records (EHRs), but accessing this information efficiently requires deep knowledge of FHIR standards and medical terminology. FHIR is the gold standard for healthcare data exchange, but its complexity often becomes a barrier for developers who want to build healthcare AI solutions.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is FHIR MCP Server
&lt;/h2&gt;

&lt;p&gt;The FHIR MCP Server is an open-source tool that implements the Model Context Protocol, providing a natural language interface for FHIR-compliant healthcare systems. It bridges the gap between complex FHIR resources and AI applications by handling the technical complexity of healthcare data standards.&lt;/p&gt;

&lt;p&gt;The server provides full CRUD operations on major FHIR resources like Patient, Observation, Condition, and Medication through tools that AI agents can use naturally. Instead of learning FHIR specifications and writing custom integration code, developers can query clinical data using conversational language through MCP-compatible clients like Claude Desktop.&lt;/p&gt;

&lt;p&gt;Key capabilities include automatic LOINC code validation to prevent AI hallucination of medical terms, intelligent document processing through vector search, and seamless integration with existing FHIR-compliant backends like Medplum or Epic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why It Matters for Healthcare Developers
&lt;/h2&gt;

&lt;p&gt;Building healthcare applications typically means spending weeks learning FHIR documentation before writing a single line of application code. Even experienced developers struggle with medical terminology validation, OAuth2 flows for FHIR servers, and the complexity of healthcare data relationships.&lt;/p&gt;

&lt;p&gt;The FHIR MCP Server eliminates this learning curve. Developers can focus on building clinical features instead of becoming FHIR experts. The server handles authentication complexity, prevents medical code hallucination, and provides semantic search across clinical documents - all through simple natural language queries.&lt;/p&gt;

&lt;p&gt;his approach is particularly valuable when building AI-powered clinical tools where accuracy is critical and development speed determines market success. Unlike traditional APIs that require developers to understand complex FHIR data models where nearly all fields are optional, MCP enables AI agents to adaptively select appropriate tools and input parameters, iteratively refining their approach when encountering errors.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use Cases for Developers
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Clinical Decision Support Systems
&lt;/h3&gt;

&lt;p&gt;Healthcare developers building CDSS tools can leverage patient medical histories to help clinicians make better decisions. A doctor reviewing a patient with headaches can ask an AI assistant whether any previously diagnosed conditions might be related to current symptoms.&lt;/p&gt;

&lt;p&gt;The FHIR MCP Server automatically retrieves relevant patient conditions, analyzes medication history, and checks recent lab results to provide a complete clinical picture. This eliminates the manual process of searching through multiple EHR screens and reduces the risk of missing important clinical connections.&lt;/p&gt;

&lt;h3&gt;
  
  
  EHR Integration and Analytics
&lt;/h3&gt;

&lt;p&gt;Development teams building analytics dashboards for healthcare organizations can use FHIR MCP Server to query clinical data without writing complex FHIR queries. Instead of having technical teams become bottlenecks for every data analysis request, clinical staff can ask questions directly.&lt;/p&gt;

&lt;p&gt;A quality improvement team can query "Show me all patients with diabetes who haven't had an A1C test in the past 6 months" without understanding FHIR resource structures or LOINC codes. The server handles the medical terminology and returns accurate results.&lt;/p&gt;

&lt;h3&gt;
  
  
  Healthcare AI Applications
&lt;/h3&gt;

&lt;p&gt;AI-powered healthcare tools require reliable access to structured clinical data. Developers building diagnostic support tools, treatment recommendation engines, or clinical research platforms can use FHIR MCP Server to ensure their AI models receive accurate medical data.&lt;/p&gt;

&lt;p&gt;The server's built-in LOINC validation prevents common issues where AI models hallucinate medical codes or misinterpret clinical terminology. This accuracy is essential for healthcare applications where incorrect data interpretation can impact patient care.&lt;/p&gt;

&lt;h3&gt;
  
  
  Telemedicine and Remote Monitoring
&lt;/h3&gt;

&lt;p&gt;Telemedicine platforms need quick access to patient histories during virtual consultations. Instead of clinicians manually searching through patient records, AI assistants powered by FHIR MCP Server can surface relevant information contextually.&lt;/p&gt;

&lt;p&gt;A telemedicine provider can ask "What chronic conditions does this patient have and what medications are they currently taking?" The server processes the query against FHIR resources and returns structured information that helps providers make informed decisions during time-limited virtual visits.&lt;/p&gt;

&lt;h3&gt;
  
  
  Clinical Research and Data Analysis
&lt;/h3&gt;

&lt;p&gt;Research teams conducting clinical studies often need to extract specific patient cohorts or analyze treatment outcomes across large datasets. FHIR MCP Server enables researchers to query clinical databases using natural language instead of writing complex database queries.&lt;/p&gt;

&lt;p&gt;Researchers can ask "Find all patients diagnosed with hypertension in the last two years who are currently on ACE inhibitors" and receive accurate results without deep FHIR knowledge. This accelerates research timelines and reduces technical barriers for clinical investigators.&lt;/p&gt;

&lt;h3&gt;
  
  
  Healthcare Workflow Automation
&lt;/h3&gt;

&lt;p&gt;Healthcare organizations building internal tools for care coordination can use FHIR MCP Server to automate routine clinical workflows. Care managers can set up automated queries to identify patients who need follow-up care or are due for preventive screenings.&lt;/p&gt;

&lt;p&gt;The server can power notifications like "Identify diabetic patients who haven't had eye exams in 12 months" or "Find patients on blood thinners who need upcoming lab monitoring." These queries run automatically and help healthcare teams stay proactive about patient care.&lt;/p&gt;

&lt;h2&gt;
  
  
  When FHIR MCP Server Adds Value
&lt;/h2&gt;

&lt;p&gt;FHIR MCP Server is most valuable when you're building healthcare applications that need to integrate with existing clinical systems, require medical terminology accuracy, or want to provide AI-powered clinical insights. It's particularly useful for teams that want to prototype healthcare AI features quickly without investing months in FHIR learning.&lt;/p&gt;

&lt;p&gt;The server works best for applications where clinical accuracy is critical, integration with EHR systems is required, or where non-technical healthcare staff need to query clinical data directly. It's designed for scenarios where generic AI tools aren't sufficient because healthcare-specific validation and terminology are essential. Traditional API endpoints often fall short in healthcare scenarios due to FHIR's complexity - making it an ideal use case for MCP's adaptive, AI-driven approach to data interaction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;The FHIR MCP Server is available on GitHub with Docker setup and works with popular FHIR backends like Medplum out of the box. The server includes comprehensive documentation, demo videos, and can be configured with Claude Desktop or any MCP-compatible client in under five minutes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Resources:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="//github.com/the-momentum/fhir-mcp-server"&gt;GitHub Repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=-jF9eI_W7rs" rel="noopener noreferrer"&gt;FHIR MCP Server Demo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://modelcontextprotocol.io/" rel="noopener noreferrer"&gt;Model Context Protocol&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="//github.com/the-momentum"&gt;Momentum Healthcare Tools&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For healthcare development teams, the server provides immediate access to clinical data through natural language interfaces, allowing teams to focus on building features that improve patient care rather than wrestling with healthcare data standards.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>python</category>
      <category>healthcare</category>
      <category>mcp</category>
    </item>
    <item>
      <title>Apple Health Data Analysis with AI: Our Hackathon Story</title>
      <dc:creator>Bartosz Michalak</dc:creator>
      <pubDate>Fri, 24 Oct 2025 05:59:29 +0000</pubDate>
      <link>https://dev.to/momentumai/apple-health-data-analysis-with-ai-our-hackathon-story-4mk7</link>
      <guid>https://dev.to/momentumai/apple-health-data-analysis-with-ai-our-hackathon-story-4mk7</guid>
      <description>&lt;p&gt;Key Takeaways&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Personal health metrics like VO2 max become truly actionable when you can ask questions about them and get AI-powered insights rather than just viewing raw numbers in an app.&lt;/li&gt;
&lt;li&gt;The hackathon solution eliminates two major friction points: complicated setup processes and the need for manual data exports, making continuous access to Apple Health data practical for everyday users.&lt;/li&gt;
&lt;li&gt;By connecting Apple Health data through a MCP Server connected to LLM Client, users can have natural conversations with AI assistants about their workout performance, trends, and areas for improvement.&lt;/li&gt;
&lt;li&gt;Automation tools like n8n enable scheduled fitness summaries and coaching feedback delivered straight to your inbox, turning passive data collection into active motivation.&lt;/li&gt;
&lt;li&gt;The project is evolving toward a complete open-source ecosystem that will support multiple wearables, local LLM models for privacy, and custom reports for trainers, making personalized fitness insights accessible to millions of smartwatch users worldwide.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Apple Health is a great source of various metrics. But what do all of these metrics mean? With each new version of iOS and WatchOS, we get more and more insights, but it's still far from ideal. I'll give you an example from my personal life.&lt;/p&gt;

&lt;p&gt;A while back, I was reading Outlive. One chapter made the biggest impression on me. It was about VO2 max, what this metric says about our health, and what its value means for our current and future capabilities. I really love hiking, so Peter Attia couldn't have reached me with a better message. He showed what different values of VO2 max mean when it comes to fitness capabilities at different ages. The graph shows the decline of maximum oxygen uptake (VO2 max) with age for three fitness groups. You can clearly see that someone in high fitness condition (95th percentile) at age 62 has the same aerobic capacity as an average 25-year-old. Meanwhile, someone in poor condition (5th percentile) may struggle with simple activities like quickly climbing stairs already at age 45.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg64z9km5ux5pkzef2z66.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg64z9km5ux5pkzef2z66.png" alt="“VO2 max chart comparing high, average, and low fitness percentiles by age, used to interpret Apple Health data for aerobic capacity.”" width="650" height="957"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Source: Jayson Gifford&lt;/em&gt; (&lt;a href="https://x.com/JaysonGifford/status/1537185279781482496" rel="noopener noreferrer"&gt;https://x.com/JaysonGifford/status/1537185279781482496&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;So I was really curious: what's my current VO2 max? I was pretty confident about this value since I considered myself a pretty fit person. I ran quite a bit, played soccer, cycled, played squash, and walked a lot. So it couldn't be bad. But when I checked the values, it turned out my VO2 max didn't look that good at all.&lt;/p&gt;

&lt;p&gt;I was below average. I looked at the table from the book again and realized I had to do something about it. I checked how I could increase this value. One way was interval running. I thought, why not? After all, I like running; I only needed to change the type of training.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F139z6uzhuerq0fdcnd57.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F139z6uzhuerq0fdcnd57.png" alt=" " width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So I added intervals to my running, and after a while, I started seeing results. I was curious, though: is my running technique and interval training good? Besides progress in VO2 max values, am I also making progress in my times? Could any of my habits (like getting relatively little sleep) be negatively affecting these values? I couldn't find answers to any of these questions directly in the app, so I started wondering what if I used LLMs to analyze my data?&lt;/p&gt;

&lt;p&gt;That's how the idea for creating an &lt;a href="https://github.com/the-momentum/apple-health-mcp-server" rel="noopener noreferrer"&gt;Apple Health MCP server&lt;/a&gt; was born, which you can read more about here.&lt;/p&gt;

&lt;p&gt;After a while, it turned out this solution had two main problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Difficulty with installation and setup, though it wasn't a problem for me personally since you only need to do it once, many friends asked me for help, and every time it took forever.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Data updates, the server relied on an export.xml file, which was the result of manually exporting data from Apple Health. In the long run, this was a really annoying process because to have current data, I had to spend about 10 minutes each time on manual export and then transfer the data to my computer.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But finally, an opportunity came up to solve these problems. That opportunity was a hackathon.&lt;/p&gt;

&lt;h2&gt;
  
  
  What did we do during the hackathon?
&lt;/h2&gt;

&lt;p&gt;The goal was simple: solve the two problems above. My personal ambition was to “free” my data from Apple Health, make it available through an API, and then expose it to LLMs (like Claude) via an &lt;a href="https://github.com/the-momentum/apple-health-mcp-server" rel="noopener noreferrer"&gt;MCP server&lt;/a&gt;. The stretch goal was to add automation that would, for example, send a weekly summary comparing the results to the previous week.&lt;/p&gt;

&lt;p&gt;So our architecture looked roughly like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjysnmsefazj1dyzvz4kq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjysnmsefazj1dyzvz4kq.png" alt="Architecture diagram: Apple Health via HealthKit to Export App, REST API, MCP server, then LLM client and n8n workflow processing Apple Health data." width="800" height="330"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Below you'll find a short description of each system component.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mobile (export) app
&lt;/h3&gt;

&lt;p&gt;The only way to have continuous access to Apple Health data is through integration with &lt;a href="https://developer.apple.com/documentation/healthkit" rel="noopener noreferrer"&gt;Apple HealthKit&lt;/a&gt;, so we needed an application. Our hackathon team didn't have a mobile developer, and there were only three of us. We determined this might be too ambitious a task for several hours. We therefore decided to use the &lt;a href="https://apps.apple.com/us/app/health-auto-export-json-csv/id1115567069" rel="noopener noreferrer"&gt;Apple Health Export&lt;/a&gt; application, which enabled exporting data to external sources, including an HTTP endpoint.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fghhsmupryqd602bjfqsg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fghhsmupryqd602bjfqsg.png" alt=" " width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Backend
&lt;/h3&gt;

&lt;p&gt;The first component we needed to create was the backend. From building the &lt;a href="https://github.com/the-momentum/apple-health-mcp-server" rel="noopener noreferrer"&gt;Apple Health MCP&lt;/a&gt;, we already had experience with what data is available in Apple Health and what data models we would need. However, we made the decision that at the hackathon we would only handle workout data, omitting health metrics. The demo was supposed to focus on summarizing workout data, providing interesting insights, and motivation to keep pushing.&lt;/p&gt;

&lt;p&gt;We based the backend on FastAPI. For this purpose, we used &lt;a href="https://github.com/the-momentum/python-ai-kit" rel="noopener noreferrer"&gt;python-ai-kit&lt;/a&gt;, a boilerplate that significantly accelerates the initial steps of application development. Thanks to this, we could focus on the actual work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;creating models&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;exposing a webhook consuming data sent by the mobile application&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;exposing an endpoint returning workout data&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That was really quick. With the help of generative AI (Cursor), we built all of these parts pretty fast; however, it wouldn't have been possible without knowing how Apple Health data is structured, so we could use the experience from building the Apple Health MCP Server.&lt;/p&gt;

&lt;p&gt;The most important model was Workout:&lt;/p&gt;

&lt;p&gt;`class Workout(Base):&lt;br&gt;
    &lt;strong&gt;tablename&lt;/strong&gt; = "workouts"&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;id: Mapped[UUIDType] = mapped_column(UUID(as_uuid=True), primary_key=True)
name: Mapped[str | None] = mapped_column(String(255))
location: Mapped[str | None] = mapped_column(String(100))
start: Mapped[datetime] = mapped_column(DateTime(timezone=True))
end: Mapped[datetime] = mapped_column(DateTime(timezone=True))
duration: Mapped[Decimal | None] = mapped_column(Numeric(15, 5))

# aggregate metrics
active_energy_burned_qty: Mapped[Decimal | None] = mapped_column(Numeric(15, 5))
active_energy_burned_units: Mapped[str | None] = mapped_column(String(50))
distance_qty: Mapped[Decimal | None] = mapped_column(Numeric(15, 5))
distance_units: Mapped[str | None] = mapped_column(String(50))
intensity_qty: Mapped[Decimal | None] = mapped_column(Numeric(15, 5))
intensity_units: Mapped[str | None] = mapped_column(String(50))
humidity_qty: Mapped[Decimal | None] = mapped_column(Numeric(10, 2))
humidity_units: Mapped[str | None] = mapped_column(String(10))
temperature_qty: Mapped[Decimal | None] = mapped_column(Numeric(10, 2))
temperature_units: Mapped[str | None] = mapped_column(String(10))

# relationships
heart_rate_data: Mapped[list["HeartRateData"]] = relationship(
    back_populates="workout",
    cascade="all, delete-orphan",
    passive_deletes=True,
)
heart_rate_recovery: Mapped[list["HeartRateRecovery"]] = relationship(
    back_populates="workout",
    cascade="all, delete-orphan",
    passive_deletes=True,
)
active_energy: Mapped[list["ActiveEnergy"]] = relationship(
    back_populates="workout",
    cascade="all, delete-orphan",
    passive_deletes=True,
)`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;This model captures comprehensive workout information, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Temporal data: workout duration and start/end times for time-series analysis.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Performance metrics: active energy burned, distance covered, workout intensity.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Environmental conditions: temperature and humidity during exercise.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Detailed heart rate insights through relationships (real-time HR data during workouts, post-workout recovery rates, and energy expenditure patterns).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Location context: indoor vs. outdoor activities.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Looking at this carefully, you'll realize it needs improvements, for example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Lack of indexing on commonly queried fields (start/end dates, location, workout name).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No validation for data ranges (e.g., temperature, humidity, duration must be positive).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Workout type field is a string instead of an enum.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;No source tracking to identify data origin (Apple Watch, iPhone, third-party apps).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, due to hackathon time constraints, we prioritized getting a working prototype over data model polishing.&lt;/p&gt;

&lt;h3&gt;
  
  
  MCP Server
&lt;/h3&gt;

&lt;p&gt;The next step was to create an MCP server. We again leveraged python-ai-kit, built on top of the &lt;a href="https://gofastmcp.com/getting-started/welcome" rel="noopener noreferrer"&gt;FastMCP framework&lt;/a&gt;. Below you can see how this boilerplate streamlines project creation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/6ZMzNyOuUpg" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since FastAPI, which we were using in our backend, exposes OpenAPI by default, we were able to ask Cursor to add two tools: get_heart_rate and get_workouts.&lt;/p&gt;

&lt;p&gt;The logic was simple. The tools were essentially API wrappers without adding too much custom logic on top of them. However, it was a hackathon, and we simply needed a working version.&lt;/p&gt;

&lt;p&gt;By basing the server on FastMCP, we were able to leverage deployment via &lt;a href="https://fastmcp.cloud/" rel="noopener noreferrer"&gt;fastmcp.cloud&lt;/a&gt;. The only thing we had to do was connect and specify the GitHub repository where the MCP server was located, and that went very quickly.&lt;/p&gt;

&lt;p&gt;fastmcp.cloud also provides tools for debugging MCP servers and the ability to view logs, which is very useful during development.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw0762estl8dtat1xnc0k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw0762estl8dtat1xnc0k.png" alt=" " width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  N8N automation
&lt;/h3&gt;

&lt;p&gt;Since we still had some time left, we decided to add automation in N8N.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1m356lwztusy620uq22h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1m356lwztusy620uq22h.png" alt="n8n workflow using Apple Health data: fetch workouts via REST API, generate AI summary, output results, and send summary by email." width="800" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It was pretty straightforward, which is why I love N8N. It's ideal for very fast prototyping due to many ready-made integrations.&lt;/p&gt;

&lt;p&gt;What you can see on the diagram (from the left):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;HTTP request node: it requested our backend to fetch workout data. We used query params to filter workouts only from the latest month.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AI summary node: it took the data returned by the API, then, using an OpenAI model, prepared a summary. We had quite a bit of fun creating prompts and setting the tone of voice. Some of the generated summaries weren't nice.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Summary sending by e-mail node: it's quite self-explanatory.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;N8N allows you to save the flow configuration in a .json file, so it’s easy to experiment and keep a stable version safe in the repository.&lt;/p&gt;

&lt;h3&gt;
  
  
  Claude
&lt;/h3&gt;

&lt;p&gt;To test our MCP server, we used Claude. Since the server was available online, the configuration was very straightforward.&lt;/p&gt;

&lt;p&gt;Claude → Settings → Connectors → Add custom connector → Set name and URL → Done.&lt;/p&gt;

&lt;p&gt;Tip: If you're using an enterprise Claude subscription, the “Add custom connector” option may be unavailable to you. Custom extensions must be activated by the organization administrator. Then it will be possible to select it from the “Browse connectors” list.&lt;/p&gt;

&lt;p&gt;Once added, we could check if Claude could see all the needed tools&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9ne06brxpvwpa54j7uhe.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9ne06brxpvwpa54j7uhe.gif" alt=" " width="1202" height="1092"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How did the solution work?
&lt;/h2&gt;

&lt;p&gt;Demo time came faster than we expected. Like every team, we had three minutes to present our solution.&lt;/p&gt;

&lt;p&gt;I started the presentation by asking Claude what it thought about my September activity. The summary was quite comprehensive and aligned with reality (I had to check in the Apple Health app because I didn't think I had worked out that many times in total).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ov7316os7qlmonlx43v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ov7316os7qlmonlx43v.png" alt=" " width="800" height="1100"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I also asked it about the highlights.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7otgddvykrv82mwn7m0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7otgddvykrv82mwn7m0.png" alt=" " width="800" height="591"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Unfortunately, we didn't have time to construct questions to sensibly utilize the data from the MCP tool that returned heart rate data. If you look closely, not everything worked perfectly, the calorie count was incorrectly returned for some reason. It's impossible that I burned 1,740 calories during a ~7 km run. But it was a demo, and nobody noticed.&lt;/p&gt;

&lt;p&gt;If you read the introduction of this article, you may also notice that although I also cared about analyzing my VO2 max, the summary doesn't mention it at all. That's right. As I mentioned during the backend implementation, we decided to severely limit the scope of supported data due to limited time.&lt;/p&gt;

&lt;p&gt;Next, we presented the result of our automation created in N8N. For the demo, we decided to choose a gentler version of the coach (though still demanding).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmj842davmdycp04m4cpi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmj842davmdycp04m4cpi.png" alt=" " width="800" height="742"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, I have some things to improve.&lt;/p&gt;

&lt;p&gt;Were we satisfied with our solution? Yes, we managed to ensure continuous data flow (which was previously a problem) and demonstrate that, thanks to the MCP server, our chosen LLM client has continuous access to the data. We were also very satisfied with how python-ai-kit, which we've been intensively developing recently, helped us set up both the backend and the MCP server.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/the-momentum/fit-happens-hackathon" rel="noopener noreferrer"&gt;The hackathon repository is available here.&lt;/a&gt;&lt;br&gt;
You'll find all the above-described modules in it: backend, MCP server, and N8N workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next?
&lt;/h2&gt;

&lt;p&gt;The demo made quite a good impression (though we didn't win). However, for us, it was just the beginning. AI insights based on wearables data are something we've been thinking about for quite some time.&lt;/p&gt;

&lt;p&gt;At Momentum, we also collaborated with many companies that utilized wearables data in one way or another, thanks to which we learned a lot about them. We know that time-series data analysis isn't always simple and straightforward.&lt;/p&gt;

&lt;p&gt;We plan to develop the solution whose development we started at the hackathon. On our roadmap at this moment is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;support for all data supported by Apple Health&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;fixing all the known issues in the Apple Health MCP Server (issues)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;creating our own open-source application that will allow users to export data but also analyze it directly on their phone&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;support for other wearables, such as Garmin, Fitbit, or Oura Ring&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;a web application that will allow browsing data and conversing with it&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ability to share data with your trainer and generate custom reports for them&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;support for local LLM models (we know how important privacy is in healthcare)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;model fine-tuning&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;many more&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What’s more, we will build this ecosystem as an open-source solution, so we encourage you to follow our &lt;a href="https://github.com/the-momentum" rel="noopener noreferrer"&gt;Momentum GitHub&lt;/a&gt; to stay informed.&lt;/p&gt;

&lt;p&gt;The wearables market is huge. According to the &lt;a href="https://www.demandsage.com/smartwatch-statistics/" rel="noopener noreferrer"&gt;latest data&lt;/a&gt;, there are over 450 million smartwatch users worldwide (as of the end of September 2025), and their number is growing rapidly. We believe that these users deserve the opportunity to leverage the latest technologies such as gen AI to receive personalized health and fitness insights.&lt;/p&gt;

&lt;p&gt;We’d love for you to explore the &lt;a href="https://github.com/the-momentum/apple-health-mcp-server" rel="noopener noreferrer"&gt;Apple Health MCP repo&lt;/a&gt;, try it out with your own Apple Health exports, and share feedback or contributions. Open source works best when it’s collaborative, and this is our invitation to build the future of healthtech with us by proposing new features, participating in collaboration, and helping shape the direction of the project.&lt;/p&gt;

</description>
      <category>hackathon</category>
      <category>ai</category>
      <category>mcp</category>
      <category>opensource</category>
    </item>
    <item>
      <title>FHIR MCP Server: Empowering Healthcare with Natural Language Interfaces</title>
      <dc:creator>Bartosz Michalak</dc:creator>
      <pubDate>Wed, 08 Oct 2025 07:26:23 +0000</pubDate>
      <link>https://dev.to/momentumai/fhir-mcp-server-empowering-healthcare-with-natural-language-interfaces-3nn1</link>
      <guid>https://dev.to/momentumai/fhir-mcp-server-empowering-healthcare-with-natural-language-interfaces-3nn1</guid>
      <description>&lt;p&gt;&lt;strong&gt;Open-source FHIR MCP Server&lt;/strong&gt;, a tool that enables users to work with healthcare data using natural language-removing the need for in-depth FHIR expertise and reducing mistakes such as AI-generated code errors. Built on the Model Context Protocol, it integrates with AI clients like Claude, Cursor, and other MCP-compatible platforms. The server addresses key EHR integration challenges, including medical terminology validation, regulatory compliance, and clinical data accuracy. It supports full FHIR resource operations, automatic LOINC code validation, and semantic search across medical documents. With these features, developers can create applications that let clinicians query patient histories conversationally and build clinical decision support tools efficiently. Check it out on &lt;a href="https://github.com/the-momentum/fhir-mcp-server" rel="noopener noreferrer"&gt;Momentum’s GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You’ll learn:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;How FHIR MCP Server streamlines healthcare data access with natural language,&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Which technical capabilities are included and how they address interoperability and compliance,&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Practical examples of using conversational queries and rapid app development for healthcare,&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What challenges in clinical data integration it helps overcome.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Watch our &lt;a href="https://www.youtube.com/watch?v=-jF9eI_W7rs" rel="noopener noreferrer"&gt;demos&lt;/a&gt; showing real patient data analysis and clinical workflows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read&lt;/strong&gt; the full article and technical details &lt;a href="https://www.themomentum.ai/blog/introducing-fhir-mcp-server-natural-language-interface-for-healthcare-data" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>fhir</category>
      <category>mcp</category>
      <category>opensource</category>
      <category>ehr</category>
    </item>
  </channel>
</rss>
