SkillAgentSearch skills...

open-health-sync

Open source health data aggregator and self-hosted Terra alternative. One API for wearable data from Apple Health, Health Connect, Oura, WHOOP, Withings, Fitbit, Dexcom and more: REST, FHIR R4, Open mHealth, webhooks, CSV/Parquet and a read-only MCP server. One Go binary plus Postgres. AGPL-3.0.

Install / Use

claude mcp add soma-intelligence -- npx -y github:soma-intelligence/open-health-sync

If the server publishes to npm under a different name, use that package instead — check the repo README.

About this skill
🔌

MCP Server

Model Context Protocol server

Quality Score

75/100

Supported Platforms

Claude Code
Claude Desktop

Our assessment of open-health-sync

open-health-sync scores 75/100 on our quality scale, 545th of 600 Data & Analytics skills we index.

Its MCP Server is 56 KB long, well organised into 23 sections with 13 code examples: long enough that it reads more like full documentation than a focused instruction file, which agents can find harder to follow.

It has 10 GitHub stars, so there is little community track record yet; judge it on its content.

Substance
21/30
Structure
20/20
Description
15/15
Adoption
4/20
Freshness
15/15

Maintenance, license and trust

  • The repository was last updated today, so open-health-sync is actively maintained.
  • It is released under AGPL-3.0, a copyleft license: you can use it, but modified versions you distribute must carry the same license.
  • Its trust signals score 97/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.

open-health-sync compared with similar skills

All 4 of these similar skills score higher than open-health-sync; compare them before choosing.

SkillScoreStarsUpdatedFormat
open-health-sync (this skill)by soma-intelligence7510todayMCP Server
Agent-Reachby Panniantong10099.4k4d agoCLAUDE.md
headroomby headroomlabs-ai10076.0k1d agoCLAUDE.md
CowAgentby zhayujie10047.5ktodayCLAUDE.md
Scraplingby D4Vinci10088.6ktodayMCP Server

Frequently asked questions

How do I install open-health-sync?
Run claude mcp add soma-intelligence -- npx -y github:soma-intelligence/open-health-sync. The install tabs above show the steps for each supported agent.
Which AI agents does open-health-sync work with?
It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
Is open-health-sync safe to use?
It is AGPL-3.0-licensed and scores 97/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is open-health-sync still maintained?
The repository was last updated today, so open-health-sync is actively maintained.
<a href="#quickstart"> <picture> <source media="(prefers-color-scheme: dark)" srcset="docs/assets/readme/hero-dark.png"> <img src="docs/assets/readme/hero-light.png" width="100%" alt="Open Health Sync: thirteen sources flow into one Go binary (background sync, raw store, normalize, Postgres). All thirteen are in v0.1.0: Apple Health, Withings, Health Connect, Oura, WHOOP, Fitbit, Polar, Strava, Suunto, Ultrahuman, Dexcom, OMRON and intervals.icu. Outputs, all in v0.1.0: REST API, read-only MCP, FHIR R4, Open mHealth, CSV/Parquet exports and outgoing webhooks. Garmin, Coros and Samsung Health via Health Connect are planned. The JSON shown is a real heart rate sample read back from the API."> </picture> </a> <div align="center">

Open Health Sync

One open API for wearable and health data. On your own server.

Apple Health, Withings, Oura, WHOOP, Fitbit, Health Connect, Dexcom, OMRON and five more.<br> One clean model out, over REST, FHIR R4 and a read-only MCP server for AI agents.<br> Free, one Go binary plus Postgres, runs on a Raspberry Pi.<br> An open source, self-hosted alternative to hosted wearable APIs such as Terra.

CI Release Image amd64 and arm64 Go version License: AGPL-3.0 Hosted beta: sign up free

<p> <a href="docs/connectors/apple-health.md"><img alt="Apple Health: available" src="https://img.shields.io/badge/Apple_Health-available-0e9f8e?style=flat-square"></a> <a href="docs/connectors/withings.md"><img alt="Withings: available" src="https://img.shields.io/badge/Withings-available-0e9f8e?style=flat-square"></a> <a href="docs/connectors/oura.md"><img alt="Oura: available" src="https://img.shields.io/badge/Oura-available-0e9f8e?style=flat-square"></a> <a href="docs/connectors/whoop.md"><img alt="WHOOP: available" src="https://img.shields.io/badge/WHOOP-available-0e9f8e?style=flat-square"></a> <a href="docs/connectors/strava.md"><img alt="Strava: available" src="https://img.shields.io/badge/Strava-available-0e9f8e?style=flat-square"></a> <a href="docs/connectors/polar.md"><img alt="Polar: available" src="https://img.shields.io/badge/Polar-available-0e9f8e?style=flat-square"></a> <a href="docs/connectors/fitbit.md"><img alt="Fitbit: available" src="https://img.shields.io/badge/Fitbit-available-0e9f8e?style=flat-square"></a> <a href="docs/connectors/suunto.md"><img alt="Suunto: available" src="https://img.shields.io/badge/Suunto-available-0e9f8e?style=flat-square"></a> <a href="docs/connectors/ultrahuman.md"><img alt="Ultrahuman: available" src="https://img.shields.io/badge/Ultrahuman-available-0e9f8e?style=flat-square"></a> <a href="docs/connectors/intervals-icu.md"><img alt="intervals.icu: available" src="https://img.shields.io/badge/intervals.icu-available-0e9f8e?style=flat-square"></a> <a href="docs/connectors/health-connect.md"><img alt="Health Connect: available" src="https://img.shields.io/badge/Health_Connect-available-0e9f8e?style=flat-square"></a> <a href="docs/connectors/dexcom.md"><img alt="Dexcom: available" src="https://img.shields.io/badge/Dexcom-available-0e9f8e?style=flat-square"></a> <a href="docs/connectors/omron.md"><img alt="OMRON: available" src="https://img.shields.io/badge/OMRON-available-0e9f8e?style=flat-square"></a> <a href="docs/connectors/garmin.md"><img alt="Garmin: next release" src="https://img.shields.io/badge/Garmin-next_release-3d7ea6?style=flat-square"></a> </p>
docker pull ghcr.io/soma-intelligence/open-health-sync:0.1.0

Rather not run a server? The hosted beta is the same API with nothing to operate: a key in a minute, demo data on the first call.<br> Get started for free →  ·  Sign in to the developer portal  ·  ▶ Watch the 75-second tour

Quickstart  ·  Hosted beta  ·  Compare  ·  Roadmap  ·  Use cases  ·  Why  ·  Features  ·  How it works  ·  MCP  ·  FAQ

<sub>If it saves you one more parser, a <a href="https://github.com/soma-intelligence/open-health-sync/stargazers">⭐ star</a> helps other developers find it. Questions and ideas: <a href="https://github.com/soma-intelligence/open-health-sync/discussions">Discussions</a>.</sub>

<sub><b>v0.1.0, early preview.</b> APIs, configuration and schema may change in any 0.x release.</sub>

</div> <picture> <source media="(prefers-color-scheme: dark)" srcset="docs/demo/demo-dark.gif"> <img src="docs/demo/demo-light.gif" width="100%" alt="Terminal recording of the quickstart. docker compose up starts ohs and Postgres; ohs seed --demo writes 90 days of synthetic data from Oura, WHOOP, Withings, Fitbit, Polar and Apple Health, 44144 rows. The daily endpoint returns one day with 8132 steps from apple_health, a resting heart rate of 53 and a sleep score of 62 from oura, and the source of every figure. One heart rate reading of 70 bpm comes back from /samples, as a FHIR R4 Observation with LOINC 8867-4 and UCUM /min, and as an Open mHealth heart-rate data point in beats/min. tools/list on the MCP endpoint lists sixteen read-only tools."> </picture>

<sub>The quickstart, recorded on v0.1.0 with synthetic data: start the stack, load 90 days from six devices, then read one day of the merged view, one heart rate reading as REST, FHIR R4 and Open mHealth, and the MCP tools. Nothing is mocked; <a href="docs/demo/README.md">the tape</a> renders it again.</sub>

Open Health Sync (ohs) is a self-hosted ingestion and normalization layer for health data. It pulls from providers, accepts uploads from phones, stores each payload verbatim, maps it to one canonical model with one set of units, and serves it over a REST API and a read-only MCP server. It is not a dashboard or a coaching app, and it is not a medical device or clinical software. Run it yourself, or let us run it for you in the hosted beta.

<table> <tr> <td width="33%" valign="top">

🔌 Thirteen sources, one model<br> Every provider maps into the same records, with one unit per quantity (UCUM, LOINC). Heart rate is bpm, whatever the source called it. All thirteen ship in v0.1.0.

</td> <td width="33%" valign="top">

⚡ Always current<br> Provider webhooks trigger a pull of just what changed. A backstop pull catches anything lost, and /freshness says how up to date each source is.

</td> <td width="33%" valign="top">

🧾 Nothing thrown away<br> Every payload is kept verbatim on disk or S3. Fix a mapper, re-process a user from the raw files. Re-sent uploads are de-duplicated.

</td> </tr> <tr> <td valign="top">

🤖 Ready for AI agents<br> A read-only MCP server: a person points their own agent at their own data, with a token that can only read.

</td> <td valign="top">

🏥 Standards out<br> An OpenAPI 3.1 REST API, plus FHIR R4 Observations checked against the official HL7 validator.

</td> <td valign="top">

🔒 Yours, and erasable<br> Self-hosted, no call home. DELETE /v1/users/{id} is a hard delete of rows and raw files. Provider deletions are honored too.

</td> </tr> </table>

Hosted beta

The same server, run for you. The hosted beta is Open Health Sync without a Postgres, a raw store or workers to operate: you sign in, create a key and read data on your first call.

<a href="docs/demo/platform-tour.mp4"> <picture> <source media="(prefers-color-scheme: dark)" srcset="docs/assets/readme/platform-tour-dark.jpg"> <img src="docs/assets/readme/platform-tour-light.jpg" width="100%" alt="Play the 75-second tour of the developer portal. The poster shows the Data page of a test project named Sleep Coach: one user, 11k records over 30 days from six sources, and a bar chart of records per day stacked by source (WHOOP, Fitbit, Oura, Polar, Apple Health, Withings)."> </picture> </a>

<sub>A 75-second tour on test data: create an account and a project, connect a coding agent over MCP, load sample data, see it charted, call the API from the explorer, then Ctrl K. <a href="docs/demo/platform-tour.mp4">Play the video</a> (MP4, 9 MB).</sub>

  • A key in a minute. Create a project and get its API key. During the beta: three projects per account, five keys per project.
  • Data on the first call. One click adds a synthetic user with 30 days from six sources, so your first request already returns sleep, heart rate and steps.
  • Every output. REST with the OpenAPI file, FHIR R4, Open mHealth, CSV and Parquet, signed webhooks and the read-only MCP server, as documented here.
  • A quickstart with your values. curl, TypeScript and Python filled in with your instance's address, plus the example apps and an AI agent over MCP.
  • Nothing to migrate. It runs this open source server. Code written for it moves to your own instance with a new base URL and key, and back.
<picture> <source media="(prefers-color-scheme: dark)" srcset="docs/assets/readme/platform-read-back-dark.png"> <img src="docs/assets/readme/platform-read-back-light.png" width="100%" alt="The web example app reading one user back with a project key. Four counters: no pending jobs, 15 days with data, no rejected lines, source apple_health. A bar chart of daily steps from 3 to 16 October, between about 4,600 and 10,700 a day, with the table of days below it. A resting heart rate chart at 54 bpm latest and 56 on average over 14 days, and the latest night: 7 h 46 min asleep, split into deep, light, REM and awake, labelled synthetic."> </picture>

<sub>The <a href="examples/web">web example</a> reading a user back with a project key: daily steps, resting heart rate and sleep stages, all synthetic data.</sub>

It is a free beta with open sign-up, on shared capacity. For now it takes test data only: demo and synthetic users, no real people's health data. Self-hosting stays first class, and the server stays free under the AGPL.

<p><a href="https://app.openhealthsync.com/portal/signup?utm_source=github&utm_medium=readme&utm_campaign=section"><b>Get started for free →</b></a> &nbsp;Sign up with an email and confirm it. Already have an account? <a href="https://app.openhealthsync.com/portal">Sign in to the developer portal</a>.</p>

Roadmap at a glance

✅ in v0.1.0  ·  🔜 on main, ships in the next release  ·  🛠 planned

| | Outputs and integrations | | Sources | |:---:|---|:---:|---| | ✅ | REST API (OpenAPI 3.1), read-only MCP server | ✅ | Apple Health, Withings | | ✅ | FHIR R4 (Observations, checked with the HL7 validator) | ✅ | Oura, WHOOP, Polar, Strava | | ✅ | Open mHealth output (docs) | ✅ | Fitbit, Suunto, Ultrahuman, intervals.icu | | ✅ | CSV and Parquet exports (docs) | ✅ | Dexcom (CGM), OMRON | | ✅ | Outgoing w

Truncated for display — read the full file on GitHub.

Related Skills

View on GitHub
GitHub Stars10
CategoryData
Updated9h ago
Forks3

Languages

Go

Trust signals

97/100

From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.

1 info