Skip to main content
Glama
saryva
by saryva

MCP Garmin

Servidor MCP que expone tus datos de Garmin Connect (actividades, sueño, recuperación, estado de forma) a Claude, en modo solo lectura.

Instalación rápida (Claude Desktop, sin terminal)

  1. Descarga mcp-garmin.mcpb de la última release.

  2. En Claude Desktop: Configuración → Extensiones → "Install Extension…" → selecciona el fichero.

  3. Rellena tu email y contraseña de Garmin Connect en el formulario. Se guardan solo en tu máquina.

Related MCP server: strava-mcp

Instalación para desarrollo

git clone <url-del-repo>
cd mcp-garmin
cp .env.example .env   # rellena tus credenciales
uv sync
uv run pytest          # verifica que todo pasa

Añade el servidor a tu claude_desktop_config.json o .mcp.json apuntando a uv run --directory <ruta-del-repo> src/server.py.

Tools disponibles

  • garmin_login(email, password, mfa_code) — inicia sesión (con soporte MFA).

  • get_activities(start, limit, activity_type) — actividades recientes.

  • get_activity_detail(activity_id) — detalle y splits de una actividad.

  • get_daily_summary(start_date, end_date) — pasos, calorías, minutos activos.

  • get_recovery_metrics(day) — sueño, Body Battery, HRV, FC en reposo.

  • get_training_zones() — zonas de FC y potencia configuradas.

  • get_training_status(day) — Training Load/Status, VO2 max, récords, predicciones.

Alcance

Solo lectura. La escritura de entrenamientos hacia el dispositivo queda fuera de esta versión (ver docs/superpowers/specs/2026-07-27-garmin-mcp-connector-design.md).

Notas sobre credenciales y requisitos

  • Instalación vía .mcpb: Claude Desktop guarda tu email y contraseña de Garmin usando el keychain del sistema operativo (cifrado). Instalación manual (editando claude_desktop_config.json / .mcp.json o el .env): GARMIN_PASSWORD se guarda tal cual, en texto plano, en ese fichero. Es un compromiso asumido para simplificar el flujo de desarrollo/manual; ten cuidado con los permisos de esos ficheros y no los subas a un repo.

  • Requisito de uv en la máquina destino: el .mcpb usa "type": "uv" como runtime, lo que evita tener que preinstalar Python o Node en la máquina, pero no evita necesitar uv: uv debe estar instalado en la máquina donde se instale la extensión para que mcpb pueda ejecutar el servidor.

Available Tools

7 tools
garmin_loginA

Inicia sesión en Garmin Connect. Si no pasas email/password, usa las variables de entorno GARMIN_EMAIL/GARMIN_PASSWORD. Si Garmin pide un código de verificación (MFA), vuelve a llamar a esta tool solo con mfa_code relleno.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailNo
mfa_codeNo
passwordNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must convey behavioral traits. It explains the MFA flow and env var fallback, but does not mention session persistence or side effects (e.g., invalidating previous sessions). Partial transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no redundancy, and the essential information is front-loaded. Every word serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the immediate login flow and MFA handling, but could be more complete by noting that login is a prerequisite for sibling tools and that output exists (output schema present). Adequate but with room for improvement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description only provides usage context for the parameters (email, password, mfa_code) but does not specify formats, constraints, or data types. Adds some meaning but insufficient for full parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool logs into Garmin Connect, specifying the action ('Inicia sesión') and resource. It is distinct from sibling tools which are data retrieval operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on using environment variables as fallback and handling MFA by calling the tool again with only mfa_code. This covers when and how to use the tool effectively.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_activitiesB

Lista actividades/entrenamientos recientes de Garmin Connect, con distancia, duración, frecuencia cardíaca media y desnivel. Usa activity_type (p. ej. 'running', 'cycling') para filtrar por deporte.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
startNo
activity_typeNo

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It does not disclose whether authentication is needed, pagination behavior, ordering, or data freshness. These gaps limit an AI agent's ability to invoke correctly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no extraneous text. Front-loaded with purpose, immediately actionable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite low complexity (3 params, no nested objects), the description omits critical context: authentication, return format, pagination, error handling. Inadequate for a tool with no output schema or annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must explain all parameters. It explains activity_type but not limit and start, leaving basic pagination semantics undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it lists recent activities from Garmin Connect, specifying included fields (distance, duration, heart rate, elevation). It implies differentiation from sibling tools (e.g., get_activity_detail) but could explicitly contrast list vs detail.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides guidance on using activity_type parameter for filtering but lacks explicit when-to-use or when-not-to-use instructions relative to siblings or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_activity_detailA

Detalle de una actividad concreta de Garmin Connect: resumen y splits/parciales. Usa el 'id' devuelto por get_activities.

ParametersJSON Schema
NameRequiredDescriptionDefault
activity_idYes

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must disclose behavioral traits. It mentions the output (summary and splits) but does not state read-only nature, authentication prerequisites, or any side effects, leaving gaps for a tool with no annotation support.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no unnecessary words, front-loaded with purpose and usage. Efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one param and no output schema, the description adequately covers purpose and usage. It specifies the return content (summary and splits), but could be slightly more complete by mentioning if the response is paginated or includes all fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, and the description adds meaning by linking activity_id to the output of get_activities, but it does not specify format, validation rules, or allowed values beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it provides 'detalle de una actividad concreta' with 'resumen y splits/parciales', distinguishing it from sibling tools like get_activities (list) and get_daily_summary (daily data).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description instructs to use the 'id' returned by get_activities, providing a clear usage context for when to invoke this tool after listing activities.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_daily_summaryB

Resumen diario de pasos, calorías y minutos activos. Formato de fecha YYYY-MM-DD. Si no indicas fechas, usa el día de hoy.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
start_dateNo

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden for behavioral disclosure. It mentions the data returned (steps, calories, active minutes) but does not state whether the operation is read-only, requires authentication, or has any side effects. The date format and default are helpful, but key behavioral traits are missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of three short, front-loaded sentences with no wasted words. It immediately states what the tool returns, then provides format and default context. Every sentence serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with two optional parameters and no output schema, the description is mostly adequate. It explains the daily summary metrics, date format, and default. However, it does not clarify whether the tool returns data for a single day or for a range, nor does it describe the output structure (e.g., array of daily summaries). This omission may leave an AI agent unsure of the response format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds format (YYYY-MM-DD) and default behavior (today if omitted) for both parameters. It does not differentiate start_date and end_date individually, but the two sentences provide practical, actionable guidance beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool provides a daily summary of steps, calories, and active minutes. It identifies the specific resource and action. However, it does not explicitly differentiate from sibling tools like get_activities or get_activity_detail, which could cause confusion for an AI agent choosing between them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a usage guideline for default behavior ('if no dates, use today') and date format. However, it lacks guidance on when to use this tool versus siblings like get_activities for individual activities or get_recovery_metrics for recovery data.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_recovery_metricsA

Métricas de recuperación de un día: sueño, Body Battery, HRV y frecuencia cardíaca en reposo. Formato de fecha YYYY-MM-DD; por defecto usa el día de hoy. Para varios días, llama varias veces.

ParametersJSON Schema
NameRequiredDescriptionDefault
dayNo

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the output metrics and date format, but since no annotations are present, it carries the full burden. It does not mention side effects, authentication, or error handling, which is acceptable for a simple read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences that cover purpose, parameters, and usage. Every sentence adds value with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the input format, default, and output metrics. For a simple tool with one parameter and no output schema, this is mostly complete. It lacks details on response structure or data availability, but these are minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema parameter has no description, but the description adds meaning by specifying the date format (YYYY-MM-DD) and default value (today). This fully compensates for the 0% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves recovery metrics (sleep, Body Battery, HRV, resting heart rate) for a single day, which distinguishes it from sibling tools like get_daily_summary. The specific verb and resource are well-defined.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides one usage guideline: call multiple times for multiple days. However, it does not compare to sibling tools like get_daily_summary or specify when to prefer this tool over alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_training_statusB

Estado de forma y carga de entrenamiento: Training Status/Load, VO2 max, récords personales y predicción de tiempos de carrera. Formato de fecha YYYY-MM-DD; por defecto usa el día de hoy.

ParametersJSON Schema
NameRequiredDescriptionDefault
dayNo

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description bears full burden for behavioral disclosure. Only date format and default today are noted; no information about authentication, data freshness, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences efficiently convey purpose and parameter details without extraneous text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the description covers the basics, it lacks details on return value structure and does not explain when to choose this tool over closely related siblings like get_daily_summary or get_recovery_metrics. Given the simple input and no output schema, it is minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaning for the only parameter 'day' by specifying date format YYYY-MM-DD and default behavior (today). This compensates for the 0% schema description coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves training status/load, VO2 max, personal records, and race time predictions. It distinguishes itself from siblings by focusing on aggregated training metrics rather than individual activities or daily summaries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like get_daily_summary or get_recovery_metrics. No prerequisites or exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_training_zonesB

Zonas de frecuencia cardíaca y de potencia configuradas en Garmin Connect.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description does not disclose any behavioral traits such as authentication requirements, error handling, or performance characteristics. For a simple read tool, it should at least indicate it requires prior login or that data is user-specific.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, efficiently conveying purpose. However, the description is in Spanish, which may reduce clarity for English-speaking agents. Otherwise, it is well-structured and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is sufficient for a no-parameter read tool but lacks details about the output format (e.g., are zones lists with ranges?). It could be more complete by specifying the structure of returned zones.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no parameters and is fully described (100% coverage). The description adds no extra parameter info, which is acceptable since there are none. Baseline 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves heart rate and power zones from Garmin Connect. The resource (training zones) and action (get) are specific. However, it does not explicitly differentiate from siblings like get_training_status, which is distinct but not mentioned.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. The description merely states what it returns without context on prerequisites or limitations. Lacks any 'when to use' or 'when not to use' information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 7 tool updatesv0.1.0
    • First observedgarmin_login
    • First observedget_activities
    • First observedget_activity_detail
    • First observedget_daily_summary
    • First observedget_recovery_metrics
    • First observedget_training_status
    • First observedget_training_zones

TDQS

A3.7/5.0
Disambiguation5/5

Each tool targets a distinct aspect of Garmin Connect: login, activities, daily summary, recovery, training zones, training status, and activity detail. There is no overlap in purpose.

Naming Consistency5/5

All tools use snake_case with a clear 'get_' prefix for queries and a single 'garmin_login' for authentication. The naming pattern is consistent and predictable.

Tool Count5/5

Seven tools is well-scoped for a fitness data server, covering login, activity listing, daily summary, recovery metrics, training zones, training status, and activity detail. No tool feels superfluous.

Completeness4/5

The tools cover common read operations for Garmin Connect, but lack filtering by date range for activities and batch retrieval for metrics. Minor gaps that do not severely hinder typical use.

Maintenance

ActivitySlowing
ResponsivenessSyncing

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

  • A
    license
    A
    quality
    B
    maintenance
    Enables Claude to access and query your Garmin Connect data, including sleep, activities, training load, and health metrics, through a set of read-only MCP tools.
    28
    1
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Connects Garmin watch data to Claude Desktop, allowing users to ask natural language questions about their health and activity data from Garmin Connect.
    -

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/saryva/garmin-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server