Skip to main content
Glama

🏃 SportMCP — Strava für jeden KI-Agenten

Produktionsreifer MCP-Server für Strava — funktioniert mit Claude Desktop, Cursor, Windsurf, Cline, Continue.dev, Poke und jedem anderen MCP-kompatiblen KI-Agenten.

Deploy to Cloudflare Workers

Cloudflare Workers GitHub MCP Protocol Compatible with Strava License: MIT

Ein vollständiger Model Context Protocol-Server, der jedem KI-Assistenten sicheren Lesezugriff auf deine persönlichen Strava-Fitnessdaten gewährt. Stelle ihn einmalig auf Cloudflare Workers bereit, authentifiziere dich mit Strava und füge deine persönliche MCP-URL in die KI-Tools ein, die du verwendest.

Kompatibel mit Strava. SportMCP ist nicht mit Strava verbunden und wird von Strava weder unterstützt noch gesponsert.

✨ Features

  • 🤖 Funktioniert mit jedem MCP-Client — Claude Desktop, Cursor, Windsurf, Cline, Continue.dev, Poke und weitere

  • 🔐 Sichere OAuth — Standard-Strava-OAuth-2.0, Token-Isolation pro Benutzer

  • 🏃 21 MCP-Tools — Aktivitäten, Runden, Kudos, Kommentare, Segmente, Segmentleistungen, Routen, Ausrüstung, Clubs, Athleten-Zonen und mehr

  • 🔔 Optionale Webhooks — Echtzeit-Poke-Benachrichtigungen bei abgeschlossenen Workouts (Schlüssel pro Benutzer)

  • 🔄 Automatisches Token-Refresh — Tokens werden vor Ablauf automatisch erneuert

  • 🎨 Dashboard — Web-UI mit Ein-Klick-Konfigurationssnippets für alle gängigen KI-Agenten

  • Edge-Performance — Globales Cloudflare-Workers-Netzwerk, Antwortzeiten unter 50 ms

  • 💰 Kostenloses Kontingent — 100k Anfragen/Tag zum Nulltarif

  • 🛡️ Compliance — Volle Einhaltung der Strava-API-Vereinbarung, Deauth-Bereinigung innerhalb von 48 h

Related MCP server: Strava MCP Server

🚀 Schnellstart

Hinweis: Das Deployen auf Cloudflare erfordert einige Terminalbefehle, aber wir haben es so einfach wie möglich gemacht!

Klicke einen Button, dann führe einen Befehl aus

Am besten geeignet für Nutzer, die lieber klicken, als Befehle zu tippen.

⚠️ Stelle sicher, dass du das Repo zuerst forkst/duplizierst ⚠️

Schritt 1: Klicke auf „Deploy to Cloudflare“

Deploy to Cloudflare Workers

Das wird:

  1. Es auf deinem Cloudflare-Konto deployen

  2. Dir eine Worker-URL geben

Schritt 2: Konfiguration abschließen

Nach dem Deploy musst du Secrets und Webhooks konfigurieren:

  1. Terminal öffnen (Mac: Cmd+Leertaste, „Terminal“ eintippen | Windows: nach „PowerShell“ suchen)

  2. Deinen Fork klonen und das Setup ausführen:

    # Replace YOUR-USERNAME with your GitHub username
    git clone https://github.com/YOUR-USERNAME/strava-mcp.git
    cd strava-mcp
    npm install
    node scripts/setup.js
  3. Beantworte die Aufforderungen:

  4. Fertig! Rufe deine Worker-URL auf und authentifiziere dich mit Strava.

Kopiere 5 Befehle, beantworte ein paar Fragen, fertig!

Am besten geeignet für Nutzer, die sich mit Terminalbefehlen auskennen.

Dieses automatisierte Skript übernimmt alles: Forken, Datenbankerstellung, Konfiguration, Secrets, Webhooks und Deployment.

Schritt 1: Terminal öffnen

  • Mac: Drücke Cmd+Leertaste, tippe „Terminal“, drücke Enter

  • Windows: Suche nach „Command Prompt“ oder „PowerShell“

Schritt 2: Befehle kopieren und einfügen

Füge diese Befehle einen nach dem anderen ein (drücke nach jedem Enter):

# Download the project
git clone https://github.com/gabeperez/strava-mcp.git

# Go into the folder
cd strava-mcp

# Install dependencies (takes ~30 seconds)
npm install

# Login to Cloudflare (opens browser - just click "Allow")
wrangler login

# Run automated setup (asks you a few questions, then does everything!)
node scripts/setup.js

Schritt 3: Beantworte die Aufforderungen

Das Skript fragt dich nach:

  1. Strava Client ID – erhältst du von strava.com/settings/api

  2. Strava Client Secret – dieselbe Seite wie oben

  3. Webhooks einrichten? – Tippe „y“ für Push-Benachrichtigungen (optional)

  4. Poke API-Key – falls du Webhooks gewählt hast, erhältst du den von poke.com/settings/advanced

Schritt 4: Du teilst! 🎉

Das Skript automatisch:

  • ✅ Erstellt deine Datenbank (KV-Namespace)

  • ✅ Aktualisiert alle Konfigurationsdateien

  • ✅ Setzt deine Secrets sicher

  • ✅ Richtet Webhooks ein (falls du mit ja geantwortet hast)

  • ✅ Deployt auf Cloudflare

  • ✅ Gibt dir deine Worker-URL aus

Schritt 5: Dashboard aufrufen

  1. Öffne die URL, die dir das Skript gegeben hat (sieht so aus: https://sportmcp.deinname.workers.dev)

  2. Klicke auf „Authenticate with Strava“

  3. Du siehst dein schönes Dashboard mit:

    • 🏃 Letzte Aktivitäten

    • 📊 Leistungsstatistiken

    • 🔗 Persönliche MCP-URL für KI-Assistenten

    • 🔔 Webhook-Status (falls aktiviert)

Schritt 6: Mit deinem KI-Agenten verbinden

Kopiere deine persönliche MCP-URL aus dem Dashboard und füge sie zu deinem bevorzugten KI-Agenten hinzu:


🤖 Verbinden mit KI-Agenten

SportMCP verwendet das Standard-Model Context Protocol und funktioniert daher mit jedem MCP-kompatiblen Client. Deine persönliche URL sieht so aus:

https://your-worker.workers.dev/mcp?token=YOUR_TOKEN

Claude Desktop

Bearbeite ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "sportmcp": {
      "url": "https://your-worker.workers.dev/mcp?token=YOUR_TOKEN"
    }
  }
}

Starte Claude Desktop nach dem Speichern neu.

Cursor

Gehe zu Settings → Cursor Settings → MCP und füge hinzu:

{
  "mcpServers": {
    "sportmcp": {
      "url": "https://your-worker.workers.dev/mcp?token=YOUR_TOKEN"
    }
  }
}

Windsurf

Gehe zu Settings → Cascade → MCP Servers und füge denselben JSON-Block wie oben bei Cursor hinzu.

Cline (VS Code)

Öffne Cline → MCP Servers → Edit Config und füge denselben JSON-Block hinzu.

Continue.dev

Füge zu ~/.continue/config.json hinzu:

{
  "mcpServers": [
    {
      "name": "sportmcp",
      "transport": {
        "type": "streamable-http",
        "url": "https://your-worker.workers.dev/mcp?token=YOUR_TOKEN"
      }
    }
  ]
}

Poke

Gehe zu Settings → Integrations → Add MCP Server und füge deine MCP-URL direkt dort ein.

Jeder andere MCP-Client

Zwei Transporte sind verfügbar:

  • Streamable HTTP (empfohlen): POST /mcp?token=YOUR_TOKEN

  • HTTP+SSE (Legacy, z. B. ältere Claude-Desktop-Versionen): GET /sse?token=YOUR_TOKEN + POST /messages?token=YOUR_TOKEN


Das war's! Frage deinen KI-Agenten: „Zeig mir meine letzten Strava-Workouts“ 🎉

Für Entwickler, die volle Kontrolle möchten

Wenn du lieber alles manuell konfigurierst, anstatt das automatisierte Skript zu verwenden:

Voraussetzungen:

Auszuführende Befehle:

# 1. Download and install
git clone https://github.com/gabeperez/strava-mcp.git
cd strava-mcp
npm install

# 2. Login to Cloudflare (opens browser)
wrangler login

# 3. Create database (KV namespace)
wrangler kv:namespace create STRAVA_SESSIONS
# Copy the "id" from output and paste into wrangler.jsonc

# 4. Set your Strava API credentials
wrangler secret put STRAVA_CLIENT_ID
# Paste your Client ID when prompted

wrangler secret put STRAVA_CLIENT_SECRET
# Paste your Client Secret when prompted

# 5. Deploy to Cloudflare
npm run deploy

# 6. Visit your worker URL to authenticate
open https://your-worker-name.your-subdomain.workers.dev/auth

Optional: Webhooks einrichten

wrangler secret put STRAVA_WEBHOOK_VERIFY_TOKEN
wrangler secret put POKE_API_KEY

Eine detaillierte manuelle Anleitung findest du in README_DEPLOY.md.

🔔 Echtzeit-Webhooks (Optional)

⚠️ Nur für den persönlichen Gebrauch: Webhooks senden Benachrichtigungen derzeit an einen einzelnen Poke-API-Key. Aktiviere sie nur, wenn du die einzige Person bist, die diese Instanz nutzt. Multi-User-Webhook-Support folgt in Kürze.

Erhalte sofortige Push-Benachrichtigungen über Poke, sobald du deine Workouts beendet hast!

🏃 New Strava Workout!

**Morning Run**
Type: Run
Date: Oct 29, 2025 7:30 AM
Distance: 10.5 km
Duration: 52 minutes
Pace: 4:57 min/km
Elevation: 120m
Avg HR: 145 bpm
🏆 2 PRs!

Wird beim Abschluss einer Aktivität über iMessage/SMS sofort an dein Telefon gesendet!

Schnelle Webhook-Einrichtung

# 1. Set Poke API key (get from https://poke.com/settings/advanced)
wrangler secret put POKE_API_KEY

# 2. Set webhook verification token
wrangler secret put STRAVA_WEBHOOK_VERIFY_TOKEN
# Enter: STRAVA_MCP_WEBHOOK

# 3. Test endpoint
node scripts/manage-webhook.js test

# 4. Create subscription
STRAVA_CLIENT_ID=xxx STRAVA_CLIENT_SECRET=xxx \
node scripts/manage-webhook.js create

# 5. Monitor events
wrangler tail

Die vollständige Anleitung findest du in WEBHOOK_SETUP.md

📚 Verfügbare MCP-Tools (insgesamt 21)

Stelle neue KI-Assistenten Fragen in natürlicher Sprache, und diese Tools werden automatisch aufgerufen:

Aktivitäten

Tool

Beispiel-Frage

get-recent-activities

„Zeig mir meine letzten 5 Workouts“

get-activity-details

„Hole Details für meine letzte Fahrt“

get-activity-streams

„Zeig mir die Herzfrequenzdaten meines letzten Laufs“

get-activity-laps

„Wie waren meine Rundenzeiten?“

get-activity-kudos

„Wer hat mir bei meinem Lauf Kudos gegeben?“

get-activity-comments

„Welche Kommentare habe ich bekommen?“

Athlet

Tool

Beispiel-Frage

get-athlete-profile

„Was sind meine Strava-Profilangaben?"

get-athlete-stats

„Was sind meine Radsport-Statistiken dieses Jahr?“

get-athlete-zones

„Welche Herzfrequenz-Trainingszonen habe ich?"

get-athlete-clubs

„In welchen Strava-Clubs bin ich?“

get-athlete-routes

„Liste meine gespeicherten Routen auf“

Segmente

Tool

Beispiel-Frage

get-starred-segments

„Welche Segmente habe ich mit Stern markiert?“

explore-segments

„Finde Anstiegs-Segmente in der Nähe von San Francisco“

get-segment

„Erzähl mir von Segment 1234“

get-segment-efforts

„Was sind meine besten Leistungen auf diesem Segment?"

get-segment-effort

„Hole Details zu Segment-Leistung 5678"

Ausrüstung & Social

Tool

Beispiel-Frage

get-gear

„Wie viele Meilen habe ich auf meinen Laufschuhen?“

get-club

„Erzähl mir von meinem Radsport–club“

get-route

„Hole Details zu meiner Wochenendroute“

authenticate-strava

„Wie verbinde ich mein Strava-Konto?“

welcome-strava-mcp

„Wie fange ich an?”

🌐 Endpunkte

Endpunkt

Met

/

Oben auf der Seite mit roter Doku

/m

Start OAuth-Verfahren

/

Ein persönliches Dashboard mit Statistiken

/mcp

MCP-Server-Endpunkt (für KI-Agenten)

/webhook

Strava-Webhook-Empfänger (optional)

/test-poke

Test Poke-Integration

🎯 Verwendungsbeispiele

Mit Poke

  1. Füge MCP-Server in Poke Einstellungen hinzu

  2. Verw:i.e. https://deine-worker-url.workers.dev/mcp

  3. Frage: „Was war mein Passe bei meinem gestrigen Lauf?“

Mit Claude Desktop

Füge zu claude_desktop_config.json hinzu:

{
  "mcpServers": {
    "strava": {
      "url": "https://your-worker-url.workers.dev/mcp"
    }
  }
}

Fragen in natürlicher Sprache

  • „Zeige mir meine Mood aktivitäten letzte Strava-Aktivitäten“

  • „Wie hoch war meine Herzfrequenz während meines letzten Laufes?“

  • „Hole die Leistungsdaten von meiner gestrigen Rheintour“

  • „Finde anspruchsvolle Segmente in der Nähe von Boulder“

  • „Was sind meine Straßen-Radsportstatistiken folgende?“

🔒 Sicherheitsmerkmale

  • Device-Fingerprinting — Automatische Authentifikation über den Browser

  • Token Refresh — Nahtlose Verlängerung vor dem Ablauf

  • Nutzerstart-Isolation — Vollständige Datentrennung

  • Sicherer Speicher — KV-Verschlüsselung für Tokens

  • CSRF-Schutz — State-Validierung im OAuth-Flow

  • Rate Limiting — Berücksichtigt die Strava-API-Kontingente

🏗️ Architektur

┌─────────────────┐    ┌──────────────────────┐    ┌─────────────────┐
│  AI Assistant   │───▶│  Cloudflare Worker   │───▶│   Strava API    │
│  (Poke/Claude)  │    │                      │    │                 │
│                 │    │ • MCP Server         │    │ • Activities    │
│ Natural Language│    │ • OAuth Handler      │    │ • Segments      │
│ Queries         │    │ • Device Auth        │    │ • Routes        │
│                 │    │ • Token Manager      │    │ • Stats         │
│                 │    │ • Webhook Handler    │    │                 │
└─────────────────┘    └──────────────────────┘    └─────────────────┘
                                 │                           │
                                 ▼                           ▼
                       ┌──────────────────┐       ┌─────────────────┐
                       │   Cloudflare KV  │       │   Poke API      │
                       │  • Sessions      │       │  • Push Notify  │
                       │  • OAuth Tokens  │       │  • iMessage/SMS │
                       │  • Activity Data │       └─────────────────┘
                       └──────────────────┘

📖 Dokumentation

🛠️ Tech-Stack

  • Laufzeit: Cloudflare Workers (V8-Isolate)

  • Framework: Hono (leichtes Web-Framework)

  • Speicher: Cloudflare KV (Sitzungen & Tokens)

  • Protokoll: Model Context Protocol (MCP)

  • Authentifizierung: Strava OAuth 2.0

  • Benachrichtigungen: Poke-API (optional)

💰 Preise

100 % kostenlos! Der Server läuft auf dem großzügigen kostenlosen Kontingent von Cloudflare:

  • Workers: 100.000 Anfragen/Tag

  • KV-Speicher: 100.000 Lesevorgänge/Tag, 1.000 Schreibvorgänge/Tag

  • Bandbreite: unbegrenzt im kostenlosen Tarifstufe

Perfekt für die private Nutzung. Keine Kreditkarte erforderlich.

🔧 Entwicklung

Lokales Testen

# Install dependencies
npm install

# Start local server
wrangler dev

# Visit http://localhost:8787

Tests ausführen

npm test

Umgebungsvariablen

In .iv.example find du alle Konfigurationsoptionen.

👛️ Fehlerbehebung

Fehler „Authentifizierung erforderlich“

  • Besüche /auth, um dich erneut zu authentifizieren

  • Stelle sicher, dass dee dzuselben Browser/dasselbe Gerät verwendest

  • Prüfe den /status-Enpunkt, um die Sitzung zu überprüfen

„Ungültige Callback-Domain“

  • Veriifiziere, ob die Callback-Domain der Strava-Aapp exakt mit der Worker-URL übereinstmmt

  • Gib nicht das Protokoll (http://) oder den Pfad (/callback) an

Keine Webhook-Events empfangen

  • Führe honuke scripts/manage-Webhook.js view aus, um das Subscribeion zu überprüfen

  • Überwache die Logs mit wrangler tail

  • Stelle sicher, dass der Athlete authentifiziert ist (besuche /dashboard)

  • Prüfe, ob die Strava-App die richtigen OAuth-Berechtigungsumfäge hat

Poke-Benachrichtigungen funktionieren nicht

  • Stelle sicher, dass POKE_API_KEY gesetzt ist: wrangler secret list

  • Teste manuall: Honke -X POST https://your-worker-url.workers.dev/test-poke

  • Prüfe die Logs auf Poke-API-Fehler

„KV-Namespace nicht gefunden“

  • Erotze einen Namespace: wrangler kv:namespace create STRAVA_SESSIONS

  • Aaktualeriere die ID in wrangler.jsonc

„Deployment fehlgeschlagen“

  • Stelle sicher, dass du angemeldet bist: wrangler whoami

  • Prüfe die Syntax in wrangler.jsonc

  • Stelle sicher, dass alle Secrets gesetzt sind

🗎 Roadmap

In Kürze

  • Multi-Benutzer-Webhook-Unterstützung – Benutzer-spezifische Notification-Schlüssel und -Routen

  • Weitere Benachrichtigungskanäle – Discord, Slack, E-Mail, usw.

  • Aktivitätsanalysen – Trends, Einblicke und Trainingsbelastungs-Tracking

  • Eigene Web-hook-Filter – Wähle, welche Aktivitäten Benachrichtigungen auslösen

Du interessierst dich für einen Bezug? Eröffene eine Diskussion!

🤝 Beiträge

Weitere are always: Bitte:

  1. Fork das Repository

  2. Erstelle einen Feature-Branch (git branch -b feature/amazing-feature)

  3. Committe deine Änderungen (git commit -m 'Add amazing eig feature')

  4. Pushe deine Änderungen (git push origin feature/amazing-feature)

  5. Öffne einen Pull-Request

📝 Lizenzelling

MIT-Lizenz – Die Details findest du in der Datei LICENSE.

🙏 Credits

⭐ Stern-Lauf

Wenn dir dieses Projekt geholfen hat, erwöge, ihm einen Stern zu geben!


Mitg ❤️ gemacht für Athleten, die Fürht lieben

Bug melden · Feature anfragen · Diskussionen

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/vivekvy-run/strava-mcp-oauth'

If you have feedback or need assistance with the MCP directory API, please join our Discord server