Skip to main content
Glama
echocharlie

garmin-connect-mcp-server

by echocharlie

garmin-connect-mcp-server

A read-only Model Context Protocol (MCP) server that gives Claude Desktop access to your Garmin Connect data — daily health metrics, sleep, activities, training status, and body composition.

Non-technical? Follow the step-by-step QUICKSTART — or, if you use Claude Cowork/Claude Code, paste the one-shot prompt in SETUP-PROMPT.md and let Claude do the setup for you.

Why this exists

Garmin's official APIs (Health API, Activity API) are only available through the Garmin Connect Developer Program, which is gated to approved businesses. This server instead uses the well-established unofficial garminconnect Python library, which signs in with your own Garmin account using the same OAuth flow as the official Garmin Connect mobile app. No developer program membership, no API keys — you log in once and the long-lived tokens refresh themselves on use.

Unlike most Garmin MCP servers (which expose 60–110 thin endpoint wrappers), this one follows Anthropic's tool-design guidance: six consolidated, purpose-built tools that return compact tables designed for an LLM's context window.

Related MCP server: DkwtMCP

Tools

Tool

What it returns

garmin_get_daily_summary

Per-day steps, resting HR, overnight HRV + status, Body Battery high/low, stress, intensity minutes, active calories (≤31 days/call)

garmin_get_sleep

Per-night sleep score, quality, stage durations (deep/light/REM/awake), overnight HRV, SpO2, resting HR (≤31 days/call)

garmin_list_activities

Activity list with IDs, distance, duration, HR, pace/speed, elevation, training effect; filterable by type (≤90 days/call)

garmin_get_activity_detail

One activity in depth: pace/power/cadence/calories, plus lap splits and HR-zone breakdown in detailed mode

garmin_get_training_status

Training readiness, training status, acute load, VO2max, HRV status, and 5K/10K/half/marathon race predictions in one call

garmin_get_body_composition

Weight, body fat %, muscle mass, body water, BMI from a Garmin Index scale or manual entries (≤90 days/call)

All tools are read-only and marked with readOnlyHint — nothing is ever written to your Garmin account. Tools degrade gracefully: an account with no watch data returns clearly-empty tables rather than errors (activity-only accounts, e.g. from a Tacx trainer, still get full activity data).

Requirements

  • Python 3.12+ (required by garminconnect 0.3.x)

  • A free Garmin Connect account (no device required to test auth; data appears once a device or app syncs to the account)

  • Claude Desktop to use the tools (optional for development)

Install

With uv (recommended):

uv sync

Without uv (plain venv + pip) — macOS/Linux:

python3 -m venv .venv
.venv/bin/pip install -r requirements.txt

Windows (PowerShell):

py -m venv .venv
.venv\Scripts\pip install -r requirements.txt

Both paths create the environment in .venv/, so the Claude Desktop config below is identical either way.

Authenticate (one time)

uv run python login.py            # or: .venv/bin/python login.py

Enter your Garmin email and password (plus MFA code if enabled). OAuth tokens are saved to ~/.garminconnect and refresh themselves on use. Your password is never stored — only the tokens are. Re-run the same command whenever tokens expire, or with --force to switch to a different Garmin account.

To store tokens somewhere else, set the GARMINTOKENS env var — but note it must then be set in both places: in your shell when running login.py, and in the Claude Desktop config's env block (GUI apps don't inherit your shell environment):

"garmin": {
  "command": "...",
  "args": ["..."],
  "env": { "GARMINTOKENS": "/path/to/tokens" }
}

Test locally (optional)

uv run fastmcp dev inspector server.py      # or: .venv/bin/fastmcp dev inspector server.py

This opens the MCP Inspector in your browser to exercise each tool by hand.

Install in Claude Desktop

Prefer not to hand-edit JSON? The QUICKSTART has a copy-paste prompt that asks Claude (Claude Code, or Claude Desktop with file access) to write this config for you.

Edit claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

(Claude Desktop → Settings → Developer → Edit Config opens it for you.) Add:

{
  "mcpServers": {
    "garmin": {
      "command": "/ABSOLUTE/PATH/TO/garmin-connect-mcp-server/.venv/bin/python",
      "args": ["/ABSOLUTE/PATH/TO/garmin-connect-mcp-server/server.py"]
    }
  }
}

On Windows, command is C:\\...\\garmin-connect-mcp-server\\.venv\\Scripts\\python.exe. No env block or secrets are needed — auth comes from the token store. Fully quit and reopen Claude Desktop (it reads the config only on launch), then try: "What were my Garmin workouts this month?"

Troubleshooting

  • 429 / rate limited during login — Garmin rate-limits its SSO endpoint by IP. Don't retry in a loop; wait 30–60 minutes or switch networks (a phone hotspot changes your IP) and run login.py again.

  • Authentication failed / token errors — re-run the login script (uv run python login.py or .venv/bin/python login.py); tokens die if you change your Garmin password or Garmin revokes them. The running server picks up fresh tokens on the next tool call — no restart needed.

  • Tools return empty tables / all - — the account has no synced data for that range. Health metrics (sleep, HRV, Body Battery, training status) require a Garmin watch; activities can come from any source that syncs to Garmin Connect (trainer, Zwift, phone app).

  • Login suddenly breaks for everyone — Garmin occasionally changes their SSO flow, which temporarily breaks the unofficial library until it's patched. Update with uv sync --upgrade (or .venv/bin/pip install -U garminconnect) and retry.

  • Claude Desktop doesn't show the tools — check the config file for JSON errors (a trailing comma breaks the whole file), verify both paths are absolute and the .venv exists, then fully quit and reopen the app.

How it works

Claude Desktop ──stdio──> server.py (FastMCP, 6 read-only tools)
                              │
                              ├── reads OAuth tokens from ~/.garminconnect
                              │      (written once by login.py; auto-refreshed)
                              │
                              └── garminconnect (unofficial lib, >= 0.3.6)
                                     └── Garmin Connect private web API
  • server.py — the MCP server; never sees your password, only reads tokens.

  • login.py — one-time interactive sign-in (handles MFA); saves tokens.

Fair warning

This uses Garmin Connect's private web API via your personal account — technically a gray area under Garmin's ToS, though it's the same approach used for years by Home Assistant integrations and many other community projects without issue. Use reasonable request volumes and your own account. This project is not affiliated with or endorsed by Garmin.

Development

uv run python -m compileall server.py login.py   # syntax check
uv run fastmcp dev inspector server.py           # manual tool testing

Tool design notes: tools are namespaced garmin_* to compose cleanly with sibling health MCP servers (Oura, Strava, …); outputs are compact markdown tables (roughly 40 tokens/day-row); date ranges are capped per call with actionable error messages.

License

MIT

Available Tools

6 tools
garmin_get_activity_detailA
Read-only

Deep-dive a single Garmin activity: distance, time, HR, pace/speed, cadence, power, elevation, calories, training effect — plus lap splits and heart-rate-zone breakdown in 'detailed' mode. Get activity_id from garmin_list_activities first.

ParametersJSON Schema
NameRequiredDescriptionDefault
activity_idYesNumeric activity ID from garmin_list_activities.
response_formatNo'concise' = summary metrics only; 'detailed' adds per-lap splits and HR-zone time.concise

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=true, and description consistently presents a read operation. Adds detail about what the 'detailed' mode returns (lap splits, HR-zone breakdown) beyond annotations. Could mention rate limits or auth, but overall transparent.

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?

Highly concise: a single sentence that front-loads the main purpose, lists key metrics, and provides actionable instruction. No filler.

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

Completeness5/5

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

Given the output schema exists, description doesn't need to detail return values. It covers all necessary context: what data is retrieved, the two modes, and prerequisite. Complete for this tool.

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 coverage is 100%, baseline 3. Description adds meaning by elaborating on response_format values: 'concise' vs 'detailed' with specific added data. This goes beyond the schema's simple enum description.

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?

Description starts with 'Deep-dive a single Garmin activity' and lists specific metrics (distance, time, HR, etc.), clearly stating the tool's purpose. It distinguishes itself from siblings by mentioning how to get the activity_id from garmin_list_activities.

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?

Explicitly instructs to get activity_id from garmin_list_activities first, providing a prerequisite. Explains the two response_format options ('concise' vs 'detailed'). Does not explicitly state when not to use, but the context is clear given sibling tools.

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

garmin_get_body_compositionA
Read-only

Body composition entries (Garmin Index scale or manual) as a table (max 90 days, default last 30). Columns: date, weight_kg, body_fat_pct, muscle_mass_kg, body_water_pct, bmi. Only days with a measurement appear.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNoISO end date (inclusive). Default: today.
start_dateNoISO start date (inclusive). Default: 29 days before end_date.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, and the description adds that it returns a table with specific columns, max 90 days, default 30, and only days with measurements, providing full behavioral transparency beyond annotations.

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, front-loaded with the core purpose and key constraints, no wasted words, perfectly concise.

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

Completeness5/5

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

Given optional parameters with full schema descriptions, an output schema exists, and the description covers output shape and constraints, the definition is fully complete for agent decision-making.

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 already describes parameters with 100% coverage (ISO dates, defaults), and the description adds context about the maximum range and default behavior, meaningfully extending 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 the tool returns body composition entries as a table with specific columns and a date range limit, distinguishing it from sibling tools like garmin_get_daily_summary or garmin_get_sleep.

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 implies usage for retrieving body composition data within a date range, but does not explicitly state when not to use or compare to alternatives; however, sibling tools are distinct enough that the purpose is clear.

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

garmin_get_daily_summaryA
Read-only

Day-by-day Garmin health metrics as a compact table (max 31 days, default last 7).

Columns: date, steps, resting_hr (bpm), hrv_avg (ms overnight), hrv_status (balanced/unbalanced/low), bb_high/bb_low (Body Battery 0-100), stress_avg (0-100), intensity_min (moderate + 2x vigorous), active_kcal. For sleep detail use garmin_get_sleep; for workouts use garmin_list_activities.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNoISO end date (inclusive). Default: today in the SERVER's local timezone — near midnight this can differ from the Garmin account's calendar day; pass explicit dates if it matters.
start_dateNoISO start date (inclusive), e.g. '2026-07-01'. Default: 6 days before end_date.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, and the description adds valuable behavioral details: max 31-day range, default last 7 days, and the format of the output as a compact table. No contradictions.

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 two well-structured sentences followed by a clear list of columns and sibling references. Every sentence provides necessary information without redundancy.

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

Completeness5/5

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

Given the tool has an output schema and the description lists all columns, the behavioral context is fully covered. Sibling tool references and parameter constraints provide complete context for an AI agent.

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 coverage is 100% with detailed descriptions for both parameters. The description adds contextual value by stating the maximum range (31 days) and default range (last 7 days), which goes beyond the schema's syntax.

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 that the tool provides daily Garmin health metrics in a compact table format and lists all columns explicitly. It distinguishes itself from sibling tools by referencing garmin_get_sleep and garmin_list_activities for specific use cases.

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?

The description explicitly tells when to use alternatives: for sleep detail use garmin_get_sleep and for workouts use garmin_list_activities. It also implies this tool is for general daily health metrics, providing clear context for selection.

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

garmin_get_sleepA
Read-only

Garmin sleep data per night as a compact table (max 31 days, default last 7).

Columns: date (wake-up morning), score (0-100), quality, duration, deep, light, rem, awake (H:MM), overnight_hrv (ms), spo2_avg (%), resting_hr (bpm). Note: if the user also wears an Oura ring, oura_* tools report the same nights and may differ slightly; say which source you're citing.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNoISO end date (inclusive). Default: today. Each date refers to the night ENDING that morning.
start_dateNoISO start date (inclusive). Default: 6 days before end_date.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, which the description implicitly supports. The description adds constraints (max 31 days, default 7 days) and a data-source transparency note about Oura ring discrepancies. No contradictions.

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?

Three sentences efficiently convey purpose, output columns, range, and usage note. No extraneous content; front-loaded with key information.

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?

With output schema present, the description covers the essential purpose, data shape (columns), and usage constraints. The only minor gap is lack of explicit return format (how rows are organized), but it is implied by 'per night'. Complete enough for a simple read tool.

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 100% with clear definitions of start_date and end_date, including the night-ending interpretation. The description does not add significant meaning beyond the schema, only restating the range. Baseline score of 3 is appropriate.

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 retrieves Garmin sleep data per night, specifies a table format with column details, and indicates a maximum 31-day range. This distinguishes it from sibling tools like garmin_get_daily_summary or garmin_get_activity_detail, which cover different data types.

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 explains the default range (last 7 days) and maximum (31 days), and includes a note about Oura ring as an alternative source for sleep data. However, it does not explicitly state when not to use this tool or recommend specific siblings for other purposes.

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

garmin_get_training_statusA
Read-only

Current Garmin training snapshot in one call: training readiness score, training status (e.g. productive/maintaining/strained), acute load, VO2max, HRV status, and race time predictions (5K/10K/half/marathon). Use this for 'how is my training going / how recovered am I' questions; combine with oura_* readiness for cross-source checks.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true, so no destructive behavior. Description adds value by listing all returned data fields (readiness, status, load, VO2max, HRV, predictions). Could mention that this is a snapshot at current time, but otherwise transparent.

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: first lists data points, second gives usage guidance. Every word serves a purpose, no redundancy.

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

Completeness5/5

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

With no parameters, readOnlyHint annotation, and output schema present, the description fully covers what the tool returns and when to use it. No gaps.

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?

No parameters defined, so description does not need to add parameter semantics. Baseline 4 for zero parameters.

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?

Description explicitly states verb 'get' and resource 'training status' and lists the specific data elements (readiness score, status, acute load, VO2max, HRV, race predictions). It distinguishes from siblings by focusing on training status snapshot, unlike daily summary or activity detail.

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?

Clearly states when to use: 'how is my training going / how recovered am I' questions. Also suggests combining with oura_* for cross-source checks. Lacks explicit when-not-to-use or comparison with other Garmin sibling tools, but usage context is clear.

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

garmin_list_activitiesA
Read-only

List Garmin activities in a date range as a compact table (max 90 days, default last 30).

Columns: activity_id (for garmin_get_activity_detail), date, type, name, distance_km, duration (H:MM), avg_hr, max_hr, pace_or_speed, elev_gain_m, aerobic_te (training effect 0-5), anaerobic_te.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax activities to return (newest first).
end_dateNoISO end date (inclusive). Default: today.
start_dateNoISO start date (inclusive). Default: 29 days before end_date.
activity_typeNoFilter by Garmin PARENT category only — subtypes are rejected by the API. Subtypes roll up: virtual_ride/mountain_biking -> 'cycling'; treadmill/trail running -> 'running'; strength training/indoor cardio -> 'fitness_equipment'. Omit for all types.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the description adds value by detailing the output format (columns). However, no additional behavioral traits (e.g., data freshness, pagination limit) are disclosed beyond what annotations and parameter schema provide.

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 a single focused paragraph with the main purpose first, then a compact list of columns. Every sentence is useful—no redundancy or fluff.

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 explains the date range defaults, column output, and activity_type rollup. It lacks mention of sorting (newest first, though that's in the limit description) and total count, but given the presence of an output schema and annotations, it is mostly complete.

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 coverage is 100%, giving a baseline of 3. The description adds significant meaning by explaining the activity_type rollup behavior (e.g., virtual_ride -> 'cycling'), which is not in the schema. This extra context justifies a 4.

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 'List Garmin activities in a date range as a compact table', providing a specific verb and resource. It also includes column details and mentions the relationship to garmin_get_activity_detail, but does not explicitly distinguish from siblings.

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 implies usage by referencing activity_id 'for garmin_get_activity_detail', hinting at a workflow, but does not provide explicit when-to-use or when-not-to-use guidance compared to siblings.

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

TDQS

A4.3/5.0
Disambiguation5/5

Each tool targets a unique aspect of Garmin data: daily summary, activity detail, training status, body composition, sleep, and activity list. No two tools overlap in purpose, making selection unambiguous.

Naming Consistency4/5

Tools follow a 'garmin_verb_noun' pattern (e.g., garmin_get_daily_summary, garmin_get_sleep), with 'garmin_list_activities' being the only one using 'list' instead of 'get'. This minor inconsistency is easily understood but breaks the pattern slightly.

Tool Count5/5

With 6 tools covering key health and fitness domains (daily metrics, activities, training, body composition, sleep), the count feels well-scoped and sufficient for a read-only health data API.

Completeness5/5

The tool surface covers essential read-only operations: retrieving daily summaries, activity details, training status, body composition, sleep, and listing activities. Cross-references between tools indicate thoughtful design, with no obvious missing functionality for the intended purpose.

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
    Local MCP server that connects Claude Desktop with Garmin and Apple Health data to read training and recovery, estimate heart rate and pace zones, analyze performance, and create structured workouts.
    22
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    A local, single-user, read-only MCP server that gives Claude Code access to your Garmin health and training data, exposing tools for health snapshots, training status, run details, body metrics, and training analysis.
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A local, read-only MCP server that gives Claude access to your Garmin health and training data, exposing tools for health snapshots, training status, run details, body metrics, and training analysis.
    MIT

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/echocharlie/garmin-connect-mcp-server'

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