garmin-mcp
Garmin MCP
Estado del proyecto (2026-08-23): implementación de túnel personal; las pruebas de humo locales pasan. No habilite el acceso de amigos ni el ingreso público al MCP. Las credenciales reales de Garmin permanecen bloqueadas hasta que el operador apruebe explícitamente el túnel HTTPS público link-web independiente y complete la lista de verificación de pruebas en vivo en
PERSONAL_TUNNEL_RUNBOOK.md.
Servidor de recursos MCP multiusuario y de solo lectura que envuelve cyberjunky/python-garminconnect. Expone datos autenticados de Garmin sin aceptar un ID de usuario como argumento de herramienta.
Modelo de seguridad
Las viñetas siguientes describen la intención original del diseño. La implementación actual todavía no demuestra todas ellas; las brechas conocidas y las pruebas de aceptación necesarias se seguimiento en DESIGN_DRAFT.md.
Los tokens de portador (Bearer) de MCP se verifican independientemente de la autenticación de Garmin. El OIDC de producción valida la firma, el emisor, la audiencia, la caducidadцель, los ámbitos requeridos y usa la reclamación
subverificada.El correo electrónico, la contraseña y los códigos MFA de Garmin existen solo durante su solicitud. No sepersistentan ni se registran. El registro de acceso de Uvicorn está desactivado.
Solo se almacena el JSON de sesión serializado de
python-garminconnect, cifrado con AES-256-GCM y autenticado contra el titular propietario, de modo que el texto cifrado no pueda moverse entre usuarios.Los clientes MFA son locales al proceso, de un solo uso, vinculados a su propietario y caducan a los cinco minutos.
Las URL de conexión colocan su estado firmado de un solo uso en el fragmento. JavaScript externo limpia el fragmento y traslada el estado al cuerpo de una solicitud POST, manteniéndolo fuera de los registros de acceso HTTP y de los mediate proxies.
La desconexión elimina los tokens cifrados locales. Esto no revoca un token ya emitido por Garmin; revoque el acceso en la configuración de seguridad de la cuenta de Garmin si se sospecha de un compromiso.
Related MCP server: garmin-mcp
Modo de túnel personal para ChatGPT
La configuración personal usa explícitamente dos escuchadores:
SERVER_ROLE=mcpen el puerto de bucle local 3000. Solo Open.AI Secure MCP Tunnel puede alcanzar este puerto.SERVER_ROLE=link-weben el puerto de bucle local 3001. Un túnel HTTPS separado only exponser este listener para que un teléfono pueda ingresar las credenciales de Garmin sin exponer el endpoint de MCP.
AUTH_MODE=tunnel tiene un TUNNEL_PRINCIPAL_ID configurado; no es un modo multiusuario. El túnel de OpenAI es el límite de autenticación, y el servidor rechaza el modo combinado o un enlace que no sea en bucle local, salvo que el aislamiento sobre el contenedor esté explícitamente habilitado. Consulta PERSONAL_TUNNEL_RUNBOOK.md para el despliegue de extremo a extremo.
Ejecución local
Requiere Python 3.12+, PostgreSQL 17 y uv.
cp .env.example .env
# Fill secrets, then for local-only bearer authentication set AUTH_MODE=development.
uv sync --all-extras
psql "$DATABASE_URL" -f migrations/001_initial.sql
uv run garmin-mcpO ejecute docker compose up --build después de crear el archivo .env. Compose publica ambos puertos de la aplicación úúnicamente en 127.0.0.1 y no publica PostgreSQL. El endpoint de MCP absorb /mcp; el endpoint de salud /healthz. En modo desarrollo, el propio valor del token is el ID de usuario local. Nunca exponga el modo desarrollo más allá de loopback.
Herramientas MCP
get_connection_queDestinyconnect_garmin— devuelve una URL de navegador de un solo uso, válida por diez minutosget_id_mfa_request— envía una solicitud de código MFA de un solo uso a Garminget_mfa_status— devuelve el estado actual de la solicitud MFAget_profiledisconnect_garmin
La herramienta de datos actual de Garmin es de solo lectura. disconnect_garmin muta algo solo local el estado de conexión al eliminar la sesión almacenada. Las credenciales de la cuenta se introducen únicamente en la página de vinculación del navegador, nunca se envvían como argumentos de herramientas MCP. Las herramientas de exhaustividad/actividad aún no se han implementado.
Validación.
uv run ruff check .
uv run mypy src
uv run pytest
uv build
uv run pip-auditNo pongas credenciales reales de Garmin en CI. Cualquier futura prueba en vivo debe usar una cuenta dedicada y un marcador explícito de prueba de integración.
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 gradedqualityCmaintenanceConnects Garmin Connect data to MCP-compatible clients, providing access to fitness activities, health metrics, and training plans. It supports advanced features like headless 2FA and automated MFA retrieval to enable seamless health data interaction through natural language.1MIT
- AlicenseNot gradedqualityBmaintenanceConnects MCP clients to Garmin Connect data, enabling queries about activities, sleep, heart rate, body battery, and training status.MIT
- FlicenseNot gradedqualityBmaintenanceExposes Garmin Connect health and activity data (steps, sleep, heart rate, etc.) via MCP tools, with built-in login and MFA support.
- AlicenseBqualityBmaintenanceEnables retrieval of Garmin Connect data such as activities, sleep, heart rate, and body battery levels using unofficial API through MCP tools.4MIT
Related MCP Connectors
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
Mastodon MCP — public Mastodon data via mastodon.social (no auth required)
Wise (https://wise.com) MCP, multi-currency account access via Personal Token + SCA key. Reads profi
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/balabeir/garmin-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server