Initial: Mesh-Skills, Configs, Scripts
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
# COROS-MCP — verifizierte Tool-Calls + Daten-Shapes (2026-08-15)
|
||||
|
||||
Proof-of-Concept mit echtem Login, alle Werte real. Endpoint Europa `mcpeu.coros.com`, Token-Cache `/root/.coros-mcp-skill-gateway-ts/<region>/token.json`.
|
||||
|
||||
## Zugriffshinweis (Token-Sicherheit, Team-Auflage)
|
||||
- Token-Datei root-only (`chmod 600`), Cache `chmod 700`.
|
||||
- Zusaetzlich age-verschluesseltes Backup: `age-keygen -o /root/.coros-age-key.txt; age -r <PUBKEY> -o /root/.coros-token.json.age <token.json>`.
|
||||
- WICHTIG: **NICHT die Klartext-`token.json` verschluesseln/ersetzen** — die `coros-mcp`-CLI LIESST sie selbst (Klartext nötig fuer den Betrieb). Verschluesselung nur als SEPARATE Sicherungskopie ablegen.
|
||||
|
||||
## Korrekte Aufruf-Syntax (verifiziert)
|
||||
```bash
|
||||
# Achtung: Flags! Nicht positional. KEIN --args/--name/--tool-positional.
|
||||
coros-mcp list-tools
|
||||
coros-mcp describe-tool --tool queryDailyHealthData
|
||||
coros-mcp call-tool --tool queryDailyHealthData --arguments-json '{}'
|
||||
```
|
||||
|
||||
## Echte Ergebnis-Shapes (Anhaltspunkt fuer Parser)
|
||||
|
||||
### queryDailyHealthData ({} args) — Text, 7 Tage
|
||||
```
|
||||
"Daily Health Data — Last 7 days | Resting HR: 52 bpm | HRV Baseline: 42 ms
|
||||
--- 20260815 ---
|
||||
Steps: 981 | Calories: 47 kcal | Exercise: 0 min
|
||||
Stress: Avg 22
|
||||
Sleep Summary:
|
||||
Total: 7h 46min | Deep: 1h 57min | Light: 4h 17min | REM: 1h 23min | Awake: 9 min
|
||||
```
|
||||
Antwort-Container: `{"content":[{"type":"text","text":"<string>"}],"isError":false}` — **Daten sind EIN String**, mit `\n`-Zeilen, pro Tag Abschnitt `--- JJJJMMTT ---`. Parser: nach Datums-Marker + Label splitten.
|
||||
|
||||
### querySportRecords ({}) — 1+ Records
|
||||
```
|
||||
"Sport Records — DATE to DATE (N records)
|
||||
1. Indoor Cycling — 2026-08-11
|
||||
Location: Indoor Rad
|
||||
Time Window: startTimestamp=1786472136 | endTimestamp=1786475750
|
||||
Duration: 1:00:14 | Avg HR: 114 bpm | Calories: 629 kcal
|
||||
LabelId: 479635354870120452 | SportType: 201"
|
||||
```
|
||||
Sauber parsebar via Regex auf `LabelId:` + `SportType:` (fuer Activity-Details noetig).
|
||||
|
||||
### querySleepHrv ({}), queryRecoveryStatus ({}), queryFitnessAssessmentOverview ({})
|
||||
- HRV: pro Tag `HRV Avg: 55 ms — Normal`, `Baseline: 61 ms`
|
||||
- Recovery: `Recovery: 100%`, `Level: Heavy training allowed`
|
||||
- Fitness: `Threshold Pace: 4:45 /km`
|
||||
|
||||
### queryUserInfo ({})
|
||||
`Height: 173.0 cm | Weight: 100.6 kg | Birthday: 1972-02-21 (Age: 54) | Gender: Male | Nickname: Thorsten`
|
||||
|
||||
## PersoEnt-Write-Hinweis (strukturierte Gesundheitsdaten)
|
||||
COROS liefert KEIN Datums-Feld in der Antwort — das Datum steckt im `--- JJJJMMTT ---`-Marker. PersoEnt `health_records`-Collection hat KEIN `datum`-Feld; Datum geht verloren, wenn man es nicht als String in einem Text-Feld oder via Record-`created` abbildet. (siehe pocketbase-deployment: leere createRule → Superuser-Token noetig.)
|
||||
Reference in New Issue
Block a user