◆ Open source · MIT · self-hosted

Your health data, readable by your own AI

OpenVitals is a self-hosted MCP server that turns your Google Health data into ~60 tools Claude, ChatGPT or Cursor can actually reason over — heart, sleep, activity, nutrition and more. It runs on your hardware and your data never leaves it.

Node 22+ · MIT licensed · no subscription, no account, no cloud middleman

A Claude chat connected to OpenVitals answering a question about the past week of sleep with real numbers
The problem

Asking an AI about your own health data shouldn't cost a subscription

Google will happily analyse your health data for you — inside a paid product, on their servers. As one person, you shouldn't need a monthly plan just to ask "how did I sleep this week versus last?" OpenVitals hands that job to the AI you already use.

A paid health-AI productOpenVitals
CostMonthly subscriptionFree — uses the AI you already have
Your dataLeaves your deviceStays in a SQLite file on your box
CredentialsTheir enterprise setupYour own free Google Cloud OAuth client
The AILocked to their productAny MCP client — Claude, ChatGPT, Cursor…
AccessWhatever they grantRead-only Google scopes, secrets stay local
How it works

One always-on box between Google Health and your AI

OpenVitals syncs your Google Health data into a local SQLite database and exposes it over the Model Context Protocol. Your AI client connects to that endpoint and calls the tools it needs.

  Google Health API  ──►  OpenVitals server  ──►  SQLite (your machine)
     (your data)          (always-on device)              │
                                                          ▼
                                your AI client  ◄──  POST /mcp  (bearer token)
                            (Claude · ChatGPT)     localhost, or a public URL
🩺

~60 tools over real data

Heart, sleep, activity, glucose, SpO₂, temperature, ECG and body composition — read straight from your Google Health account.

🍎

Nutrition & workouts

Log meals, search foods, scan barcodes, save recipes, build workout plans and search exercises — all through chat.

📈

Summaries that mean something

Daily and weekly rollups, progress tracking, recommendations, and plan-versus-logged comparisons.

🔒

Read-only and local

Google scopes are read-only. Database, tokens and OAuth secrets live on your machine and are gitignored.

🏠

Runs on anything

An old laptop, a Raspberry Pi, a mini-PC. Anything that stays on. This project runs on a laptop-as-homelab-server.

🔌

Any MCP client

Local clients hit localhost directly. Cloud apps reach it through a free ngrok, Cloudflare or Tailscale tunnel.

Quickstart

Running in three steps

You need Node 22+, a Google account with health data, and something that stays powered on. Full walkthrough — including the Google Cloud setup — is in the README.

1

Create your free Google secrets

Make a free Google Cloud project, enable the Health API, add yourself as a test user, and download an OAuth client JSON. Read-only scopes only.

2

Clone and run

Install, build the web UI and start the server. A bearer token for /mcp is generated on first run.

3

Point your AI at it

Add it as an MCP server in Claude Code or Cursor, or paste the URL into a Claude / ChatGPT custom connector.

# 2 — clone and run
$ git clone https://github.com/saiteja007-mv/openvitals.git
$ cd openvitals && npm install
$ npm run build && npm run server   # → http://127.0.0.1:42815

# 3 — connect Claude Code (local, no tunnel needed)
$ claude mcp add --transport http openvitals http://127.0.0.1:42815/mcp \
      --header "Authorization: Bearer $(cat .data/mcp-token.txt)"
Claude Code · Cursor · ClineRun on your machine — no tunnel needed
Claude appLocal bridge, or a custom connector over a tunnel
ChatGPTCustom connector, needs a public HTTPS URL
Anything speaking MCPStreamable HTTP, bearer token or ?token=
Then just ask

Your data, in plain language

"Summarize my sleep this week."
"What's my resting heart rate trend?"
"Log a 5 km run."
"Am I hitting my protein target?"
"Compare my plan to what I actually logged."

Google Health

get_heart · get_sleep · get_activity · get_glucose · get_spo2 · get_temperature · get_body_composition · sync_google_health

Summaries

get_daily_summary · get_weekly_summary · get_progress · get_recommendation · compare_plan_vs_logged

Nutrition

log_meal · search_food · lookup_barcode · get_nutrition_intake · meal recipes

Workouts & habits

log_workout · search_exercises · workout plans · body metrics · habits · reminders · hydration

Take your health data back

Free, MIT licensed, and running on your own hardware in about fifteen minutes. Stars and issues welcome.