Renpho Health MCP
Renpho Health MCP – Smart-Waage-Daten für deinen Claude-Trainingscoach
Ein entfernter MCP-Server, bereitgestellt auf Cloudflare Workers, der deine Renpho-Smart-Waage-Körperzusammensetzungsdaten – Gewicht, Körperfett, fettfreie Masse, Muskeln, Wasser, Knochen, viszerales Fett, BMR, metabolisches Alter und mehr – über die Renpho-Health-Cloud-API an Claude bereitstellt. Füge ihn einmal als benutzerdefinierten Connector hinzu, und er funktioniert auf Claude Web, Desktop und Mobile. Er kombiniert sich mit den Strava- und Google-Health-Connectoren, sodass dein Coach Trainingsbelastung, Erholung und Körperzusammensetzung sieht.
Datenquelle: das Backend der Renpho Health-App (blaues Symbol) unter
cloud.renpho.com. Konten in der alten Renpho-App (renpho.qnclouds.com) werden nicht unterstützt – migriere sie zuerst in der App.
Basierend auf dem reverse-engineerten Protokoll von StartupBros-com/renpho-mcp-server (einem lokalen stdio-Server) und forkerer/RenphoGarminSync-CLI, umstrukturiert als ein Multi-User-Remote-Worker im Stil von google-health-mcp.
Werkzeuge
Werkzeug | Was es beantwortet |
| „Wie läuft es?“ – die neueste Messung mit allen Metriken, Kategorieklassifikationen, Änderungen gegenüber vor 7/30/90 Tagen und Fortschritt in Richtung des Gewichtsziels der App |
| Messverlauf über einen Zeitraum: jede Metrik pro Wiegevorgang oder gemittelt pro Tag/Woche; optionale Metrik-Teilmenge und Geräte-/Impedanzdetails |
| Pro Metrik Start-/Enddurchschnitt, Änderung, Min/Max/Mittelwert und eine wöchentliche Rate nach der Methode der kleinsten Quadrate (mit r²) sowie eine Tages-/Wochensreihe – ist die Gewichtsänderung Fett oder fettfreie Masse? |
| Tagesdurchschnittsgewicht mit einem 7-Tage-gleitenden Mittelwert, angepasster Wochenrate und einer Prognose, wann das Ziel erreicht wird (und der Rate, die nötig ist, um das Zieldatum zu erreichen) |
| Geschlecht, Alter, Größe, Einheiten, Athletenmodus und die in der App festgelegten Ziele (Zielgewicht/-datum, Zielkörperfett, Startgewicht) |
| Waagenbenutzer- (Profil-) IDs, Datentabellen, Familienmitglieder und jede Geräte-/Datenkategorie, die Renpho meldet |
| End-to-End-Test: Sitzung, Tabellen, Seitenreihenfolge, letzte Messwerte pro Profil, gebunden vs. ungebunden, gesehene Geräte |
| Notausstieg: beliebigen |
| Verwerfe die gecachte Sitzung + Seiten und melde dich erneut an (nach einem neuen Wiegevorgang, der nicht angezeigt wird) |
| Lösche alles, was für dein Konto zwischengespeichert ist |
Fehlerbehebung: Wenn Messwerte fehlen, veraltet sind oder der falschen Person zugeordnet werden, führe zuerst
run_diagnosticsaus. Es berichtet, wo die Daten tatsächlich liegen (welche Tabelle/Profil, gebunden oder nicht), anstatt dich aus einem nachgelagerten Symptom schließen zu lassen.
Related MCP server: Oura Ring MCP Server
Feldzuordnung (Renpho Health API)
Ein Rohdatensatz von RenphoHealth/scale/queryAllMeasureDataList hat ~57 Schlüssel. Die Werkzeuge benennen die Metriken in Einheiten-suffigiertes snake_case um, dekodieren Enum-Codes, entfernen Hüllen-Rauschen und behalten alles Unerkannte unter extra, sodass nichts verloren geht, wenn Renpho Felder hinzufügt (siehe src/measurements.ts).
Renpho-Schlüssel | Werkzeugfeld | Einheit / Bedeutung |
|
| kg (immer kg, unabhängig von der Anzeigeeinheit der App) |
|
| — |
|
| % |
|
| kg |
|
| % |
|
| Stufe 1–59 (≤9 gesund, 10–14 hoch, ≥15 sehr hoch) |
|
| % |
|
| % |
|
| kg |
|
| kg |
|
| % |
|
| kcal/Tag |
|
| Jahre |
|
| bpm (nur Waagen mit HR-Sensor) |
|
| L/min/m² |
|
| cm (nur wenn eingegeben) |
|
|
|
|
| boolesch |
|
| rohe Bio-Impedanz (Ω) |
|
| wie die Messung zugeordnet wurde ( |
|
| Gerät + Flags |
|
| Konto, an das die Messung gebunden ist / Profil, unter dem sie gemessen wurde |
|
| Unix-Sekunden; lokale RFC-3339- und Kalenderdaten in |
Eine Metrik, die als 0 gemeldet wird, bedeutet „nicht gemessen“ und wird weggelassen. Renpho-IDs sind 64-Bit-Ganzzahlen außerhalb des sicheren Bereichs von JavaScript, daher setzt der Client sie vor dem Parsen als Zeichenfolgen in Anführungszeichen (src/json.ts).
Wie Daten abgerufen werden
Login (
renpho-aggregation/user/login) liefert ein Bearer-Token mit einerexpAt-Zeit; es wird in KV gecacht (versiegelt), bis kurz vor Ablauf, und durch erneutes Einloggen erneuert — Renpho hat keine Refresh-Tokens.device/countlistet die Datentabellen und Datensatzzahlen des Kontos auf und wird bei jedem Tool-Aufruf frisch abgerufen; es ist das Aktualitätssignal.Zwei Speicher pro Tabelle. Jede
measurements_info_N-Tabelle wird aus beiden Quellen gelesen:scale/queryAllMeasureDataList(der ältere Speicher, dessen Zeilendevice/countzählt) undscale/queryBodyCompositionMeasureData(der neuere Speicher, der von 8-Elektroden-/Multifrequenz-Waagen wie der MorphoScan verwendet wird, diedevice/countnicht zählt). Zeilen werden nach ID zusammengeführt, wobei die Körperzusammensetzungs-Kopie erhalten bleibt, wenn beide existieren, da sie das umfangreichere Feldschema trägt;source.endpointgibt an, aus welchem Speicher ein Messwert stammt.Messwert-Seiten (je 200 Datensätze) werden in KV gecacht. Legacy-Seiten sind nach Tabelle, Profilsatz und Datensatzzahl geschlüsselt, sodass eine neue Wiegung den Schlüssel ändert und automatisch invalidiert; Körperzusammensetzungs-Seiten haben keine Zählung und werden stattdessen 15 Minuten lang gecacht. Der Paginator erkennt, in welcher Reihenfolge jeder Speicher sortiert ist, und läuft nur so weit, wie das angeforderte Fenster es braucht (max. 30 Seiten / 6 000 Datensätze pro Speicher und Aufruf).
Auswahl: Messwerte, die an das angemeldete Konto gebunden sind (
bUserId), werden standardmäßig zurückgegeben; wenn noch nichts gebunden ist (Wi-Fi-Waagen laden hoch, bevor die App den Messwert bindet), wird auf das erste Waagen-Benutzerprofil des Kontos zurückgegriffen und dies mitgeteilt. Für ein Familienmitgliedscale_user_idübergeben.
Caching & Verschlüsselung
Alles, was in den RENPHO_CACHE-KV-Namespace geschrieben wird —
Sitzungstokens und Messwert-Seiten — ist AES-256-GCM-versiegelt mit einem
Schlüssel, der aus dem SESSION_ENCRYPTION_KEY-Secret abgeleitet wird,
pro Benutzer geschlüsselt (SHA-256 der E-Mail). Wenn das Secret nicht gesetzt
ist, wird Caching einfach deaktiviert. Cache-Fehler brechen nie eine Anfrage.
Der Renpho-Transport selbst ist AES-128-ECB mit dem statischen Schlüssel aus
der App; WebCrypto hat keinen ECB-Modus, daher verwendet der Worker das
reine-JS-aes-js (src/crypto.ts, in den Tests
byte-für-byte gegen OpenSSL verifiziert).
So funktioniert die Anmeldung (einmal lesen)
Renpho hat kein OAuth. Der Worker ist ein OAuth-Server gegenüber Claude
(workers-oauth-provider), und seine /authorize-Seite ist ein
Renpho-Anmeldeformular. Ihre E-Mail/Passwort werden einmal gegen Renpho
geprüft und dann in den verschlüsselten Props des Grants gespeichert —
der Verschlüsselungsschlüssel wird aus dem Token abgeleitet, das Claude hält,
sodass die KV-Inhalte allein nicht entschlüsselt werden können. Die
Anmeldedaten sind nötig, weil Renpho-Sitzungstokens nach einigen Stunden
ablaufen und der einzige Weg zu einem neuen Token ein erneuter Login ist.
Das Trennen des Connectors in Claude löscht den Grant (und damit die gespeicherten Anmeldedaten);
delete_my_dataleert den Cache.Setzen Sie
ALLOWED_EMAILS(kommagetrennt), um zu verhindern, dass sich andere Renpho-Konten mit Ihrer Bereitstellung verbinden. Leer gelassen, kann jeder Renpho-Benutzer sie verwenden (jeder sieht nur seine eigenen Daten).
Bereitstellung
Option A — GitHub Actions (ohne lokales wrangler)
Der Workflow in .github/workflows/deploy.yml
stellt bei jedem Push auf master bereit (und auf Abruf). Das App-Secret
liegt in Cloudflare, nicht bei GitHub — GitHub hält nur das
Cloudflare-API-Token + die Account-ID.
Zwei KV-Namespaces erstellen im Cloudflare-Dashboard (Storage & Databases → KV):
OAUTH_KVundRENPHO_CACHE. Die IDs inwrangler.jsonceinfügen und committen.Ein Cloudflare-API-Token erstellen (My Profile → API Tokens → "Edit Cloudflare Workers"-Vorlage) und die Account-ID notieren.
GitHub-Repo-Secrets hinzufügen:
CLOUDFLARE_API_TOKENundCLOUDFLARE_ACCOUNT_ID.Auf
masterpushen. Das Actions-Protokoll gibt die Worker-URL aus (https://renpho-health-mcp.<subdomain>.workers.dev).Das App-Secret in Cloudflare setzen (Workers & Pages → renpho-health-mcp → Settings → Variables and Secrets, Typ Secret):
SESSION_ENCRYPTION_KEY= eine beliebige lange Zufallszeichenkette. Optional die VariableALLOWED_EMAILSauf Ihre Renpho-E-Mail setzen.
Option B — lokales wrangler
npm install
npx wrangler kv namespace create OAUTH_KV # paste the id into wrangler.jsonc
npx wrangler kv namespace create RENPHO_CACHE # paste the id into wrangler.jsonc
npx wrangler secret put SESSION_ENCRYPTION_KEY # any long random string
npx wrangler deployIn Claude verbinden
Settings → Connectors → Add custom connector.
URL:
https://renpho-health-mcp.<subdomain>.workers.dev/mcpConnect klicken → mit Ihrer Renpho-Health-E-Mail/Passwort anmelden → fertig.
Dann fragen Sie Ihren Coach: "Hol meine letzte Waagenmessung und sag mir, ob der Gewichtsverlust des letzten Monats aus Fett oder fettfreier Masse kam."
Connector-Symbol
Der Worker bewirbt PUBLIC_URL/icon.png in seinen MCP-serverInfo.icons
(und websiteUrl), sodass Clients, die Server-Branding rendern, es in der
Connector-Liste anzeigen. Der Standard ist ein generiertes
Waagen-Symbol (npm run icon). Um stattdessen das offizielle
Renpho-Health-App-Symbol zu verwenden, speichern Sie das PNG aus dem
App-Store-/Play-Store-Eintrag und betten es ein:
npm run icon:embed -- ~/Downloads/renpho-health-icon.png # writes src/icon.ts + assets/icon.png
npm run deploy(Das offizielle Zeichen ist eine Marke von Renpho — für eine persönliche Bereitstellung in Ordnung, nicht für die Weiterverbreitung, weshalb es nicht in diesem Repo liegt.)
Lokale Entwicklung
cp .dev.vars.example .dev.vars # set SESSION_ENCRYPTION_KEY
npm run dev # http://localhost:8787
npm test # vitest
npm run typecheck # worker + tests
npm run icon # regenerate assets/icon.png + src/icon.tsTesten Sie den Ablauf mit dem MCP Inspector:
npx @modelcontextprotocol/inspector@latest
# Transport: Streamable HTTP → http://localhost:8787/mcp → ConnectSo funktioniert es
Claude (web/desktop/mobile)
└─ custom connector → /mcp
└─ workers-oauth-provider (this Worker IS Claude's OAuth server)
└─ AuthHandler (Renpho sign-in page; validates against Renpho)
└─ RenphoMCP (Durable Object) → RenphoClient → cloud.renpho.comsrc/index.ts— verbindetOAuthProvider+ dasMcpAgent-Durable-Object.src/auth-handler.ts— Anmeldeseite (/authorize), Landingpage, Symbol.src/renpho-api.ts— Renpho-Client: Sitzungscache, verschlüsselter Transport mit Retry/Re-Login, reihenfolgeunabhängiger Paginator, Benutzerauswahl.src/measurements.ts— Rohdatensatz → schlanke Coaching-Form, Enums, Klassifikation, Profil.src/stats.ts— Regression, Randfenster-Zusammenfassungen, gleitende Mittelwerte, Zielprojektion.src/tools.ts— die Coaching-Tools von oben.src/crypto.ts,src/json.ts,src/dates.ts— AES-Helfer, BigInt-sicheres JSON, zeitzonenkorrekte Daten. Alle rein und unit-getestet.
Hinweise & Grenzen
Wi-Fi-Waagen-Bindungsverzögerung. Manche Wi-Fi-Waagen laden einen Messwert hoch, bevor die App ihn an Ihr Konto bindet; bis dahin hat er eine
scale_user_id, aber keinebound_user_id. Die Tools greifen auf das erste Profil zurück und teilen dies mit (selection: "fallback_scale_user");run_diagnosticslistet versteckte Messwerte auf.Bioimpedanz ist verrauscht. Hydration, Tageszeit und kürzliches Training verschieben Körperfett-/Wassermesswerte um mehrere Punkte. Wiegen Sie sich zur gleichen Tageszeit und lesen Sie die Durchschnitte/Trends, nicht einzelne Messwerte — die Trend-Tools verwenden genau deshalb 7-Tage- Randfenster und gleitende Mittelwerte.
Einheiten. Massen sind in kg und Zusammensetzungskennzahlen in %, entsprechend der Renpho-App.
musclewird als Muskelmasse (kg) gemeldet undsinewals Skelettmuskel-%; wenn Ihre Gerätefirmware etwas anderes meldet, bleiben die Rohwerte unverändert — nur die Bezeichnung weicht ab.MorphoScan / 8-Elektroden-Waagen. Ihre Messwerte liegen im Körperzusammensetzungs-Speicher (siehe oben) und tragen zusätzliche gerätespezifische Felder — segmentales Fett/Muskel, SMI usw. —, die die Tools unter
extradurchreichen (nachinclude_detailsfragen oderunrecognised_fields_seeninrun_diagnosticsansehen). Bitte öffnen Sie ein Issue mit diesen Feldnamen, damit sie korrekt zugeordnet werden können.Nur die Kategorie
scalehat dedizierte Tools. Umfangs-/Maßband-, Laufband-, Seil- und Body-Scan-Daten (MorphoScan) erscheinen inget_scale_users→device_categoriesund können mitquery_endpointerkundet werden.Ratenlimits. Renpho gibt Code
429zurück, wenn zu viel angefragt wird; der Client wartet und wiederholt, und gecachte Seiten bedienen weiterhin.Passwortänderungen brechen die gespeicherten Anmeldedaten — Connector trennen und neu verbinden.
Inoffizielle API. Dies nutzt die private API der mobilen App; Renpho kann sie jederzeit ändern. Nicht mit Renpho verbunden oder von Renpho unterstützt.
Datenschutz
Anmeldedaten werden nur zur Authentifizierung bei Renpho verwendet und verschlüsselt im OAuth-Grant gespeichert; nichts wird protokolliert.
Gesundheitsdaten werden nur in Ihrem eigenen KV-Namespace gecacht, versiegelt und mit
delete_my_datalöschbar; nichts wird an Dritte gesendet.
Danksagungen
API-Reverse-Engineering: forkerer/RenphoGarminSync-CLI und StartupBros-com/renpho-mcp-server (MIT).
Lizenz
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseCqualityCmaintenanceProvides access to body composition data from Renpho smart scales, enabling users to query weight, BMI, body fat percentage, muscle mass, and other health metrics with trend analysis over customizable time periods.3264MIT
- AlicenseNot gradedqualityDmaintenanceEnables Claude to access and query Oura Ring health data including sleep, activity, readiness, heart rate, and more via the Oura API.MIT
- FlicenseAqualityDmaintenanceFetches body composition data (weight, body fat percentage) from the Tanita Health Planet API and exposes it as MCP tools for AI agents like Claude Desktop.51
- FlicenseAqualityCmaintenanceEnables Claude to read your WHOOP health data including recovery, sleep, strain, and workouts through the official WHOOP API, so you can ask natural language questions about your fitness metrics.7
Related MCP Connectors
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
63 tools for Apple Health, Fitbit, Oura & Health Connect data in Claude, ChatGPT, Grok & Mistral.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/a1dancole/renpho-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server