Garmin-Strava-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Garmin-Strava-mcpshow my latest training readiness"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Garmin + Strava MCP Server
Servidor MCP que le da a Claude acceso en tiempo real a tus datos de Garmin Connect (sueño, HRV, body battery, training readiness, actividades) y de Strava (actividades, estadisticas), para que pueda analizar tu entrenamiento y proponerte sesiones.
Que hace cada archivo
garmin_client.py— habla con Garmin Connect (libreria no oficial, usa tu usuario/contraseña).strava_client.py— habla con la API oficial de Strava (OAuth2).server.py— servidor MCP que expone ambos como herramientas + autenticacion por token.requirements.txt— dependencias exactas..env.example— plantilla de variables de entorno (NUNCA subir el.envreal a GitHub).
Related MCP server: whoop-mcp
Paso 1 — Conseguir credenciales de Strava
Esto es probablemente donde te trabaste con el conector original.
Crea una "My API Application" (poné cualquier nombre, website podes poner
http://localhost).Anota el Client ID y el Client Secret que te muestra.
Authorization Callback Domain: poné
localhost(no importa mucho para este uso).Ahora necesitas un refresh token. Para conseguirlo:
Abrí esta URL en el navegador, reemplazando
TU_CLIENT_ID:https://www.strava.com/oauth/authorize?client_id=TU_CLIENT_ID&redirect_uri=http://localhost&response_type=code&scope=activity:read_all,profile:read_allStrava te va a pedir autorizar. Aceptá.
Te redirige a una URL tipo
http://localhost/?state=&code=ABC123&scope=.... Copiá el valor decode.Con ese
code, ejecutá este comando (reemplazando los valores):curl -X POST https://www.strava.com/oauth/token \ -d client_id=TU_CLIENT_ID \ -d client_secret=TU_CLIENT_SECRET \ -d code=EL_CODE_QUE_COPIASTE \ -d grant_type=authorization_codeLa respuesta trae un
refresh_token. Ese es el que vas a usar (no expira, podes usarlo siempre para pedir nuevos access tokens).
Paso 2 — Probar localmente (opcional)
python -m venv venv
source venv/bin/activate # en Windows: venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env
# Editar .env con tus credenciales reales
python server.pySi todo anda bien, va a quedar escuchando en http://localhost:8000/mcp.
Paso 3 — Subir a GitHub
git init
git add .
git commit -m "Servidor MCP Garmin + Strava"
# Crear un repo nuevo en github.com (privado, recomendado) y luego:
git remote add origin https://github.com/TU_USUARIO/garmin-strava-mcp.git
git branch -M main
git push -u origin mainImportante: el .gitignore ya excluye .env, asi que tus credenciales reales
NUNCA se suben a GitHub. Eso es justamente el punto de usar variables de entorno.
Paso 4 — Deploy en Railway
Entra a https://railway.app y logueate con GitHub.
"New Project" → "Deploy from GitHub repo" → elegi este repo.
Railway va a detectar que es Python y va a intentar levantarlo solo.
Ve a la pestaña "Variables" del proyecto y agrega, una por una:
GARMIN_EMAILGARMIN_PASSWORDSTRAVA_CLIENT_IDSTRAVA_CLIENT_SECRETSTRAVA_REFRESH_TOKENMCP_AUTH_TOKEN(inventate un string largo y random, por ejemplo conopenssl rand -hex 32)
Railway redeploya solo al guardar las variables.
En la pestaña "Settings" → "Networking", generá un dominio publico (botón "Generate Domain"). Te va a dar algo como
https://garmin-strava-mcp-production.up.railway.app.
Paso 5 — Conectar con Claude.ai
En Claude.ai, ve a Settings → Connectors → "Add custom connector".
URL del servidor:
https://TU-DOMINIO-DE-RAILWAY.up.railway.app/mcpSi te pide headers de autenticacion, agregá:
Header:
AuthorizationValor:
Bearer TU_MCP_AUTH_TOKEN(el mismo valor que pusiste en Railway)
Guardá y probá pidiendole a Claude que liste tus actividades recientes.
Herramientas disponibles
Herramienta | Que devuelve |
| Sueño: horas, fases, sleep score, HRV nocturno, FC reposo |
| HRV diario, estado, rango base |
| Energia acumulada/gastada |
| Puntaje de preparacion para entrenar hoy |
| Estado de carga (productive/overreaching/etc) |
| Actividades recientes de Garmin |
| Actividades recientes de Strava |
| Detalle de una actividad puntual |
| Totales acumulados del atleta |
Notas de seguridad
Tu password de Garmin queda como variable de entorno en Railway, nunca en el codigo ni en GitHub.
El servidor exige un Bearer token (
MCP_AUTH_TOKEN) en cada request — sin el token correcto, cualquier llamada devuelve 401. Esto evita que alguien con la URL del servidor pueda leer tus datos.garminconnectes una libreria de la comunidad, no oficial de Garmin. Funciona bien hoy, pero si Garmin cambia algo internamente puede dejar de andar hasta que se actualice la libreria.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/Juanfi-ai/Garmin-Strava-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server