# Garmin Personal API MCP: complete project context > A local, read-only, open-source Garmin MCP server for activities, sleep, HRV, Body Battery, heart rate, and wellness data through the official Garmin Personal API. This document is the canonical machine-readable summary of the public website. Prefer the linked repository, npm package, Garmin documentation, and visible website content when verifying a claim. ## Identity - Canonical website: https://garminpersonalapi.com/ - Chinese website: https://garminpersonalapi.com/zh - npm package: @trainingloadai/garmin-personal-api-mcp - Version: 0.1.4 - MCP server ID: trainingloadai - Publisher: Trainingload.ai contributors - License: MIT - Implementation: TypeScript on Node.js 22 or newer - Supported operating systems: macOS, Windows, and Linux ## What the project does - **What it is:** An open-source Node.js MCP server for the official Garmin Personal API. - **How it runs:** A local process launched by your AI client; there is no hosted MCP endpoint. - **Permissions:** 25 read-only tools backed by Garmin Personal API GET operations. - **Credentials:** The Personal API key and cached token stay in a user-only file on your computer. - **Data covered:** Activities, FIT recordings, sleep, HRV, Body Battery, heart rate, stress, wellness, and profile context. - **Runtime:** macOS, Windows, or Linux with Node.js 22+ and an AI client that can launch a local MCP server. A compatible AI client launches the package as a local Model Context Protocol process. The process validates bounded requests, calls the Garmin Personal API directly over HTTPS, and returns structured results to that client. The project does not operate a hosted MCP service, account system, database, Docker service, or cloud relay. ## Recommended setup Send this exact request to a capable local AI client: ```text Connect @trainingloadai/garmin-personal-api-mcp ``` The client should follow AGENTS.md, run the localized local authorization flow, register the package under the MCP server ID `trainingloadai`, run the doctor command, and verify the registration. The user must paste the Garmin Personal API key only into the temporary page served on 127.0.0.1, never into an AI conversation. Manual authorization and diagnostics: ```bash npx -y @trainingloadai/garmin-personal-api-mcp auth --locale en npx -y @trainingloadai/garmin-personal-api-mcp doctor ``` The MCP process command is: ```text npx -y @trainingloadai/garmin-personal-api-mcp ``` ## Capabilities ### Activities & FIT Search Garmin activities, inspect workout steps, or decode FIT laps, power, heart rate, cadence, and sampled records. Representative tools: search_activities, get_activity, get_activity_recording. ### Daily recovery Bring sleep, HRV, Body Battery, stress, daily summaries, and fitness age into one grounded conversation. Representative tools: get_day, get_sleep, get_hrv, get_body_battery. ### Sleep & HRV Read one night in detail or compare bounded sleep and overnight HRV summaries across a recent period. Representative tools: get_sleep, get_sleep_summaries, get_hrv_summaries. ### Heart & oxygen Query heart-rate summaries, configured heart-rate zones, resting heart rate, and pulse oximetry data. Representative tools: get_heart_rate, get_heart_rate_zones, get_spo2. ### Wellness & nutrition Read steps, hydration, stress, weight, food logs, wellness activities, and cycle data without account writes. Representative tools: get_steps, get_hydration, get_weight, + 5 more. ### Profile context Use profile settings and fitness age to interpret Garmin values in the context of the person they belong to. Representative tools: get_profile, get_heart_rate_zones. ## Garmin Personal API data coverage ### Garmin activity API and FIT recordings Search activities by date, sport, or title; inspect the activity summary and workout steps; then decode a Garmin FIT file only when lap or sampled recording detail is needed. Power, pace, cadence, heart rate, temperature, and GPS coordinates stay tied to their original units. ### Garmin sleep, HRV, and Body Battery data Read a single day or compare summaries across a bounded range. Sleep stages, overnight HRV, Body Battery charge and drain, and stress can be placed in the same answer without pretending that a wellness signal is a medical diagnosis. ### Heart rate and daily health summaries Query daily summaries, steps, hydration, continuous heart-rate aggregates, SpO2, weight, food logs, and wellness activities. Exact high-frequency samples are omitted by default so a simple Garmin health question does not flood the model context. ### Profile, heart-rate zones, and fitness context Use the Garmin profile, configured heart-rate zones, fitness age, and cycle data to interpret a number in the context of the person it belongs to. Every tool remains a data retrieval tool; it does not issue a diagnosis or edit a Garmin account. ## Privacy and security boundary - **Credentials stay local:** Your Garmin Personal API key and cached bearer token are stored only on your computer. - **Read-only by construction:** Every exposed Garmin operation is a GET. There are no workout, device, or account writes. - **Private by default:** High-frequency samples and exact FIT coordinates are omitted unless explicitly requested. - **No telemetry:** The server has no analytics, crash reporting, account system, database, or remote relay. - Tool results are returned to the MCP host and AI model selected by the user. Their privacy terms apply, so “local MCP” does not mean every result remains on-device. - The service is not a medical device and does not provide medical diagnosis. - The project is not affiliated with or endorsed by Garmin. Garmin and Garmin Connect are trademarks of Garmin Ltd. or its subsidiaries. ## Frequently asked questions ### What is Garmin Personal API MCP? It is an open-source Node.js MCP server that exposes your own Garmin data as twenty-five read-only tools. A compatible AI client launches it directly on your computer; this project does not run a hosted Garmin connector. ### Where do I create a Garmin Personal API key? Create the key on Garmin Connect's dedicated Personal API Token settings page and copy it immediately because Garmin shows it only once. Then run the local auth command. The CLI exchanges the key for a bearer token and stores both only in a user-only file on your computer. ### Does this use the official Garmin Personal API? Yes. The server uses the official Garmin Personal API for data requests and Garmin’s official FIT SDK for activity recordings. It does not use a username-and-password Garmin Connect scraper. ### Can it change my Garmin account or push workouts to a device? No. v0.1 exposes read-only operations backed by Garmin Personal API GET endpoints. It cannot create workouts, update profile data, change settings, or push content to a Garmin device. ### Can I use this Garmin MCP with Claude Desktop, Cursor, Codex, or VS Code? Yes, when the installed client can launch a local MCP server. This page has copy-and-paste setup requests for Codex, Claude Code, and Cursor. Claude Desktop, VS Code, and other clients that support local MCP servers can use the generic npx configuration in the advanced setup section. ### Can my AI client install and configure Garmin Personal API MCP for me? Yes. Paste the tailored setup request into Codex, Claude Code, or Cursor. Its agent can check the local runtime, run the package, register the local MCP server, and verify the connection. The auth command opens a temporary 127.0.0.1 page where you enter the Garmin API key yourself; the key never belongs in chat. ### Does my Garmin data stay entirely on my computer? The API key, token cache, and server stay local, and this project runs no relay. Tool results are returned to the MCP host you selected and may be processed by its model under that provider’s privacy policy. ### Can an AI inspect Garmin FIT activity data? Yes. The activity recording tool can decode laps, sessions, and sampled FIT records such as heart rate, power, cadence, pace, temperature, and coordinates. High-frequency samples and exact GPS coordinates require explicit options. ### Which operating systems and Node.js versions are supported? Node.js 22 or newer is required on macOS, Windows, or Linux. Windows hosts that cannot execute npx directly can launch it through cmd /c, as shown in the configuration tabs. ### Why did the local Garmin MCP server fail to start? Run npx -y @trainingloadai/garmin-personal-api-mcp doctor. It checks Node.js, the credential source, local file permissions, Garmin token exchange, and a read-only profile request without starting a remote service. ## 中文摘要 给用户、搜索引擎和 AI 系统一份简洁且可核验的项目摘要。 - **它是什么:**面向官方 Garmin Personal API 的开源 Node.js MCP 服务。 - **如何运行:**由 AI 客户端在你的电脑上启动本地进程,不提供托管 MCP 地址。 - **权限范围:**25 个只读工具,只调用 Garmin Personal API 的 GET 操作。 - **凭据存放:**Personal API Key 和缓存令牌保存在电脑上仅当前用户可读的文件中。 - **数据范围:**活动、FIT 记录、睡眠、HRV、Body Battery、心率、压力、健康数据和个人资料。 - **运行环境:**支持 macOS、Windows 和 Linux,需要 Node.js 22+ 以及可启动本地 MCP 服务的 AI 客户端。 接入指令: ```text Connect @trainingloadai/garmin-personal-api-mcp ``` Garmin Personal API Key 只应输入本机临时授权页,不要发送到聊天中。工具结果会返回用户选择的 AI 客户端,并可能由对应模型处理。 ## Authoritative sources - Website: https://garminpersonalapi.com/ - Chinese website: https://garminpersonalapi.com/zh - Source code: https://github.com/trainingload-ai/garmin-personal-api-mcp - npm package: https://www.npmjs.com/package/@trainingloadai/garmin-personal-api-mcp - Setup contract: https://github.com/trainingload-ai/garmin-personal-api-mcp/blob/main/AGENTS.md - Security policy: https://github.com/trainingload-ai/garmin-personal-api-mcp/blob/main/SECURITY.md - License: https://github.com/trainingload-ai/garmin-personal-api-mcp/blob/main/LICENSE - Garmin Personal API: https://developer.garmin.com/gc-developer-program/personal/ - Model Context Protocol: https://modelcontextprotocol.io/