Vol. I — September 2026 Self-hosted health intake over MCP Streamable MCP · your OAuth client Apache-2.0
A self-hosted Model Context Protocol server for your own body’s data. One process on your VPS receives Apple Health, pulls Oura and Hevy, stores every sample in SQLite, and answers your agent with briefs, sleep queries and strength routines. You own the host, the database and the OAuth client — and there is no dashboard: your MCP client is the operator surface.
Processes on the box — ingest HTTP, MCP, pollers1
Source adapters — Watch-only runs with two off3
Public paths on the host4
Postgres required0
Connect one, two or three sources. Your agent checks setup, walks you through each connection, then reads the ledger: compact briefs, normalized sleep sessions, metric queries with tight windows, and — with Hevy enabled — routines it can plan and write.
healthtake is aimed at agent seats — GrokBot, Claude, Cursor and similar. The HTTP transport speaks Streamable MCP behind a bearer token; stdio works over SSH. Consent for Oura starts from the agent and finishes in your browser via a public HTTPS callback, and the honest caveats are printed, not hidden: HAE Premium for the webhook, an Oura membership, Hevy Pro for its API — and the iPhone does not sync while locked.
Garmin’s web, Oura’s app, Apple Fitness — surfaces you visit. healthtake is agent-native: the data comes to the conversation you already have open.
Secrets go once into the vault by source_set_secret and stay on the server. Tools never return a secret value, and OAuth tokens never pass through the chat at all.
Watch, ring and gym log each tell part of the morning. Roles pick the sleep, recovery and strength winners so one card answers the question the three apps split.
You own the host, the database and the OAuth client. Nothing about your body is registered with a middleman, and the whole thing runs on a $5 box.
git clone https://github.com/iXanadu/healthtake.git cd healthtake pip install -e . cp healthtake.toml.example healthtake.toml # secrets live on the box, never in git healthtake http --port 8790
Python 3.12+, SQLite WAL, one process behind your reverse proxy. Phones and OAuth need real HTTPS — the $5-VPS on-ramp is on Your own server, and the human flow is on How it works.
Point an agent at /mcp with a bearer token and ask for this morning’s brief. The connect JSON and the first-session tool loop are one page over.