# io.github.davidmosiah/garminmcp (npm · garmin-mcp-unofficial)

Privacy-first unofficial Garmin Connect MCP for AI health, sleep, activity & recovery agents.

- Trust score: 66/100 (medium)
- Change this week: +15
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `garmin-mcp-unofficial`: 66/100 (this document), [markdown](https://verifymcp.io/servers/davidmosiah-garminmcp/garmin-mcp-unofficial.md), [page](https://verifymcp.io/servers/davidmosiah-garminmcp/garmin-mcp-unofficial)

## Channel facts

- Registry: `npm`
- Package: `garmin-mcp-unofficial`
- Version: `0.5.3`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (129 of 130), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (129 of 130), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 1 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 85/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Tool/resource definitions use about 3456 tokens (~72/item across 48 items; 41 tools + 7 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 88/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 58% of tool parameters carry a description.
  - Structured output schemas are declared (88% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### Claude

```bash
claude mcp add davidmosiah-garminmcp -- npx -y garmin-mcp-unofficial
```

### Codex

```bash
codex mcp add davidmosiah-garminmcp -- npx -y garmin-mcp-unofficial
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "davidmosiah-garminmcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "garmin-mcp-unofficial"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add davidmosiah-garminmcp --command npx --arg -y --arg garmin-mcp-unofficial
```

### Hermes

```yaml
mcp_servers:
  davidmosiah-garminmcp:
    command: "npx"
    args: ["-y", "garmin-mcp-unofficial"]
```

### Other

```json
{
  "mcpServers": {
    "davidmosiah-garminmcp": {
      "command": "npx",
      "args": [
        "-y",
        "garmin-mcp-unofficial"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 66, +46)

- [security regression] Provenance: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional regression] Security disclosure: unverified → fail
- [functional improvement] Schema quality: unverified → excellent
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] License: unverified → pass
- [functional improvement] Schema quality: unverified → 100
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional] Licence: MIT

### 2026-08-02 (score 20, −10)

- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.
- [functional regression] Schema quality: 100 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Security disclosure: fail → unverified

### 2026-08-01 (score 30, +5)

- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional improvement] MCP protocol: unverified → pass

### 2026-07-31 (score 25, −26)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-27 (score 51)

First indexed and scored.

## MCP tools (41)

### `garmin_data_inventory` (~45 tokens)

Garmin Data Inventory

Inventory supported Garmin data domains, auth scope requirements, privacy boundary and recommended first calls. Does not call Garmin APIs or expose user data.

Input parameters:

- `response_format` (string)

Output parameters:

- `api_boundary`
- `auth`
- `categories` (array)
- `data_access_model` (string)
- `first_tools` (array)
- `generated_at` (string)
- `kind` (string)
- `links` (object)
- `mcp_name` (string)
- `notes` (array)
- `privacy_modes` (array)
- `recommended_agent_flow` (array)
- `scopes` (array)
- `source` (string)
- `totals` (object)
- `unofficial` (boolean)

### `garmin_agent_manifest` (~45 tokens)

Garmin Agent Manifest

Machine-readable install, runtime and client guidance for AI agents. Does not call Garmin or expose secrets.

Input parameters:

- `client` (string)
- `response_format` (string)

Output parameters:

- `agent_rules` (array)
- `auth` (object)
- `client` (string)
- `hermes` (object)
- `links` (object)
- `mcp_name` (string)
- `package` (object)
- `project` (string)
- `recommended_first_calls` (array)
- `resources` (array)
- `standard_tools` (array)
- `troubleshooting` (array)
- `unofficial` (boolean)

### `garmin_capabilities` (~33 tokens)

Garmin MCP Capabilities

Explain supported Garmin data, privacy boundaries, recommended agent workflow and project links.

Input parameters:

- `response_format` (string)

Output parameters:

- `api_boundary` (object)
- `auth_model` (object)
- `client_aliases` (object)
- `contribution_paths` (array)
- `creator` (object)
- `links` (object)
- `mcp_name` (string)
- `privacy_modes` (array)
- `project` (string)
- `recommended_agent_flow` (array)
- `supported_data` (array)
- `unofficial` (boolean)

### `garmin_quickstart` (~62 tokens)

Garmin Quickstart

Personalized 3-step setup walkthrough for the human user. Adapts to current state (env vars set? token present? what's next?). Call this first when the user asks 'how do I connect Garmin?'

Input parameters:

- `response_format` (string)

### `garmin_demo` (~55 tokens)

Garmin Demo

Returns realistic example payloads of garmin_daily_summary, garmin_wellness_context, and garmin_get_body_battery_day so agents see the contract before any real Garmin Connect call.

Input parameters:

- `response_format` (string)

### `garmin_profile_get` (~96 tokens)

Garmin Profile Get (shared wellness profile)

Read the shared Delx wellness profile (~/.delx-wellness/profile.json). Returns the user's preferred name, body basics, goals, devices, training context, nutrition context, agent preferences, and missing critical fields. Cross-connector — the same profile is also available from other Delx Wellness MCPs (WHOOP, Oura, Nourish, Fitbit, etc). Read-only.

Input parameters:

- `response_format` (string)

### `garmin_profile_update` (~203 tokens)

Garmin Profile Update (shared wellness profile)

Persist a partial patch to the shared Delx wellness profile (~/.delx-wellness/profile.json). REQUIRES explicit_user_intent=true. Top-level fields stored: profile (preferred_name, language, timezone, units, age_or_birth_year, height, weight, sex_or_gender_context), goals, devices, training, nutrition, preferences, safety, notes. NEVER stores OAuth tokens, API keys, refresh tokens, cookies, or any secret-shaped field — writes will be rejected at validation time. Cross-connector — the same profile is read by other Delx Wellness MCPs.

Input parameters:

- `explicit_user_intent` (boolean): Must be true. Set this AFTER the user has explicitly confirmed they want to save these changes to the shared wellness profile.
- `patch` (object, required): Partial WellnessProfileDocument patch. Top-level keys may be: profile, goals, devices, training, nutrition, preferences, safety, notes.
- `response_format` (string)

### `garmin_onboarding` (~155 tokens)

Garmin Onboarding (shared wellness profile)

Return the 11-question Delx wellness onboarding flow (in English or pt-BR) plus the current shared profile state and missing critical fields. Read-only. The agent should ask these questions one-by-one, then call garmin_profile_update with explicit_user_intent=true to save. The same profile is reused by every Delx Wellness connector (WHOOP, Oura, Nourish, etc.) — agents can call the equivalent {connector}_onboarding tools to cover their respective domains, or rely on this one since all connectors share the same questions.

Input parameters:

- `locale` (string): Onboarding locale. Defaults to 'en'. Use 'pt-BR' for Portuguese (Brazil).
- `response_format` (string)

### `garmin_auth_instructions` (~37 tokens)

Garmin Auth Instructions

Explain the local Garmin Connect authentication flow without asking the user to paste secrets into an agent.

Input parameters:

- `response_format` (string)

Output parameters:

- `auth_model` (string)
- `command` (string)
- `legacy_python_command` (string)
- `next_step` (string)
- `notes` (array)
- `stores_password` (boolean)
- `token_path` (string)

### `garmin_get_profile` (~66 tokens)

Garmin Profile

Get the authenticated Garmin profile using the configured privacy mode.

Input parameters:

- `privacy_mode` (string): Optional per-call privacy override. Defaults to GARMIN_PRIVACY_MODE or structured. raw returns upstream Garmin JSON. summary minimizes sensitive health and profile details.
- `response_format` (string)

Output parameters:

- `data`
- `endpoint` (string)
- `privacy_mode` (string)

### `garmin_get_user_settings` (~68 tokens)

Garmin User Settings

Get Garmin account user settings such as units and display preferences.

Input parameters:

- `privacy_mode` (string): Optional per-call privacy override. Defaults to GARMIN_PRIVACY_MODE or structured. raw returns upstream Garmin JSON. summary minimizes sensitive health and profile details.
- `response_format` (string)

Output parameters:

- `data`
- `endpoint` (string)
- `privacy_mode` (string)

### `garmin_list_devices` (~63 tokens)

Garmin Devices

List devices registered to the Garmin account.

Input parameters:

- `privacy_mode` (string): Optional per-call privacy override. Defaults to GARMIN_PRIVACY_MODE or structured. raw returns upstream Garmin JSON. summary minimizes sensitive health and profile details.
- `response_format` (string)

Output parameters:

- `data`
- `endpoint` (string)
- `privacy_mode` (string)

### `garmin_get_primary_training_device` (~66 tokens)

Garmin Primary Training Device

Get the primary Garmin training device when available.

Input parameters:

- `privacy_mode` (string): Optional per-call privacy override. Defaults to GARMIN_PRIVACY_MODE or structured. raw returns upstream Garmin JSON. summary minimizes sensitive health and profile details.
- `response_format` (string)

Output parameters:

- `data`
- `endpoint` (string)
- `privacy_mode` (string)

### `garmin_get_daily_summary` (~81 tokens)

Garmin Daily Summary Raw

Get Garmin daily movement and wellness summary for a date.

Input parameters:

- `date` (string): Date as yyyy-MM-dd or today.
- `privacy_mode` (string): Optional per-call privacy override. Defaults to GARMIN_PRIVACY_MODE or structured. raw returns upstream Garmin JSON. summary minimizes sensitive health and profile details.
- `response_format` (string)

Output parameters:

- `data`
- `endpoint` (string)
- `privacy_mode` (string)

### `garmin_get_steps_day` (~81 tokens)

Garmin Daily Steps Chart

Get Garmin daily steps and summary chart for a date.

Input parameters:

- `date` (string): Date as yyyy-MM-dd or today.
- `privacy_mode` (string): Optional per-call privacy override. Defaults to GARMIN_PRIVACY_MODE or structured. raw returns upstream Garmin JSON. summary minimizes sensitive health and profile details.
- `response_format` (string)

Output parameters:

- `data`
- `endpoint` (string)
- `privacy_mode` (string)

### `garmin_get_heart_day` (~90 tokens)

Garmin Daily Heart Rate

Get Garmin daily heart-rate samples and resting heart-rate context for a date. Not medical advice.

Input parameters:

- `date` (string): Date as yyyy-MM-dd or today.
- `privacy_mode` (string): Optional per-call privacy override. Defaults to GARMIN_PRIVACY_MODE or structured. raw returns upstream Garmin JSON. summary minimizes sensitive health and profile details.
- `response_format` (string)

Output parameters:

- `data`
- `endpoint` (string)
- `privacy_mode` (string)

### `garmin_get_sleep_day` (~87 tokens)

Garmin Daily Sleep

Get Garmin sleep summary, stages and sleep window for a date. Not medical advice.

Input parameters:

- `date` (string): Date as yyyy-MM-dd or today.
- `privacy_mode` (string): Optional per-call privacy override. Defaults to GARMIN_PRIVACY_MODE or structured. raw returns upstream Garmin JSON. summary minimizes sensitive health and profile details.
- `response_format` (string)

Output parameters:

- `data`
- `endpoint` (string)
- `privacy_mode` (string)

### `garmin_get_stress_day` (~85 tokens)

Garmin Daily Stress

Get Garmin stress summary and samples for a date. Not medical advice.

Input parameters:

- `date` (string): Date as yyyy-MM-dd or today.
- `privacy_mode` (string): Optional per-call privacy override. Defaults to GARMIN_PRIVACY_MODE or structured. raw returns upstream Garmin JSON. summary minimizes sensitive health and profile details.
- `response_format` (string)

Output parameters:

- `data`
- `endpoint` (string)
- `privacy_mode` (string)

### `garmin_get_body_battery_day` (~86 tokens)

Garmin Body Battery

Get Garmin Body Battery daily report for a date. Not medical advice.

Input parameters:

- `date` (string): Date as yyyy-MM-dd or today.
- `privacy_mode` (string): Optional per-call privacy override. Defaults to GARMIN_PRIVACY_MODE or structured. raw returns upstream Garmin JSON. summary minimizes sensitive health and profile details.
- `response_format` (string)

Output parameters:

- `data`
- `endpoint` (string)
- `privacy_mode` (string)

### `garmin_get_body_battery_events` (~88 tokens)

Garmin Body Battery Events

Get Garmin Body Battery charge/drain events for a date. Not medical advice.

Input parameters:

- `date` (string): Date as yyyy-MM-dd or today.
- `privacy_mode` (string): Optional per-call privacy override. Defaults to GARMIN_PRIVACY_MODE or structured. raw returns upstream Garmin JSON. summary minimizes sensitive health and profile details.
- `response_format` (string)

Output parameters:

- `data`
- `endpoint` (string)
- `privacy_mode` (string)

### `garmin_get_hrv_day` (~91 tokens)

Garmin HRV

Get Garmin HRV status and overnight HRV metrics for a date when available. Not medical advice.

Input parameters:

- `date` (string): Date as yyyy-MM-dd or today.
- `privacy_mode` (string): Optional per-call privacy override. Defaults to GARMIN_PRIVACY_MODE or structured. raw returns upstream Garmin JSON. summary minimizes sensitive health and profile details.
- `response_format` (string)

Output parameters:

- `data`
- `endpoint` (string)
- `privacy_mode` (string)

### `garmin_get_training_readiness_day` (~90 tokens)

Garmin Training Readiness

Get Garmin training readiness for a date when supported by the device/account. Not medical advice.

Input parameters:

- `date` (string): Date as yyyy-MM-dd or today.
- `privacy_mode` (string): Optional per-call privacy override. Defaults to GARMIN_PRIVACY_MODE or structured. raw returns upstream Garmin JSON. summary minimizes sensitive health and profile details.
- `response_format` (string)

Output parameters:

- `data`
- `endpoint` (string)
- `privacy_mode` (string)

### `garmin_get_training_status_day` (~90 tokens)

Garmin Training Status

Get Garmin aggregated training status for a date when supported by the device/account. Not medical advice.

Input parameters:

- `date` (string): Date as yyyy-MM-dd or today.
- `privacy_mode` (string): Optional per-call privacy override. Defaults to GARMIN_PRIVACY_MODE or structured. raw returns upstream Garmin JSON. summary minimizes sensitive health and profile details.
- `response_format` (string)

Output parameters:

- `data`
- `endpoint` (string)
- `privacy_mode` (string)

### `garmin_get_respiration_day` (~85 tokens)

Garmin Respiration

Get Garmin respiration data for a date when available. Not medical advice.

Input parameters:

- `date` (string): Date as yyyy-MM-dd or today.
- `privacy_mode` (string): Optional per-call privacy override. Defaults to GARMIN_PRIVACY_MODE or structured. raw returns upstream Garmin JSON. summary minimizes sensitive health and profile details.
- `response_format` (string)

Output parameters:

- `data`
- `endpoint` (string)
- `privacy_mode` (string)

### `garmin_get_spo2_day` (~91 tokens)

Garmin SpO2

Get Garmin Pulse Ox / SpO2 data for a date when available. Not medical advice.

Input parameters:

- `date` (string): Date as yyyy-MM-dd or today.
- `privacy_mode` (string): Optional per-call privacy override. Defaults to GARMIN_PRIVACY_MODE or structured. raw returns upstream Garmin JSON. summary minimizes sensitive health and profile details.
- `response_format` (string)

Output parameters:

- `data`
- `endpoint` (string)
- `privacy_mode` (string)

### `garmin_get_intensity_minutes_day` (~80 tokens)

Garmin Intensity Minutes

Get Garmin intensity minutes for a date.

Input parameters:

- `date` (string): Date as yyyy-MM-dd or today.
- `privacy_mode` (string): Optional per-call privacy override. Defaults to GARMIN_PRIVACY_MODE or structured. raw returns upstream Garmin JSON. summary minimizes sensitive health and profile details.
- `response_format` (string)

Output parameters:

- `data`
- `endpoint` (string)
- `privacy_mode` (string)

### `garmin_get_hydration_day` (~82 tokens)

Garmin Hydration

Get Garmin hydration summary for a date when available.

Input parameters:

- `date` (string): Date as yyyy-MM-dd or today.
- `privacy_mode` (string): Optional per-call privacy override. Defaults to GARMIN_PRIVACY_MODE or structured. raw returns upstream Garmin JSON. summary minimizes sensitive health and profile details.
- `response_format` (string)

Output parameters:

- `data`
- `endpoint` (string)
- `privacy_mode` (string)

### `garmin_get_weight_range` (~104 tokens)

Garmin Weight Range

Get Garmin weight/body-composition logs for a date range. Not medical advice.

Input parameters:

- `end_date` (string): End date as yyyy-MM-dd or today.
- `privacy_mode` (string): Optional per-call privacy override. Defaults to GARMIN_PRIVACY_MODE or structured. raw returns upstream Garmin JSON. summary minimizes sensitive health and profile details.
- `response_format` (string)
- `start_date` (string): Start date as yyyy-MM-dd or today.

Output parameters:

- `data`
- `endpoint` (string)
- `privacy_mode` (string)

### `garmin_list_activities` (~187 tokens)

Garmin Activities

List recent Garmin activities. Supports pagination, optional date filters and privacy modes.

Input parameters:

- `activity_type` (string): Optional Garmin activity type filter, e.g. running, cycling, walking.
- `after` (string): Only return activities after this time. Used as Garmin startDate when supported.
- `all_pages` (boolean): Fetch multiple pages up to max_pages.
- `before` (string): Only return activities before this time. Used as Garmin endDate when supported.
- `limit` (integer): Garmin page size.
- `max_pages` (integer): Maximum pages to fetch when all_pages is true.
- `page` (integer): Garmin page number.
- `privacy_mode` (string): Optional per-call privacy override. Defaults to GARMIN_PRIVACY_MODE or structured. raw returns upstream Garmin JSON. summary minimizes sensitive health and profile details.
- `response_format` (string)

Output parameters:

- `count` (integer)
- `endpoint` (string)
- `has_more` (boolean)
- `next_page` (integer)
- `pages_fetched` (integer)
- `privacy_mode` (string)
- `records` (array)

### `garmin_get_activity` (~72 tokens)

Garmin Activity

Get a Garmin activity summary by activity id.

Input parameters:

- `id` (required): Garmin resource id.
- `privacy_mode` (string): Optional per-call privacy override. Defaults to GARMIN_PRIVACY_MODE or structured. raw returns upstream Garmin JSON. summary minimizes sensitive health and profile details.
- `response_format` (string)

Output parameters:

- `data`
- `endpoint` (string)
- `privacy_mode` (string)

### `garmin_get_activity_details` (~72 tokens)

Garmin Activity Details

Get detailed Garmin activity samples when available.

Input parameters:

- `id` (required): Garmin resource id.
- `privacy_mode` (string): Optional per-call privacy override. Defaults to GARMIN_PRIVACY_MODE or structured. raw returns upstream Garmin JSON. summary minimizes sensitive health and profile details.
- `response_format` (string)

Output parameters:

- `data`
- `endpoint` (string)
- `privacy_mode` (string)

### `garmin_get_activity_splits` (~75 tokens)

Garmin Activity Splits

Get Garmin activity splits/laps by activity id.

Input parameters:

- `id` (required): Garmin resource id.
- `privacy_mode` (string): Optional per-call privacy override. Defaults to GARMIN_PRIVACY_MODE or structured. raw returns upstream Garmin JSON. summary minimizes sensitive health and profile details.
- `response_format` (string)

Output parameters:

- `data`
- `endpoint` (string)
- `privacy_mode` (string)

### `garmin_get_activity_weather` (~74 tokens)

Garmin Activity Weather

Get Garmin activity weather by activity id when available.

Input parameters:

- `id` (required): Garmin resource id.
- `privacy_mode` (string): Optional per-call privacy override. Defaults to GARMIN_PRIVACY_MODE or structured. raw returns upstream Garmin JSON. summary minimizes sensitive health and profile details.
- `response_format` (string)

Output parameters:

- `data`
- `endpoint` (string)
- `privacy_mode` (string)

### `garmin_get_activity_hr_zones` (~79 tokens)

Garmin Activity Heart-Rate Zones

Get Garmin activity heart-rate zone time by activity id when available.

Input parameters:

- `id` (required): Garmin resource id.
- `privacy_mode` (string): Optional per-call privacy override. Defaults to GARMIN_PRIVACY_MODE or structured. raw returns upstream Garmin JSON. summary minimizes sensitive health and profile details.
- `response_format` (string)

Output parameters:

- `data`
- `endpoint` (string)
- `privacy_mode` (string)

### `garmin_connection_status` (~53 tokens)

Garmin Connection Status

Check local Garmin config, token file, Node version, privacy mode, cache readiness and optional MCP client readiness without calling Garmin or exposing secrets.

Input parameters:

- `client` (string)
- `response_format` (string)

Output parameters:

- `automatic_auth_supported` (boolean)
- `cache` (object)
- `client` (string)
- `client_checks` (object)
- `config` (object)
- `missing_env` (array)
- `next_steps` (array)
- `node` (object)
- `oauth` (object)
- `ok` (boolean)
- `privacy_mode` (string)
- `ready_for_garmin_api` (boolean)
- `redirect_uri` (string)
- `required_env` (object)
- `token` (object)

### `garmin_cache_status` (~38 tokens)

Garmin Cache Status

Show optional local SQLite cache status. Enable with GARMIN_CACHE=sqlite or GARMIN_CACHE=true.

Input parameters:

- `response_format` (string)

Output parameters:

- `enabled` (boolean)
- `entries` (integer)
- `http_cache` (object)
- `newest_cached_at` (string)
- `path` (string)

### `garmin_privacy_audit` (~38 tokens)

Garmin Privacy Audit

Return local privacy, cache, token-path and env-presence posture without revealing secret values.

Input parameters:

- `response_format` (string)

Output parameters:

- `cache_enabled` (boolean)
- `cache_path` (string)
- `config_source` (string)
- `gps_redaction_default` (boolean)
- `local_config_exists` (boolean)
- `local_config_path` (string)
- `local_config_secure_permissions` (boolean)
- `notes` (array)
- `privacy_mode_default` (string)
- `project` (string)
- `raw_payloads_opt_in` (boolean)
- `redacted_key_patterns` (array)
- `required_env_present` (object)
- `secret_env_vars` (array)
- `stdout_safe` (boolean)
- `token_path` (string)
- `unofficial` (boolean)

### `garmin_disconnect_local` (~45 tokens)

Disconnect Garmin Locally

Delete the local Garmin token file. This does not change the Garmin account; use only when the user explicitly wants to disconnect this MCP.

Input parameters:

- `response_format` (string)

Output parameters:

- `local_tokens_cleared` (boolean)
- `note` (string)
- `ok` (boolean)
- `token_path` (string)

### `garmin_daily_summary` (~85 tokens)

Garmin Daily Health Summary

Build a practical daily summary from Garmin activity, sleep, heart-rate, HRV, stress and Body Battery when available. Read-only and non-medical.

Input parameters:

- `days` (integer): Lookback window for recent training context.
- `response_format` (string)
- `timezone` (string): IANA timezone used only for display, e.g. America/New_York.

Output parameters:

- `generated_at` (string)
- `kind` (string)

### `garmin_weekly_summary` (~105 tokens)

Garmin Weekly Health Review

Build a weekly Garmin scorecard with movement, sleep, HRV, stress, Body Battery, bottlenecks and actions. Read-only and non-medical.

Input parameters:

- `compare_days` (integer): Prior comparison window in days. Use 0 to disable comparison.
- `days` (integer): Recent analysis window in days.
- `response_format` (string)
- `timezone` (string): IANA timezone used only for display, e.g. America/New_York.

Output parameters:

- `generated_at` (string)
- `kind` (string)

### `garmin_wellness_context` (~102 tokens)

Garmin Wellness Context

Normalize Garmin readiness, sleep score, Body Battery and recent movement load into the shared wellness_context shape for recommendation engines.

Input parameters:

- `days` (integer): Lookback window for normalized Garmin wellness context.
- `injury_flags` (array)
- `notes` (string)
- `response_format` (string)
- `soreness` (array)
- `timezone` (string): IANA timezone used only for display, e.g. America/New_York.

Output parameters:

- `body_battery` (number)
- `context_contract_version` (string)
- `context_type` (string)
- `data_quality`
- `generated_at` (string)
- `injury_flags` (array)
- `notes` (array)
- `readiness_score` (number)
- `recent_training_load` (string)
- `recent_training_load_minutes` (number)
- `recommended_handoff` (object)
- `sleep_score` (number)
- `soreness` (array)
- `source` (string)
- `telegram_summary` (string)

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/davidmosiah-garminmcp/garmin-mcp-unofficial#diagnostics

## Score history

- 2026-08-03: 66
- 2026-08-02: 20
- 2026-08-01: 30
- 2026-07-31: 25
- 2026-07-30: 51
- 2026-07-28: 51
- 2026-07-27: 51

## Links

- npm package: https://www.npmjs.com/package/garmin-mcp-unofficial
- Socket report: https://socket.dev/npm/package/garmin-mcp-unofficial
- Repository: https://github.com/davidmosiah/garmin-mcp
- Website: https://wellness.delx.ai/connectors/garmin
- Changelog RSS feed: https://verifymcp.io/servers/davidmosiah-garminmcp/garmin-mcp-unofficial/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/davidmosiah-garminmcp/garmin-mcp-unofficial/changelog.json
- HTML version of this page: https://verifymcp.io/servers/davidmosiah-garminmcp/garmin-mcp-unofficial
