# Strava MCP Diese Anwendung besteht aus einer NestJS API, einem Angular Client und einem MCP-Server fuer KI-Zugriff auf die synchronisierten Strava-Daten. ## MCP starten Im Docker-Container startet der MCP-Server automatisch als HTTP-Endpunkt. nginx veroeffentlicht ihn unter `/mcp` auf demselben Port wie den Client. ```bash docker run -d --env-file .env -p 8080:80 --name strava-mcp 192.168.30.40:3000/bastian/strava-mcp:latest ``` Der MCP-Endpunkt ist dann erreichbar unter: ```text http://:8080/mcp ``` Optional kann der Endpunkt mit `MCP_AUTH_TOKEN` geschuetzt werden. MCP-Clients muessen dann den Header `Authorization: Bearer ` senden. Fuer lokale stdio-Nutzung gibt es weiterhin einen separaten Einstieg. Die `.env` kann im Repository-Root oder im `api`-Ordner liegen. ```bash cd api npm run build npm run start:mcp ``` Beispiel fuer einen MCP-Client: ```json { "mcpServers": { "strava": { "command": "node", "args": ["C:/repositories/strava-mcp/api/dist/mcp-main.js"], "env": { "DATABASE_HOST": "mysql.example.internal", "DATABASE_PORT": "3306", "DATABASE_USER": "strava_app", "DATABASE_PASSWORD": "change-me", "DATABASE_NAME": "strava_app", "APP_ENCRYPTION_KEY": "change-me-to-a-long-random-secret", "STRAVA_CLIENT_ID": "change-me", "STRAVA_CLIENT_SECRET": "change-me", "STRAVA_REDIRECT_URI": "http://localhost:3000/auth/strava/callback" } } } } ``` Der HTTP-MCP kann lokal auch ohne Docker gestartet werden: ```bash cd api npm run build npm run start:mcp:http ``` ## MCP Tools - `get_athlete_profile`: verbundenes Strava-Profil, Aktivitaetsanzahl, Sportarten und neueste Aktivitaet. - `get_training_dashboard`: Summen, Durchschnitte, Wochenverlauf, Sportarten und letzte Aktivitaeten. - `get_running_summary`: Laufumfang, Pace, laengster Lauf, Hoehenmeter und Wochenverlauf. - `get_running_kpis`: Load, Acute/Chronic Ratio, Monotony, Recovery, Intensitaetsverteilung, Progression und PR-Schaetzungen. - `list_activities`: Aktivitaeten nach Zeitraum, Sportart und Name suchen. - `get_activity_detail`: Details zu einer Aktivitaet, optional mit begrenzten Stream-Punkten und Raw Payload. - `get_running_activity_detail`: Laufdetails mit Splits und Serien. - `get_sync_status`: letzter Strava-Sync-Job. - `start_strava_sync`: startet oder reaktiviert den Strava-Sync. Zusätzlich gibt es den Prompt `training_review`, der eine KI zur strukturierten Analyse der Trainingsdaten anleitet.