Skip to main content
Glama

🏃 SportMCP — Strava para cualquier agente de IA

Servidor MCP listo para producción para Strava: funciona con Claude Desktop, Cursor, Windsurf, Cline, Continue.dev, Poke y cualquier agente de IA compatible con MCP.

Deploy to Cloudflare Workers

Cloudflare Workers GitHub MCP Protocol Compatible with Strava License: MIT

Un completo Model Context Protocol server que ofrece a cualquier asistente de IA un acceso seguro y de solo lectura a tus datos personales de fitness de Strava. Despliega una vez en Cloudflare Workers, autentícate con Strava y pega tu URL MCP personal en las herramientas de IA que uses.

Compatible con Strava. SportMCP no está afiliado, respaldado ni patrocinado por Strava.

✨ Características

  • 🤖 Funciona con cualquier cliente MCP — Claude Code, Cursor, Windsurf, Cline, Continue.dev, Poke y más

  • 🔐 OAuth seguro — OAuth 2.0 estándar de Strava, aislamiento de tokens por usuario

  • 🏃 21 herramientas MCP — Actividades, vueltas, kudos, comentarios, segmentos, esfuerzos en segmentos, rutas, equipamiento, clubes, zonas del atleta y más

  • 🔔 Webhooks opcionales — Notificaciones en tiempo real de Poke cuando terminan entrenamientos (claves por usuario)

  • 🔄 Actualización automática de tokens — Los tokens se renuevan automáticamente antes de que expiren

  • 🎨 Panel de control — Interfaz web con fragmentos de configuración con un clic para cada agente de IA principal

  • Rendimiento en el edge — Red global de Cloudflare Workers, tiempos de respuesta <50 ms

  • 💰 Nivel gratuito — 100.000 peticiones/día a coste cero

  • 🛡️ Cumplimiento — Cumplimiento total del acuerdo de API de Strava, limpieza al desautenticar en 48 h

Related MCP server: Strava MCP Server

🚀 Inicio rápido

Nota: Implementar en Cloudflare requiere algunos comandos de terminal, ¡pero lo hemos simplificado al máximo!

Haz clic en un botón y luego ejecuta un comando

Ideal para quienes prefieren hacer clic en botones a teclear comandos.

⚠️ Asegúrate de hacer un fork/copia del repositorio primero ⚠️

Paso 1: Haz clic en "Deploy to Cloudflare"

Deploy to Cloudflare Workers

Esto hará lo siguiente:

  1. Lo desplegará en tu cuenta de Cloudflare

  2. Te dará una URL del worker

Paso 2: Termina la configuración

Después de esto, tendrás que configurar secretos y webhooks:

  1. Abre la terminal (Mac: Cmd+Espacio y escribe "Terminal" | Windows: busca "PowerShell")

  2. Clona TU fork y ejecuta la configuración:

    # 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. Responde a las preguntas:

  4. ¡Listo! Visita la URL de tu worker y autentícate con Strava.

Novedad: copia y pega 5 comandos, responde unas preguntas y listo

Ideal para quienes se sienten cómodos con comandos de terminal.

Este script automatizado se encarga de todo: fork, base de datos, configuración, secretos, webhooks y despliegue.

Paso 1: Abre la terminal

  • Mac: Pulsa Cmd+Espacio, escribe "Terminal" y pulsa Enter

  • Windows: busca "Command Prompt" o "PowerShell"

Paso 2: Copia y pega estos comandos

Pega estos comandos uno a uno (pulsa Enter después de cada uno):

# 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

Paso 3: Responde a las preguntas

El script te pedirá:

  1. ID de cliente de Strava - Consíguelo en strava.com/settings/api

  2. Secret secreto de cliente de Strava - En la misma página

  3. ¿Configurar webhooks? - Escribe "s" para notificaciones push (opcional)

  4. Clave de API de Poke - Si has elegido webhooks, consíguela en poke.com/settings/advanced

Paso 4: ¡Listo!

El script automáticamente:

  • ✅ Crea tu base de datos (espacio de nombres KV)

  • ✅ Actualiza todos los archivos de configuración

  • ✅ Establece tus secretos de forma segura

  • ✅ Configura webhooks (si has elegido "sí")

  • ✅ Despliega en Cloudflare

  • ✅ Te da la URL de tu worker

Paso 5: Visita tu panel

  1. Abre la URL que te haya dado el script (parece algo así: https://sportmcp.yourname.workers.dev)

  2. Haz clic en "Autentífí sólo" ("Authenticate with Strava")

  3. Tendrás tu diseño precioso con:

    • 🏃 Actividades recientes

    • 📊 Estadísticas de rendimiento

    • 🔗 Tu URL MCP personal para asistentes de IA

    • 🔔 Estado del webhook (si está activado)

Paso 6: Conéctalo a tu agente de IA

Copia tu URL MCP personal desde el panel y añádela a tu agente de IA favorito:


🤖 Conéctalo a los agentes de IA

SportMCP utiliza el Model Context Protocol (MCP) estándar, por lo que funciona con cualquier cliente compatible con MCP. Tu URL personal tiene el siguiente aspecto:

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

Claude Code

Si usas Claude Code, consulta configuración del servidor MCP para conectarlo. Si usas Claude Desktop, edita ~/Library/Application Support/Claude/claude_desktop_config.json:

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

Reinicia Claude Desktop después de guardarlo.

Cursor

Ve a Configuración → Cursor Settings → MCP y añade:

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

Windsurf

Ve a Configuración → Cascade → MCP Servers y añade la misma configuración JSON que en Cursor.

Cline (VS Code)

Abre Cline → MCP Servers → Edit Config y añade la misma configuración JSON.

Continue.dev

Añade esto a ~/.continue/config.json:

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

Poke

Ve a Ajustes → Integraciones → Añadir servidor MCP y pega directamente tu URL MCP.

Cualquier otro cliente MCP

Dispone de dos transportes:

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

  • HTTP+SSE (heredado, por ejemplo, Claude Desktop anterior): GET /sse?token=YOUR_TOKEN + POST /messages?token=YOUR_TOKEN


¡Eso es todo! Pregunta a tu IA: "Muéstrame mis últimos entrenamientos de Strava" 🎉

Para desarrolladores que quieren control total

Si prefieres configurarlo todo manualmente en lugar de usar el script automatizado:

Requisitos previos:

Comandos que debes ejecutar:

# 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

Opcional: Configurar webhooks

wrangler secret put STRAVA_WEBHOOK_VERIFY_TOKEN
wrangler secret put POKE_API_KEY

Consulta README_DEPLOY.md para una guía detallada de configuración manual.

🔔 Webhooks en tiempo real (opcional)

⚠️ Solo para uso personal: Los webhooks envían notificaciones a una única clave de API de Poke. Actívalo solo si eres el único usuario de esta implementación. Próximamente se añadirá soporte para webhooks multiusuario.

¡Recibe notificaciones push instantáneas de Poke cuando termines tus entrenamientos!

🏃 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!

¡Enviada al instante a tu teléfono a través de iMessage/SMS cuando completas una actividad!

Configuración rápida del webhook

# 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

Consulta WEBHOOK_SETUP.md para instrucciones completas

💻 Herramientas MCP disponibles (21 en total)

Pregunta a tu asistente de IA con lenguaje natural y estas herramientas se invocarán automáticamente:

Actividades

Herramienta

Pregunta de ejemplo

get-recent-activities

"Muéstrame mis últimas 5 entrenamientos"

get-activity-details

"Dame detalles de mi último paseo"

get-activity-streams

"Muéstrame los datos de frecuencia cardíaca de mi última carrera"

get-activity-laps

"¿Cómo fueron mis parciales por vuelta?"

get-activity-kudos

"¿Quién me dio kudos en mi carrera?"

get-activity-comments

"¿Qué comentarios obtuve?"

Atleta

Herramienta

Pregunta de ejemplo

get-athlete-profile

"¿Cuál es mi información de perfil de Strava?"

get-athlete-stats

"¿Cuáles son mis estadísticas de ciclismo este año?"

get-athlete-zones

"¿Cuáles son mis zonas de entrenamiento de frecuencia cardíaca?"

get-athlete-clubs

"¿En qué clubes de Strava estoy?"

get-athlete-routes

"Lista mis rutas guardadas"

Segmentos

Herramienta

Pregunta de ejemplo

get-starred-segments

"¿Qué segmentos he marcado como favoritos?"

explore-segments

"Encuentra segmentos de escalada cerca de San Francisco"

get-segment

"Dame información del segmento 123456"

get-segment-efforts

"¿Cuáles son mis mejores esfuerzos en este segmento?"

get-segment-effort

"Dame detalles del esfuerzo en el segmento 5678"

Equipamiento y social

Herramienta

Pregunta de ejemplo

get-gear

"¿Cuántos kilómetros tiene mis zapatillas de correr?"

get-club

"Háblame de mi club de ciclismo"

get-route

"Dame los detalles de mi ruta de fin de semana"

authenticate-strava

"¿Cómo conecto mi cuenta de Strava?"

welcome-strava-mcp

"¿Cómo empiezo?"

🌐 Endpoints

Endpoint

Propósito

/

Página de inicio y documentación

/auth

Iniciar flujo OAuth

/dashboard?token=xxx

Panel de control personal con estadísticas

/mcp

endpoint del servidor MCP (para asistentes de IA)

/webhook

Receptor de webhooks de Strava (opcional)

/test-poke

Probar la integración con Poke

Con Poke

  1. Añade el servidor MCP en los ajustes de Poke

  2. Utilice la URL: https://tu-url-del-worker.workers.dev/mcp

  3. Pregúntale: "¿Cuál fue mi ritmo en la carrera de ayer?"

Con Claude Desktop

Añade a claude_desktop_config.json:

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

Consultas en lenguaje natural

  • "Muéstrame mis actividades recientes de Strava principal"

  • "¿Cuál fue mi frecuencia cardíaca durante mi última carrera?"

  • "Dame los datos de potencia del paseo en bici de ayer"

  • "Encuentra segmentos desafiantes cerca de Boulder"

  • "¿Cuáles son mis estadísticas de ciclismo de todos los tiempos?"

🔒 Características de seguridad

  • Identificación del dispositivo: autenticación automática desde el navegador

  • Actualización de tokens: renovación sin interrupciones antes de que expiren

  • Aislamiento por usuario: separación completa de datos

  • Almacenamiento seguro: cifrado de claves KV para tokens

  • Protección CSRF: validación de estado en el flujo OAuth

  • Limitación de tasa: respeta las cuotas de la API de Strava

🏗️ Arquitectura

┌─────────────────┐    ┌──────────────────────┐    ┌─────────────────┐
│  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 │       └─────────────────┘
                       └──────────────────┘

📖️ Documentación

🛠️ Stack tecnológico

  • Runtimeejecución: Cloudflare Workers (·aisladosV8)

  • Framework: Hono (una sencilla versión web)

  • Almacenamiento: Cloudflare Workers KV (sesiones y tokens)

  • Protocolo: Model Context Protocol (MCP)

  • Autenticación: OAuth 2.0 de Strava

  • webhooks (envío de notificaciones): Poke API (opcional)

💰️ Precios

¡100% gratis! Se ejecuta en la generosa capa gratuita de Cloudflare:

  • Workers: 100.000 solicitudes /día

  • Almacenamiento KV: 100.000 lecturas/día, 1.000 escrituras/día

  • Ancho de banda: ilimitado en la capa gratuita

Perfecto para uso personal. Sin tarjeta de crédito.

🔧 Desarrollo

Pruebas locales

# Install dependencies
npm install

# Start local server
wrangler dev

# Visit http://localhost:8787

Ejecutar pruebas

npm test

Variables de entorno

Consulta .env.example para todas las opciones de configuración.

🐛 Solución de problemas

Error "Authentication Required"

  • Visita /auth para volver a autenticarte

  • Asegúrate de usar el mismo navegador/dispositivo

  • Comprueba el endpoint /status para verificar la sesión

"Invalid Callback Domain"

  • Verifica que el dominio de callback de la app de Strava coincija exactamente con la worker URL

  • No incluyas el protocol (http://) ni la begin (callback)

No se reciben eventos del webhook

  • Ejecuta node scripts/manage-webhook.js view para consultar la suscripción

  • Monitorea los logs con wrangler tail

  • Verifica que el atleta esté autenticado (visita /dashboard)

  • Comprueba que la app de Strava tiene los alcances correctos de OAuth

Las notificaciones de Poke no funcionan

  • Verifica que POKE_API_KEY esté definida: wrangler secret list

  • Haz una prueba manual: curl -X POST https://your-worker-url.workers.dev/test-poke

  • Revisa los logs para detectar errores de la API de Poke

"KV namespace not found"

  • Crea el namespace: wrangler kv:namespace create STRAVA_SESSIONS

  • Actualiza el ID en wrangler.jsonc

"Deployment failed"

  • Verifica que hayas iniciado sesión: wrangler quien yo

  • Revisa la sintaxis en wrangler.jsonc

  • Asegúrate de que todos los secretos estén definidos

Roadmap

Próximamente

  • Soporte de webhooks para múltiples usuarios - Claves de notificación y enrutamient por usuario

  • Más canales de notificación - Discord, Slack, email, etc.

  • Análisis de actitud - Tendencias, información y monitoreo de la carga de entrenamiento

  • Filtros de webhook personalizados - Elije qué actividades activan notificaciones

¿Te interesa contribuir en alguno de estos? [Abre una discusión](https://github.com/abepe`?? Wait the URL should be exact: https://github.com/gabeperez/strava-mcp/discussions)!

🤝 Contribuciones

¡Las contribuciones son bienvenidas! Por favor:

  1. Haz un fork del repositorio

  2. Crea una rama de funcionalidad (git checkout -b feature/amazing-feature)

  3. Haz un commit de tus cambios (git commit -m 'Add amazing feature')

  4. Haz push de la rama (git push origin feature/amazing-feature)

  5. Aabre un Pull Request

📝 Licencia

Licencia MIT: revisa el archivo LICENSE para más detalles.

🙏 Créditos

⭐️ Histórico de estrellos

  • Si este projecto te ha yudado, ¡considera darle una estrella!


Hecho con ❤️ para los atletas que amen los datos

Informar de un error · Solicitar una funcionalidad · Debates

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