garmin-mcp
garmin-mcp
Servidor MCP remoto para Garmin Connect en Cloudflare Workers (nivel gratuito). Puerto completo en TypeScript de taxuspt/garmin_mcp: las 138 herramientas más un passthrough garmin_get (139 en total) y los 5 recursos MCP de plantillas/referencias de entrenamiento.
Módulos: gestión de actividades (21), salud y bienestar (29), entrenamiento y rendimiento (15), entrenamientos + constructores (19), nutrición (14), desafíos/dispositivos/equipo (18), peso/cuerpo/salud femenina/cursos (14), análisis de archivos FIT (4), perfil de usuario (4), passthrough (1).
Autenticación: el servidor es un servidor de autorización OAuth 2.1 (a través de @cloudflare/workers-oauth-provider). Añadirlo a un cliente MCP abre una página del navegador donde introduces tu correo y contraseña de Garmin (y un código MFA si tu cuenta usa 2FA). El Worker ejecuta el flujo de inicio de sesión del widget web SSO de Garmin en el lado del servidor — la única ruta de inicio de sesión que no está bloqueada por bots desde IPs de centros de datos — obtiene un token OAuth1 de larga duración (~1 año), descarta tus credenciales y almacena solo ese token cifrado en la concesión. Luego acuña tokens portadores OAuth2 de corta duración bajo demanda para connectapi.garmin.com. Un respaldo de "pegar un token" (a través del script local a continuación) está oculto detrás de un interruptor de detalles en caso de que Garmin comience a bloquear el inicio de sesión del lado del servidor.
Deploy
npm installnpx wrangler kv namespace create OAUTH_KV— pega el id enwrangler.jsoncnpx wrangler deploy
Related MCP server: Garmin Open MCP
Connect a client
claude mcp add garmin --transport http https://garmin-mcp.<your-subdomain>.workers.dev/mcpClaude Code abre la página de autorización en tu navegador; sigue sus dos pasos. claude.ai web: Configuración → Conectores → Añadir conector personalizado con la misma URL. Claude Desktop y otros clientes solo-stdio: mcp-remote también maneja el flujo OAuth.
El acceso es solo OAuth — no hay ruta de cabecera sin procesar. Cada solicitud /mcp está controlada por un token de acceso emitido por el proveedor, y un token de acceso se acuña solo al completar el flujo de inicio de sesión.
Locking to your own account
Establece OWNER_GARMIN_IDS en wrangler.jsonc a tu displayName de Garmin (el valor que devuelve get_user_profile) — una lista de permitidos separada por comas. Cualquier inicio de sesión para una cuenta de Garmin que no esté en la lista se rechaza en el paso de autorización, por lo que los extraños no pueden usar tu implementación incluso con sus propias credenciales válidas de Garmin. Déjalo vacío para permitir cualquier cuenta de Garmin.
Deviations from the original (remote/serverless adaptations)
download_activity_filedevuelve el contenido del archivo en línea (fit como base64, gpx/tcx/csv como texto, con límite de tamaño) en lugar de escribir en el disco local;set_fit_download_dires un no-op documentado.upload_coursetomagpx_content(texto XML GPX) en lugar de una ruta de archivo local.get_activity_fit_datacubre sesión/vueltas/registros + análisis de potencia (NP, VI, curva de potencia, W/kg); los análisis de cambio Di2, detección de ascensos y HRV del original no se han portado.Presupuesto de sub-solicitudes del nivel gratuito (~50/invocación):
get_training_load_trendlimitado a 45 días (antes 90),get_power_duration_curvea 15 actividades (antes 20),get_hrv_trendusa el endpoint de rango en una sola llamada, bucles de paginación de objetivos/pasos/menstruales limitados.Las herramientas devuelven objetos JSON en lugar de cadenas pre-serializadas; los errores aparecen como errores de herramienta MCP.
Notes
El token de Garmin se almacena cifrado dentro de la concesión en Workers KV; cuando expira (~1 año), las llamadas a herramientas comienzan a fallar — vuelve a autenticar el servidor en tu cliente para ejecutar el flujo de nuevo.
Los tokens de acceso son credenciales de portador: quien tenga uno válido tiene tus datos hasta que expire, por lo que la seguridad depende de que tu cliente MCP mantenga su token almacenado en secreto.
Desarrollo local:
npm run dev, luego apunta un cliente ahttp://localhost:8787/mcp.
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.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenancePersonal MCP server for interacting with your Garmin Connect data. Exposes 62 tools across 11 domains including activities, health, training, and workouts.1MIT
- AlicenseAqualityBmaintenanceUnofficial MCP server bridging Garmin Connect to MCP clients and ChatGPT, providing tools to access health data, activities, and trends via a self-hosted API.11MIT
- AlicenseAqualityBmaintenanceMCP server for reading and querying Garmin Connect data, including activities, strength history, recovery, trends, and optionally creating workouts.12MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for Garmin Connect that enables users to access and manage their personal health and fitness data, including daily summaries, heart rate, sleep, HRV, stress, body composition, activities, and training readiness, with secure per-user authentication.Apache 2.0
Related MCP Connectors
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
Hosted remote MCP server for YNAB on Cloudflare Workers with OAuth
Garmin data in Claude: 135 tools — activities, sleep, HRV, training, workouts. Free, open source.
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/rohankmr414/garmin-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server