SportMCP
🏃 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.
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"
Esto hará lo siguiente:
Lo desplegará en tu cuenta de Cloudflare
Te dará una URL del worker
Paso 2: Termina la configuración
Después de esto, tendrás que configurar secretos y webhooks:
Abre la terminal (Mac: Cmd+Espacio y escribe "Terminal" | Windows: busca "PowerShell")
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.jsResponde a las preguntas:
ID de cliente de Strava (consíguelo en strava.com/settings/api)
Secreto de cliente de Strava
Clave de la API de Poke (u otra app de IA/chat) para webhooks (opcional)
¡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.jsPaso 3: Responde a las preguntas
El script te pedirá:
ID de cliente de Strava - Consíguelo en strava.com/settings/api
Secret secreto de cliente de Strava - En la misma página
¿Configurar webhooks? - Escribe "s" para notificaciones push (opcional)
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
Abre la URL que te haya dado el script (parece algo así:
https://sportmcp.yourname.workers.dev)Haz clic en "Autentífí sólo" ("Authenticate with Strava")
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_TOKENClaude 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_TOKENHTTP+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:
Node.js 18+ instalado (descárgalo aquí)
Cuenta de Cloudflare (gratuita) - crear una
Aplicación de API de Strava - crea una
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/authOpcional: Configurar webhooks
wrangler secret put STRAVA_WEBHOOK_VERIFY_TOKEN
wrangler secret put POKE_API_KEYConsulta 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 tailConsulta 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 |
| "Muéstrame mis últimas 5 entrenamientos" |
| "Dame detalles de mi último paseo" |
| "Muéstrame los datos de frecuencia cardíaca de mi última carrera" |
| "¿Cómo fueron mis parciales por vuelta?" |
| "¿Quién me dio kudos en mi carrera?" |
| "¿Qué comentarios obtuve?" |
Atleta
Herramienta | Pregunta de ejemplo |
| "¿Cuál es mi información de perfil de Strava?" |
| "¿Cuáles son mis estadísticas de ciclismo este año?" |
| "¿Cuáles son mis zonas de entrenamiento de frecuencia cardíaca?" |
| "¿En qué clubes de Strava estoy?" |
| "Lista mis rutas guardadas" |
Segmentos
Herramienta | Pregunta de ejemplo |
| "¿Qué segmentos he marcado como favoritos?" |
| "Encuentra segmentos de escalada cerca de San Francisco" |
| "Dame información del segmento 123456" |
| "¿Cuáles son mis mejores esfuerzos en este segmento?" |
| "Dame detalles del esfuerzo en el segmento 5678" |
Equipamiento y social
Herramienta | Pregunta de ejemplo |
| "¿Cuántos kilómetros tiene mis zapatillas de correr?" |
| "Háblame de mi club de ciclismo" |
| "Dame los detalles de mi ruta de fin de semana" |
| "¿Cómo conecto mi cuenta de Strava?" |
| "¿Cómo empiezo?" |
🌐 Endpoints
Endpoint | Propósito |
| Página de inicio y documentación |
| Iniciar flujo OAuth |
| Panel de control personal con estadísticas |
| endpoint del servidor MCP (para asistentes de IA) |
| Receptor de webhooks de Strava (opcional) |
| Probar la integración con Poke |
Con Poke
Añade el servidor MCP en los ajustes de Poke
Utilice la URL:
https://tu-url-del-worker.workers.dev/mcpPregú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
README_DEPLOY.md- Guía de implementación paso a paso (5 minutos)
WEBHOOK_QUICKSTART.md - Resumen rápido de webhooks
WARP.md - Detalles de desarrollo y arquitectura
PUBLISHING_CHECKLIST.md - Guía para publicar la plantilla
🛠️ 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:8787Ejecutar pruebas
npm testVariables de entorno
Consulta .env.example para todas las opciones de configuración.
🐛 Solución de problemas
Error "Authentication Required"
Visita
/authpara volver a autenticarteAsegúrate de usar el mismo navegador/dispositivo
Comprueba el endpoint
/statuspara 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 viewpara consultar la suscripciónMonitorea los logs con
wrangler tailVerifica 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_KEYesté definida:wrangler secret listHaz una prueba manual:
curl -X POST https://your-worker-url.workers.dev/test-pokeRevisa los logs para detectar errores de la API de Poke
"KV namespace not found"
Crea el namespace:
wrangler kv:namespace create STRAVA_SESSIONSActualiza el ID en
wrangler.jsonc
"Deployment failed"
Verifica que hayas iniciado sesión:
wrangler quien yoRevisa la sintaxis en
wrangler.jsoncAsegú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:
Haz un fork del repositorio
Crea una rama de funcionalidad (
git checkout -b feature/amazing-feature)Haz un commit de tus cambios (
git commit -m 'Add amazing feature')Haz push de la rama (
git push origin feature/amazing-feature)Aabre un Pull Request
📝 Licencia
Licencia MIT: revisa el archivo LICENSE para más detalles.
🙏 Créditos
Construido con Hono
Con tecnología de Cloudflare Workers
MCP por Antropic
Notificaciones a través de Poke
Inspirado por la comunidad de Strava ?♀️🚴?♂️
⭐️ 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
This server cannot be installed
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
Strava MCP tools for AI: athletes, activities, segments, clubs, routes. Powered by HAPI MCP server.
Private Apple Health metrics and workout detail for ChatGPT, Claude, and any MCP client.
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
Pace is a remote MCP server that exposes wearable and fitness data to Claude via the Model Context Protocol. It connects to Garmin, Oura, Whoop, Polar, Fitbit and 20+ devices and provides 15 tools for querying sleep, activity, recovery, and training data. Hosted on Google Cloud Run, OAuth 2.1 authentication, Streamable HTTP transport. Instructions: First you need to create an account at: https://pacetraining.co and connect your wearables. After that you can connect the remote Server via Custom Connector in Claude and OAuth 2.1 Flow startet.
Related MCP Servers
- AlicenseBqualityDmaintenanceIntegrates with the Strava API to allow AI assistants to access fitness data including athlete profiles, activity history, and segment statistics. It enables users to query detailed performance metrics and explore geographic segment data through natural language commands.861MIT
- AlicenseBqualityDmaintenanceEnables users to interact with their Strava data through natural language to analyze workouts, track fitness progress, and explore routes. It supports retrieving detailed activity stats, heart rate data, and segment insights directly within AI assistants.26445MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to access Strava running data, route planning, and weather information for intelligent running coaching.15MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to directly access and analyze Strava activity data, including runs, rides, and swims, through natural language queries.417MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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