5.5 KiB
name, description, version, author, platforms, models, license, related_skills
| name | description | version | author | platforms | models | license | related_skills | |||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| wearable-health-mcp | Use when: Wearables-Daten (COROS) ueber MCP-CLI integrieren. | 1.0.0 | mehlzoerwer |
|
|
MIT |
|
Wearable-Health-MCP (COROS u.a.)
When to Use
Nutze diesen Skill, wenn Wearable-/Gesundheitsdaten (z.B. COROS-Sportuhr) über einen MCP-Gateway-CLI abgefragt und in eine App/Backend (z.B. PersoEnt) integriert werden sollen — um korrekte CLI-Flag-Syntax, Browser-Login und Token-Sicherheit zu kennen, ohne sie neu zu erkunden.
Use when: Gesundheits-/Trainingsdaten eines Wearables (Sportuhr) über einen MCP-Gateway-CLI abziehen und in eine App/Backend integrieren. Derzeit konkret: COROS → PersoEnt über das offizielle
coros-mcp-Paket.
Was es ist
coros-mcp (npm, offiziell von COROS: maintainer coros_openplatform) ist eine TypeScript-CLI zum MCP-Gateway https://mcp.coros.com (Europa: https://mcpeu.coros.com). Login + MCP-Tool-Aufrufe. Kein zusätzlicher Cloud-Fremdkostenpflicht-Call nötig innerhalb des Rahmenbudgets — der Hersteller stellt es gratis.
Installation
npm install -g coros-mcp # installiert bin /usr/local/bin/coros-mcp
Login (Browser-Auth, 1x)
coros-mcp login-start # gibt Link: https://mcpeu.coros.com/cli/login/<token>
# Nutzer öffnet Link im Browser, loggt sich ins COROS-Konto ein
coros-mcp login-finish # → "login ok", Token gecacht
coros-mcp login-status # "no pending login session" wenn fertig
coros-mcp logout # Cache leeren
Der Login ist ein OAuth-ähnlicher browser flow; nur das echte COROS-Konto kann ihn abschließen (Client-ID/Secret werden NICHT manuell konfiguriert).
🔥 CLI-Flag-Syntax (VERIFIZIERT 2026-08-15 — häufigste Fehlerquelle)
Beachte exakt diese Flags — ANDERE Varianten scheitern mit unknown argument:
# Tools auflisten (JSON-Array mit name/description/inputSchema)
coros-mcp list-tools
# Ein Tool-Schema anzeigen:
coros-mcp describe-tool --tool <NAME>
# Tool AUFRUFEN — Argumente als --arguments-json (WICHTIG: nicht --args!) :
coros-mcp call-tool --tool <NAME> --arguments-json '<json>'
Getestete Fehlversuche (real aufgetreten): --args, --name, --tool-ohne---arguments-json, reine Positionsargumente → alle error: unknown argument. Das --help auf Unterbefehle zeigt nur die HAUPT-Hilfe (nicht die Flag-Struktur). Verlässliche Quelle bei Unklarheit: Packagedatei lesen grep -n "call-tool|--tool|--arguments-json" $(npm root -g)/coros-mcp/dist/*.js — dort steht die echte Sub-Kommando-Logik.
Verifizierte Tools (22, Stand 2026-08-15)
| Gruppe | Tools (Beispiele) |
|---|---|
| Schlaf | querySleepData (Score/Dauer/Phasen), querySleepHrv (avg+Range+Baseline) |
| Herz | queryAvgHeartRate, queryRestingHeartRate |
| Stress | queryStressLevel, queryStressTimeSeries |
| Gesundheit | queryDailyHealthData (Schritte/Kalorien/Exercise), queryHealthCheckTimeSeries (Roh-HR+HRV+Stress+Atmung) |
| Sport | querySportRecords, getActivityDetail, queryActivityLapData, queryCustomActivityLapData, analyzeActivityDetail (Coach-Style), downloadActivityFitFiles, queryActivityFitFileDownloadUrls |
| Fitness | queryFitnessAssessmentOverview (VO2max/Threshold-Pace), queryTrainingLoadAssessment, queryRecoveryStatus (%), queryTrainingSchedule |
| Profil/Geräte | queryUserInfo (Größe/Gewicht/Geburt/Geschlecht), queryDevices, queryMenstruationCycles |
Detektiv-Priorität für Kausal-Analyse (Team-Review 2026-08-15): P0=HRV + Schlaf, P1=Stress + Erholung, P2=Ruhe-HR + VO2max, P3=Sport/FIT.
🔒 Token-Sicherheit (Team-Auflage 2026-08-15)
- Token liegt in
<cache-root>/<region>/token.json(d.h./root/.coros-mcp-skill-gateway-ts/eu/token.json) — im Klartext. - Die CLI LIEST es selbst aus diesem Cache → nicht verschlüsseln an Ort, sonst bricht die CLI. Stattdessen:
chmod 600token.json UNDchmod 700Cache-Verzeichnisse (root-only)- Verschlüsselte Sicherungskopie anlegen:
ageinstallieren,age-keygen -o /root/.coros-age-key.txt, dannage -r <PUBKEY> -o /root/.coros-token.json.age <token.json>→ Datei beginnt mitage-encryption.org/v1. - Niemals Token in Logs/env — nur zur Laufzeit vom Cache einlesen.
- Single-User-PersoEnt = kleine Angriffsfläche (kein Multi-User-Token-Management nötig).
Architektur-Empfehlung (Team-Review 2026-08-15)
Für Uhren-Health (= tagesbasiert, nicht Echtzeit) Cron-Poller 1×/Tag (03:00) → Daten in PocketBase/Backend schreiben; Live-UI liest NUR aus Backend, nie Live-COROS (Entkopplung + Rate-Limit + Offline-Fähigkeit). Upsert pro (Datum, Datentyp).
⚠️ Noch NICHT umgesetzt (Stand 2026-08-15): der eigentliche Poller-Skript (COROS→PocketBase Write) war zum Sitzungsende noch nie fertig — die PocketBase-Auth-Token-Abfrage blockierte auf Nutzer-Freigabe. Vorgehen siehe nächster Abschnitt.
Nächster Schritt (noch offen)
- PersoEnt PocketBase-Login (Auth-Token holen) — erfordert Nutzer-Freigabe (sensible Login-Lösung)
- Collection
health_records-Schema prüfen (Felder: weight, blood_pressure, pulse, user_id lt. pocketbase-deployment) - Poller-Skript:
coros-mcp call-tool --tool querySleepHrv --arguments-json '{}'je Tag → upsert in PocketBase - PersoEnt-Dashboard/Detektiv liest daraus
Referenzen
references/coros-tools-inventory.md— vollständige 22-Tool-Beschreibungen (Detaildichte)