Du betrachtest gerade KI-Chat mit Strava – Eine LLM-Integration mittels MCP
Strava Aktivität im KI-Chat

KI-Chat mit Strava – Eine LLM-Integration mittels MCP

Bitte deine Lieblings-KI deine Trainingsdaten zu analysieren und dir Verbesserungsvorschläge zu machen! Kein-Problem! Hier beschreibe ich dir wie du das hinbekommst.

>> Fast forward direkt zum Github Repo.

In meinem Bestreben meine gefühlte KI-Rückständigkeit zu eliminieren, habe ich Google Gemini gefragt, welche KI die beste ist. Nachdem Gemini mir Anthropic’s Claude empfohlen hatte, weil dies angeblich die besten Resultate beim Coding erzielt, habe ich mir die Pro-Version für Claude gegönnt. Fairerweise habe ich auch ein Plus-Abo für Gemini abgeschlossen, um mehr Credits für Gemini Code Assist und Antigravity zu bekommen.

Was soll ich mir von der KI Programmieren lassen?

Nun hatte ich die geballte KI-Power in der Hand und habe mich damit quasi allmächtig gefühlt. Jetzt brauchte ich nur noch einen Anwendungsfall, damit ich die KI etwas programmieren lassen konnte. Über das MCP Protokoll kann man ja relativ einfach Integrationen zu Drittsystemen schaffen um bspw. Daten abzugreifen und zu analysieren. Da fiel mir ein, dass meine Garmin Sportuhr ja massenweise Daten von mir trackt und diese an diverse Plattformen wie Strava weitergibt. Strava ist eine beliebte Running- bzw. Multisport-App mit diversen Integrationen, deshalb hat Strava natürlich auch eine Developer API. Ich dachte mir: das ist der perfekte Anwendungsfall! Ich chatte mit Strava und lasse mir meine Trainingsdaten von der KI analysieren. Vermutlich hatte irgendjemand vor mir schon dieselbe Idee, aber nachdem ich es ja selbst ausprobieren wollte, habe ich gar nicht erst danach recherchiert.

Lasse dir von Claude Code einen MCP Server programmieren

Fangen wir mit dem Setup an:

Zunächst brauchen wir die Claude Desktop App, denn das Ganze läuft leider erstmal nur lokal. Fürs Coding nutze ich Visual Studio Code mit der Claude Extension.

Claude Code Extension für VS Code

Wenn die Claude Extension in VS-Code installiert und aktiviert ist, kann es losgehen. Für den Anfang habe ich ein leeres Git Repository angelegt und von Github geklont.

Folgenden Prompt habe ich genutzt um das Projekt in Claude Code zu starten:

I want to create a new app in this empty repository. My goal is to build an MCP server for an integration between Strava and Claude. I want to be able to make requests through the Claude chat and pull my training data from the Strava API. The data is about my activities, my routes and my athlete stats.

Und schon geht es los. Claude Code hat erkannt, dass es sich um eine komplexere Aufgabe mit mehreren Arbeitsschritten handelt und recherchiert erstmal. Man kann dabei zusehen wie Claude das Internet durchsucht und sich aus diversen Quellen wie der Strava Developer Dokumentation, oder beispielhaften MCP Implementierungen die nötigen Infos zieht.

Claude Code recherchiert
Claude Code recherchiert

Bevor Claude Code mit der Umsetzung anfängt, schlägt es uns erstmal einen Implementierungsplan vor. Den habe ich nach kurzem Review so akzeptiert.

Claude Code Implementierungsplan
Claude Code Implementierungsplan

Nun legt Claude Code die Projektstruktur an, erstellt die nötigen Dateien, schreibt den Code und führ diverse Terminal Befehle durch. Ich habe ja keine Programmiersprache vorgegeben. Claude hat sich selbstständig für TypeScript entschieden.

Claude Code Projekt Struktur

Nachdem Claude mit der Programmierung fertig ist, bekommen wir eine Projektübersicht geliefert, sowie Anweisungen, wie wir das Ganze zum Laufen bringen.

Strava Entwickler App erstellen

Damit wir uns mit Strava verbinden können um die Daten per Webservice Schnittstelle anzuzapfen, müssen wir eine Strava Entwickler App anlegen. Das ist schnell gemacht. Man muss sich nur bei Strava anmelden und dann in den Einstellungen unter Meine API Anwendungen eine neue App erstellen. Wenn die App angelegt ist, bekommt man eine Client-ID, einen Geheimen Schlüssel und einen Zugriffs-Token. Diese 3 Infos brauchen wir für die Authentifizierung und Autorisierung. Als Callback Domain hinterlegen wir einfach „localhost“, da wir den MCP-Server lokal betreiben.

Strava Developer App
Strava Developer App

Die Strava App benötigt auch ein Icon. Nachdem ich keine Lust hatte mich lange mit einem Icon-Design zu beschäftigen, habe ich meinen smarten Assistenten Claude gebeten ein Icon für besagten Anwendungsfall für eine Strava Developer App zu generieren.

Generiere mir ein Strava App Icon, das ich für die API Entwicklung nutzen kann und bei Strava hochladen kann. Die App, die ich entwickeln möchte, ist ein MCP Server für die Integration zu Claude. Das Ziel der App ist es, per Chat in Claude Daten von Strava abzurufen und diese zu analysieren und gegebenenfalls eine Leistungsanalyse durchzuführen und Trainingsvorschläge zu machen.

Erstaunlicherweise hat Claude mir das Icon als in ein HTML-Dokument eingebettete Vektorgrafik erstellt. Na ja, es ist halt ein Large Language Modell ;-). Ich würde sagen, das Ergebnis ist ok, kein designtechnisches Meisterwerk, aber für meinen Anwendungsfall ausreichend.

Strava MCP Server App Icon

Jetzt können wir die Verbindung zwischen unserem MCP-Server und der Strava API herstellen. Wir müssen nur noch die Zugangsdaten in eine Umgebungsvariable speichern. Claude Code hat uns dafür bereits eine Datei namens .env.example angelegt. Hier können wir die Platzhalter für Client-ID, Client Secret und Refresh Token mit den echten Daten ersetzen. Danach müssen wir noch den Namen der Datei in „.env“ ändern.

Umgebungsvariable für die Speicherung der Zugangsdaten

Ich hatte erst ein paar Probleme mit der Authentifizierung. Scheinbar wurden die Zugangsdaten nicht korrekt gelesen. Claude hat darauf hin ein paar Tests durchgeführt und Änderungen am Code vorgenommen. Danach hatte ich noch Probleme mit dem Refresh Token. Claude hat mir deshalb noch ein kleines Helfer-Script angelegt, das einem hilft einen neuen Refresh-Token zu bekommen.

npx tsx scripts/get-token.ts

MCP Server mit Claude verbinden

Bevor wir mit dem Testen der Anwendung beginnen können, müssen wir noch die Claude Desktop App mit dem neu programmierten MCP Server verbinden. Hierfür öffnen wir die Einstellungen und gehen auf den Menüpunkt „Entwickler“. Dort klicken wir auf den Button „Config bearbeiten“. Wir müssen die Konfigurationsdatei in einem Texteditor öffnen.

Claude Code Entwickler Einstellungen
Claude Code Entwickler Einstellungen

Nun fügen wir den kleinen JSON-Code Schnipsel den wir von Claude bekommen haben dort ein. Er sagt Claude, wo er den MCP-Server findet.

{
  "mcpServers": {
    "strava": {
      "command": "node",
      "args": ["/Users/thomaskraehe/Documents/Development/stravachat/dist/index.js"]
    }
  }
}

Strava Daten über den Claude Chat abrufen

Jetzt können wir endlich unsere neue Applikation ausprobieren. Ich gebe folgenden Prompt ein um meine letzte Aktivität von Strava anzeigen zu lassen:

Show my latest Strava activity
Methode aus MCP-Server in Claude Chat autorisieren

Beim ersten Start fragt Claude uns, ob wir diese Aktion erlauben wollen. Ich klicke auf „Immer erlauben“.

Claude hat meine Intention perfekt erkannt und zeigt die Daten von meinen letzten Lauf an.

Strava Aktivität im Claude KI-Chat anzeigen lassen
Strava Aktivität im KI-Chat

Claude fragt mich direkt ob ich noch mehr Details anzeigen lassen möchte. Daraufhin bekomme ich eine ausführliche Tabelle mit allen relevanten Daten, sowie eine kleine Analyse meines Trainings.

Details der Strava Aktivität im Claude Chat
Weitere Details der Strava Aktivität im Claude Chat

KI-Trainingsanalyse im Claude Chat

Kommen wir zu den richtig spannenden Features. Probieren wir einen komplexeren Prompt aus und lassen uns auf Basis der längerfristigen Statistiken Trainingsempfehlungen geben:

From my longterm Strava stats, what do you recommend me to improve my running performance?

Claude hat verstanden und zieht sich meine Trainingsdaten der letzten 5 Monate über die Strava-API.

Trendanalyse meiner Trainingsdaten im Claude Chat

Als nächstes erstellt Claude eine Trainingsanalyse anhand der Daten und identifiziert 4 Trends:

  1. Ich bin langsamer geworden
  2. Ich trainiere weniger häufig
  3. Anomalien in der Herzfrequenz. Das ist bemerkenswert. Die ungewöhnlich hohen Werte sind auf eine kaputte Smarwatch zurückzuführen, die ich dann ausgetauscht habe.
  4. Ich laufe fast immer die selbe Strecke.
Interpretation meiner Trainingsdaten im Claude Chat

Nun gibt mir Claude detaillierte Empfehlungen, wie ich meine Fitness wieder verbessern kann:

  1. Ich soll wieder öfter bzw. regelmäßiger laufen gehen
  2. Ich soll einen längeren Lauf pro Woche hinzufügen
  3. Ich soll meine Herzfrequenz im Auge behalten – nicht nötig, da es meinem Herz gut geht ;-)
  4. Ich soll die Länge meiner Läufe variieren: kurze, schnelle Läufe und lange, langsame Läufe
Trainingsempfehlungen auf Basis meiner Strava Daten im Claude Chat

Fazit und letzte Schritte

Ich finde es wirklich bemerkenswert, wie gut Claude diese komplexe Aufgabe gemeistert hat. Die KI hat meine Trainingsdaten der letzten Monate analysiert, hat sie richtig interpretiert und hat mir sinnvolle Empfehlungen gegeben, wie ich wieder in Form komme.

Nun lasse ich von Claude noch ein schönes, übersichtliches README Dokument mit den Setup-Anweisungen erstellen. Zu guter letzt lasse ich Claude den ganzen Code in Git commiten und ins Repository pushen.

Die gesamte Entwicklung samt Testen hat etwa 2 Stunden gedauert.

Den Code sowie die detaillierten Setup-Anweisungen findet ihr in meinem Repo auf Github.