io.github.davidmosiah/garminmcp
NPM · GARMIN-MCP-UNOFFICIAL · SCANNED SEP 20
Privacy-first unofficial Garmin Connect MCP for AI health, sleep, activity & recovery agents.
Available components
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. How we score → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 52 of 130 dependencies flagged as unhealthy (1 deprecated). View diagnostics → Partial
Provenance & Transparency48
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 21 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability84
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 3456 tokens (~72/item across 48 items; 41 tools + 7 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management93
- Stability observed for 28 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage88
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 58% of tool parameters carry a description.Partial
- Structured output schemas are declared (88% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 42 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the io.github.davidmosiah/garminmcp MCP server?
io.github.davidmosiah/garminmcp runs locally as an npm package, launched with npx -y garmin-mcp-unofficial. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · garmin-mcp-unofficial
claude mcp add davidmosiah-garminmcp -- npx -y garmin-mcp-unofficial
{
"mcpServers": {
"davidmosiah-garminmcp": {
"command": "npx",
"args": [
"-y",
"garmin-mcp-unofficial"
]
}
}
} {
"servers": {
"davidmosiah-garminmcp": {
"command": "npx",
"args": [
"-y",
"garmin-mcp-unofficial"
]
}
}
} codex mcp add davidmosiah-garminmcp -- npx -y garmin-mcp-unofficial
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"davidmosiah-garminmcp": {
"type": "local",
"command": [
"npx",
"-y",
"garmin-mcp-unofficial"
],
"enabled": true
}
}
} openclaw mcp add davidmosiah-garminmcp --command npx --arg -y --arg garmin-mcp-unofficial
mcp_servers:
davidmosiah-garminmcp:
command: "npx"
args: ["-y", "garmin-mcp-unofficial"] {
"McpServers": {
"davidmosiah-garminmcp": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"garmin-mcp-unofficial"
]
}
}
} assistant mcp add davidmosiah-garminmcp -t stdio -c npx -a -y garmin-mcp-unofficial
{
"mcpServers": {
"davidmosiah-garminmcp": {
"command": "npx",
"args": [
"-y",
"garmin-mcp-unofficial"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 19 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
- 17 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.
- 16 Sept 26 −3
- Stability: pass → 0.80 functional
- 15 Sept 26 0
- Stability: 0.97 → pass security
- 14 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 12 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
- 10 Sept 26 −2
- Stability: pass → 0.83 functional
- 9 Sept 26 0
- Stability: 0.97 → pass security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed npm/garmin-mcp-unofficial@0.5.3
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Dependencies 130 packages
| Packages resolved | 130 |
|---|---|
| Deprecated | 1 |
| Stale | 51 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
garmin_agent_manifest Garmin Agent Manifest ~45
Machine-readable install, runtime and client guidance for AI agents. Does not call Garmin or expose secrets.
| Name | Type | Req | Description |
|---|---|---|---|
| client | string | – | – |
| response_format | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| agent_rules | array | yes | – |
| auth | object | yes | – |
| client | string | yes | – |
| hermes | object | yes | – |
| links | object | yes | – |
| mcp_name | string | yes | – |
| package | object | yes | – |
| project | string | yes | – |
| recommended_first_calls | array | yes | – |
| resources | array | yes | – |
| standard_tools | array | yes | – |
| troubleshooting | array | yes | – |
| unofficial | boolean | yes | – |
No examples provided.
garmin_auth_instructions Garmin Auth Instructions ~37
Explain the local Garmin Connect authentication flow without asking the user to paste secrets into an agent.
| Name | Type | Req | Description |
|---|---|---|---|
| response_format | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| auth_model | string | yes | – |
| command | string | yes | – |
| legacy_python_command | string | – | – |
| next_step | string | yes | – |
| notes | array | yes | – |
| stores_password | boolean | yes | – |
| token_path | string | yes | – |
No examples provided.
garmin_cache_status Garmin Cache Status ~38
Show optional local SQLite cache status. Enable with GARMIN_CACHE=sqlite or GARMIN_CACHE=true.
| Name | Type | Req | Description |
|---|---|---|---|
| response_format | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| enabled | boolean | yes | – |
| entries | integer | yes | – |
| http_cache | object | – | – |
| newest_cached_at | string | – | – |
| path | string | yes | – |
No examples provided.
garmin_capabilities Garmin MCP Capabilities ~33
Explain supported Garmin data, privacy boundaries, recommended agent workflow and project links.
| Name | Type | Req | Description |
|---|---|---|---|
| response_format | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| api_boundary | object | yes | – |
| auth_model | object | yes | – |
| client_aliases | object | yes | – |
| contribution_paths | array | yes | – |
| creator | object | yes | – |
| links | object | yes | – |
| mcp_name | string | yes | – |
| privacy_modes | array | yes | – |
| project | string | yes | – |
| recommended_agent_flow | array | yes | – |
| supported_data | array | yes | – |
| unofficial | boolean | yes | – |
No examples provided.
garmin_connection_status Garmin Connection Status ~53
Check local Garmin config, token file, Node version, privacy mode, cache readiness and optional MCP client readiness without calling Garmin or exposing secrets.
| Name | Type | Req | Description |
|---|---|---|---|
| client | string | – | – |
| response_format | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| automatic_auth_supported | boolean | yes | – |
| cache | object | yes | – |
| client | string | – | – |
| client_checks | object | – | – |
| config | object | yes | – |
| missing_env | array | yes | – |
| next_steps | array | yes | – |
| node | object | yes | – |
| oauth | object | yes | – |
| ok | boolean | yes | – |
| privacy_mode | string | yes | – |
| ready_for_garmin_api | boolean | yes | – |
| redirect_uri | string | – | – |
| required_env | object | yes | – |
| token | object | yes | – |
No examples provided.
garmin_daily_summary Garmin Daily Health Summary ~85
Build a practical daily summary from Garmin activity, sleep, heart-rate, HRV, stress and Body Battery when available. Read-only and non-medical.
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | – | Lookback window for recent training context. |
| response_format | string | – | – |
| timezone | string | – | IANA timezone used only for display, e.g. America/New_York. |
| Name | Type | Req | Description |
|---|---|---|---|
| generated_at | string | yes | – |
| kind | string | yes | – |
No examples provided.
garmin_data_inventory Garmin Data Inventory ~45
Inventory supported Garmin data domains, auth scope requirements, privacy boundary and recommended first calls. Does not call Garmin APIs or expose user data.
| Name | Type | Req | Description |
|---|---|---|---|
| response_format | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| api_boundary | – | – | – |
| auth | – | – | – |
| categories | array | yes | – |
| data_access_model | string | yes | – |
| first_tools | array | yes | – |
| generated_at | string | yes | – |
| kind | string | yes | – |
| links | object | yes | – |
| mcp_name | string | yes | – |
| notes | array | yes | – |
| privacy_modes | array | yes | – |
| recommended_agent_flow | array | yes | – |
| scopes | array | yes | – |
| source | string | yes | – |
| totals | object | yes | – |
| unofficial | boolean | yes | – |
No examples provided.
garmin_demo Garmin Demo ~55
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.
| Name | Type | Req | Description |
|---|---|---|---|
| response_format | string | – | – |
No output schema declared.
No examples provided.
garmin_disconnect_local Disconnect Garmin Locally ~45
Delete the local Garmin token file. This does not change the Garmin account; use only when the user explicitly wants to disconnect this MCP.
| Name | Type | Req | Description |
|---|---|---|---|
| response_format | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| local_tokens_cleared | boolean | yes | – |
| note | string | yes | – |
| ok | boolean | yes | – |
| token_path | string | yes | – |
No examples provided.
garmin_get_activity Garmin Activity ~72
Get a Garmin activity summary by activity id.
| Name | Type | Req | Description |
|---|---|---|---|
| id | – | yes | 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 | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | – |
| endpoint | string | yes | – |
| privacy_mode | string | yes | – |
No examples provided.
garmin_get_activity_details Garmin Activity Details ~72
Get detailed Garmin activity samples when available.
| Name | Type | Req | Description |
|---|---|---|---|
| id | – | yes | 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 | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | – |
| endpoint | string | yes | – |
| privacy_mode | string | yes | – |
No examples provided.
garmin_get_activity_hr_zones Garmin Activity Heart-Rate Zones ~79
Get Garmin activity heart-rate zone time by activity id when available.
| Name | Type | Req | Description |
|---|---|---|---|
| id | – | yes | 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 | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | – |
| endpoint | string | yes | – |
| privacy_mode | string | yes | – |
No examples provided.
garmin_get_activity_splits Garmin Activity Splits ~75
Get Garmin activity splits/laps by activity id.
| Name | Type | Req | Description |
|---|---|---|---|
| id | – | yes | 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 | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | – |
| endpoint | string | yes | – |
| privacy_mode | string | yes | – |
No examples provided.
garmin_get_activity_weather Garmin Activity Weather ~74
Get Garmin activity weather by activity id when available.
| Name | Type | Req | Description |
|---|---|---|---|
| id | – | yes | 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 | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | – |
| endpoint | string | yes | – |
| privacy_mode | string | yes | – |
No examples provided.
garmin_get_body_battery_day Garmin Body Battery ~86
Get Garmin Body Battery daily report for a date. Not medical advice.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | – |
| endpoint | string | yes | – |
| privacy_mode | string | yes | – |
No examples provided.
garmin_get_body_battery_events Garmin Body Battery Events ~88
Get Garmin Body Battery charge/drain events for a date. Not medical advice.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | – |
| endpoint | string | yes | – |
| privacy_mode | string | yes | – |
No examples provided.
garmin_get_daily_summary Garmin Daily Summary Raw ~81
Get Garmin daily movement and wellness summary for a date.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | – |
| endpoint | string | yes | – |
| privacy_mode | string | yes | – |
No examples provided.
garmin_get_heart_day Garmin Daily Heart Rate ~90
Get Garmin daily heart-rate samples and resting heart-rate context for a date. Not medical advice.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | – |
| endpoint | string | yes | – |
| privacy_mode | string | yes | – |
No examples provided.
garmin_get_hrv_day Garmin HRV ~91
Get Garmin HRV status and overnight HRV metrics for a date when available. Not medical advice.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | – |
| endpoint | string | yes | – |
| privacy_mode | string | yes | – |
No examples provided.
garmin_get_hydration_day Garmin Hydration ~82
Get Garmin hydration summary for a date when available.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | – |
| endpoint | string | yes | – |
| privacy_mode | string | yes | – |
No examples provided.
garmin_get_intensity_minutes_day Garmin Intensity Minutes ~80
Get Garmin intensity minutes for a date.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | – |
| endpoint | string | yes | – |
| privacy_mode | string | yes | – |
No examples provided.
garmin_get_primary_training_device Garmin Primary Training Device ~66
Get the primary Garmin training device when available.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | – |
| endpoint | string | yes | – |
| privacy_mode | string | yes | – |
No examples provided.
garmin_get_profile Garmin Profile ~66
Get the authenticated Garmin profile using the configured privacy mode.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | – |
| endpoint | string | yes | – |
| privacy_mode | string | yes | – |
No examples provided.
garmin_get_respiration_day Garmin Respiration ~85
Get Garmin respiration data for a date when available. Not medical advice.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | – |
| endpoint | string | yes | – |
| privacy_mode | string | yes | – |
No examples provided.
garmin_get_sleep_day Garmin Daily Sleep ~87
Get Garmin sleep summary, stages and sleep window for a date. Not medical advice.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | – |
| endpoint | string | yes | – |
| privacy_mode | string | yes | – |
No examples provided.
garmin_get_spo2_day Garmin SpO2 ~91
Get Garmin Pulse Ox / SpO2 data for a date when available. Not medical advice.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | – |
| endpoint | string | yes | – |
| privacy_mode | string | yes | – |
No examples provided.
garmin_get_steps_day Garmin Daily Steps Chart ~81
Get Garmin daily steps and summary chart for a date.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | – |
| endpoint | string | yes | – |
| privacy_mode | string | yes | – |
No examples provided.
garmin_get_stress_day Garmin Daily Stress ~85
Get Garmin stress summary and samples for a date. Not medical advice.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | – |
| endpoint | string | yes | – |
| privacy_mode | string | yes | – |
No examples provided.
garmin_get_training_readiness_day Garmin Training Readiness ~90
Get Garmin training readiness for a date when supported by the device/account. Not medical advice.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | – |
| endpoint | string | yes | – |
| privacy_mode | string | yes | – |
No examples provided.
garmin_get_training_status_day Garmin Training Status ~90
Get Garmin aggregated training status for a date when supported by the device/account. Not medical advice.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | – |
| endpoint | string | yes | – |
| privacy_mode | string | yes | – |
No examples provided.
garmin_get_user_settings Garmin User Settings ~68
Get Garmin account user settings such as units and display preferences.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | – |
| endpoint | string | yes | – |
| privacy_mode | string | yes | – |
No examples provided.
garmin_get_weight_range Garmin Weight Range ~104
Get Garmin weight/body-composition logs for a date range. Not medical advice.
| Name | Type | Req | Description |
|---|---|---|---|
| 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. |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | – |
| endpoint | string | yes | – |
| privacy_mode | string | yes | – |
No examples provided.
garmin_list_activities Garmin Activities ~187
List recent Garmin activities. Supports pagination, optional date filters and privacy modes.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| count | integer | yes | – |
| endpoint | string | yes | – |
| has_more | boolean | yes | – |
| next_page | integer | – | – |
| pages_fetched | integer | yes | – |
| privacy_mode | string | yes | – |
| records | array | yes | – |
No examples provided.
garmin_list_devices Garmin Devices ~63
List devices registered to the Garmin account.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | yes | – |
| endpoint | string | yes | – |
| privacy_mode | string | yes | – |
No examples provided.
garmin_onboarding Garmin Onboarding (shared wellness profile) ~155
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.
| Name | Type | Req | Description |
|---|---|---|---|
| locale | string | – | Onboarding locale. Defaults to 'en'. Use 'pt-BR' for Portuguese (Brazil). |
| response_format | string | – | – |
No output schema declared.
No examples provided.
garmin_privacy_audit Garmin Privacy Audit ~38
Return local privacy, cache, token-path and env-presence posture without revealing secret values.
| Name | Type | Req | Description |
|---|---|---|---|
| response_format | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| cache_enabled | boolean | yes | – |
| cache_path | string | yes | – |
| config_source | string | yes | – |
| gps_redaction_default | boolean | yes | – |
| local_config_exists | boolean | yes | – |
| local_config_path | string | yes | – |
| local_config_secure_permissions | boolean | – | – |
| notes | array | yes | – |
| privacy_mode_default | string | yes | – |
| project | string | yes | – |
| raw_payloads_opt_in | boolean | yes | – |
| redacted_key_patterns | array | yes | – |
| required_env_present | object | yes | – |
| secret_env_vars | array | yes | – |
| stdout_safe | boolean | yes | – |
| token_path | string | yes | – |
| unofficial | boolean | yes | – |
No examples provided.
garmin_profile_get Garmin Profile Get (shared wellness profile) ~96
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.
| Name | Type | Req | Description |
|---|---|---|---|
| response_format | string | – | – |
No output schema declared.
No examples provided.
garmin_profile_update Garmin Profile Update (shared wellness profile) ~203
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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | yes | Partial WellnessProfileDocument patch. Top-level keys may be: profile, goals, devices, training, nutrition, preferences, safety, notes. |
| response_format | string | – | – |
No output schema declared.
No examples provided.
garmin_quickstart Garmin Quickstart ~62
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?'
| Name | Type | Req | Description |
|---|---|---|---|
| response_format | string | – | – |
No output schema declared.
No examples provided.
garmin_weekly_summary Garmin Weekly Health Review ~105
Build a weekly Garmin scorecard with movement, sleep, HRV, stress, Body Battery, bottlenecks and actions. Read-only and non-medical.
| Name | Type | Req | Description |
|---|---|---|---|
| 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. |
| Name | Type | Req | Description |
|---|---|---|---|
| generated_at | string | yes | – |
| kind | string | yes | – |
No examples provided.
garmin_wellness_context Garmin Wellness Context ~102
Normalize Garmin readiness, sleep score, Body Battery and recent movement load into the shared wellness_context shape for recommendation engines.
| Name | Type | Req | Description |
|---|---|---|---|
| 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. |
| Name | Type | Req | Description |
|---|---|---|---|
| body_battery | number | – | – |
| context_contract_version | string | yes | – |
| context_type | string | yes | – |
| data_quality | – | – | – |
| generated_at | string | yes | – |
| injury_flags | array | yes | – |
| notes | array | yes | – |
| readiness_score | number | – | – |
| recent_training_load | string | yes | – |
| recent_training_load_minutes | number | – | – |
| recommended_handoff | object | yes | – |
| sleep_score | number | – | – |
| soreness | array | yes | – |
| source | string | yes | – |
| telegram_summary | string | – | – |
No examples provided.
What is the io.github.davidmosiah/garminmcp MCP server?
io.github.davidmosiah/garminmcp is an MCP server listed in the public MCP registry as io.github.davidmosiah/garminmcp. Privacy-first unofficial Garmin Connect MCP for AI health, sleep, activity & recovery agents. This page covers its npm package (garmin-mcp-unofficial).
Is the io.github.davidmosiah/garminmcp MCP server safe to use?
io.github.davidmosiah/garminmcp scores 84 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.davidmosiah/garminmcp MCP server expose?
io.github.davidmosiah/garminmcp exposes 41 tools: garmin_data_inventory, garmin_agent_manifest, garmin_capabilities, garmin_quickstart, garmin_demo, and 36 more. Their descriptions and schemas cost roughly 3,330 tokens of context every time the server is loaded.
Is the io.github.davidmosiah/garminmcp MCP server still maintained?
io.github.davidmosiah/garminmcp is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the io.github.davidmosiah/garminmcp MCP server under?
io.github.davidmosiah/garminmcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.