Bastian Wagner 06bdf83657 kpi
2026-06-19 17:01:22 +02:00
kpi
2026-06-19 17:01:22 +02:00
2026-06-19 16:30:30 +02:00
mcp
2026-06-17 14:19:19 +02:00
2026-06-17 10:45:09 +02:00
2026-06-17 15:10:26 +02:00
2026-06-16 12:15:29 +02:00
2026-06-17 10:45:09 +02:00
2026-06-17 11:01:05 +02:00
mcp
2026-06-17 14:08:15 +02:00

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.

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:

http://<server>:8080/mcp

Optional kann der Endpunkt mit MCP_AUTH_TOKEN geschuetzt werden. MCP-Clients muessen dann den Header Authorization: Bearer <token> senden.

Fuer lokale stdio-Nutzung gibt es weiterhin einen separaten Einstieg. Die .env kann im Repository-Root oder im api-Ordner liegen.

cd api
npm run build
npm run start:mcp

Beispiel fuer einen MCP-Client:

{
  "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:

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.

Description
No description provided
Readme 618 KiB
Languages
TypeScript 79%
HTML 11.4%
SCSS 8.2%
Dockerfile 1.1%
JavaScript 0.3%