Run Coach

io.github.chenhunghanv0.9.0更新于 Oct 8, 2026

Garmin data with interactive charts: daily briefing, training trends, workout planning. Unofficial.

概览

AI 生成的概览

让助手读取你的 Garmin Connect 健康与训练数据、显示交互式图表,并创建或安排训练计划。

功能
Run Coach 将助手连接到你自己 的 Garmin Connect 账户。它提供日常健康与活动数据(步数、心率、睡眠阶段、压力、身体电量、HRV、血氧)、训练指标(训练准备度、训练负荷、VO2 Max、比赛预测、乳酸阈值、心率区间),以及可列出、创建、更新、删除和安排 Garmin 日历训练计划的工具。在支持 MCP Apps 的客户端中,它还会渲染交互式图表和登录表单,并提供每日简报、每周训练计划等提示。
适用场景
适合已经用 Garmin 设备记录训练和健康数据、希望助手总结准备度与睡眠、比较数周或数月的趋势、分析每公里配速与心率区间,或根据自身数据起草并安排一周训练的人。
运行要求
通过 stdio 在本地运行,可作为 .mcpb 包拖入 Claude Desktop,或用 npx garmin-mcp-app 启动。ChatGPT 桌面应用和其他 MCP 客户端需要 Node.js 20+。仅限桌面端,没有网页版。需要 Garmin Connect 账户,并通过应用内登录表单完成登录(含 MFA)。OAuth 令牌保存在本机 ~/.garminconnect 下。
安装前请注意
它会通过仅限应用内的登录表单索取 Garmin Connect 邮箱、密码和 MFA 验证码;助手不应看到这些信息,密码在经由宿主前会用一次性密钥加密。OAuth 令牌以 0600 权限保存在本机 ~/.garminconnect。训练工具可以创建、更新、删除和安排 Garmin 日历中的训练计划,确认前请检查改动。它使用非官方 Garmin Connect API,与 Garmin 无关联。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Run Coach,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

Run Coach — Garmin MCP App

Connect your Garmin watch to Claude Desktop or ChatGPT. Explore interactive charts.

Unofficial. Not affiliated with or endorsed by Garmin. Garmin is a trademark of Garmin Ltd.

[demo]

Install

Claude Desktop

  1. Download the latest .mcpb file from Releases
  2. Drag it into Claude Desktop to install
  3. Ask Claude anything about your Garmin data — it will prompt you to sign in on first use

ChatGPT (desktop app)

Requires Node.js 20+.

  1. In the ChatGPT desktop app, open Settings → Plugins → Add marketplace
  2. Source: chenhunghan/garmin-mcp-app (leave Git ref and sparse paths empty) → Add marketplace
  3. Restart the app, open the Plugins Directory, choose the Run Coach marketplace and install Coach

Or with the Codex CLI: codex plugin marketplace add chenhunghan/garmin-mcp-app then codex plugin add garmin@garmin-mcp.

Coach then appears in the sidebar (daily briefing and performance dashboard) and as a Training Week tab in conversations; or just ask "@Coach how am I today?". It runs on your computer, so it works in the desktop app only.

Other MCP clients (Cursor, VS Code, Claude Code, Codex CLI, …)

Requires Node.js 20+. Add the server to your client's MCP config:

json
{  "mcpServers": {    "garmin": { "command": "npx", "args": ["-y", "garmin-mcp-app"] }  }}

Or from the command line: claude mcp add garmin -- npx -y garmin-mcp-app (Claude Code), codex mcp add garmin -- npx -y garmin-mcp-app (Codex CLI).

Clients that support MCP Apps (e.g. VS Code) show the interactive charts and the sign-in form. Other clients still get every Garmin tool as data, but can't show the sign-in form: sign in once from an MCP Apps client — the tokens are saved in ~/.garminconnect and shared by every client on your computer.

What you can do

Ask Claude about your health, training, and fitness — it reads your Garmin data and shows interactive charts right in the conversation.

  • Start your day — a morning briefing: readiness, sleep, HRV, body battery and resting HR against your own baselines, with Claude's suggestions
  • See your trends — compare up to 4 metrics over 4 weeks to a year, and ask Claude what changed
  • Plan your week — Claude designs a week of training from your data, then creates and schedules the workouts on your Garmin calendar
  • Analyze your workouts — per-km splits (even for single-lap runs), HR zones, and training effect
  • Track your fitness — training readiness, training load, VO2 Max, race predictions, and 30+ more Garmin metrics

Your Garmin, coached by Claude

The app frames your data against your own baselines; Claude reads it and suggests what to do. Every view has Ask Claude questions built from your numbers, and Claude knows what you're looking at.

Daily briefing — "How am I today?"

[Daily briefing: training readiness 72 with its factors, and tiles for sleep, HRV, body battery, resting HR, stress and steps, each compared with a personal baseline]

Performance dashboard — "How has my fitness trended this year?"

[Performance dashboard switching from 12 weeks to 1 year: resting HR, HRV with its baseline band, VO2 max and sleep score as small trend charts]

Weekly training plan — "Plan my training week" (or the plan-training-week prompt)

[Training week: planned workouts paired with completed runs, rest days, and today's long run still to come]

Per-km splits — "Show the splits of my last run"

[Per-km splits table with pace bars, the fastest kilometre highlighted, HR and cadence per km]

Screenshots use the built-in demo mode (npm run dev:ui:demo): a fictional runner, no real person's data. Light and dark themes follow Claude Desktop.

What you can visualize

Plot your activities

[activities]

Visualize training readiness

[training readiness]

Full list of supported Garmin Connect data
CategoryData
Daily healthSteps, heart rate, sleep stages, stress, body battery (+ events), HRV, respiration, SpO2, floors, hydration
TrendsResting heart rate, weekly steps, weekly stress, weekly intensity minutes, weigh-ins
ActivitiesList / by date, details, splits, typed splits, HR time-in-zones, chart data, weather, exercise sets, gear
TrainingTraining readiness, training status & load, VO2 Max, race predictions, endurance score, hill score
PerformanceLactate threshold, cycling FTP, HR zones, fitness age, personal records, running tolerance, progress
Devices & gearDevices, primary training device, last used device, gear, goals, training plans, calendar
WorkoutsList, create, update, delete, and schedule workouts

Privacy & Security

No data is stored or collected by this app. Your data flows directly between your machine and the Garmin Connect API — there is no intermediate server.

Learn more
  • Your credentials stay private. You sign in through a secure login form rendered inside Claude Desktop. The login and MFA tools are marked as app-only (visibility: ["app"]), meaning Claude (the LLM) cannot call them and never sees your email, password, or MFA code.
  • Claude doesn't know who you are. The LLM only receives the health/fitness data you ask for (steps, sleep, etc.) — it has no access to your Garmin account credentials, OAuth tokens, or profile (name, email, location).
  • Your password is never sent in plain text. The login form encrypts it with a single-use key before it passes through Claude Desktop, so it can't leak into host logs.
  • Tokens are stored locally. OAuth tokens are saved on your machine at ~/.garminconnect/ with restrictive file permissions (0600). They are never sent anywhere other than the Garmin Connect API.
  • You can log out anytime. Logging out clears all saved tokens from your machine.

Developer / Contributor Guide

Getting Started

bash
git clone https://github.com/chenhunghan/garmin-mcp-app.gitcd garmin-mcp-appnpm install

npm install automatically sets up git hooks via prek:

  • commit-msg — enforces Conventional Commits via commitlint
  • pre-push — runs lint, format check, typecheck, and tests (same as CI)

Troubleshooting: core.hooksPath

If npm install warns about core.hooksPath, prek cannot install git hooks. Fix it by unsetting the local config:

bash
git config --unset-all --local core.hooksPathnpm run prepare

Development

bash
npm run dev        # watch-build server + UInpm run dev:ui     # standalone UI dev at localhost:5173npm run test:lib   # run garmin-connect testsnpm run pack       # build + package .mcpb bundle

npm run dev:ui opens http://localhost:5173 with the React UI wired to the real MCP server in-process. You can test login, MFA, and logout against the actual Garmin API without deploying to Claude Desktop.

Testing in Claude Desktop

Run npm run build (one-off) or npm run dev (watch mode for live rebuilds), then add to ~/Library/Application Support/Claude/claude_desktop_config.json:

json
{  "mcpServers": {    "garmin-mcp": {      "command": "node",      "args": ["/absolute/path/to/garmin-mcp-app/dist/index.js"]    }  }}

Restart Claude Desktop. Ask Claude to check your Garmin auth — it will render the app UI in an iframe and run the real login/MFA flow.

Architecture

  • MCP Server (src/server.ts) — Node.js server over stdio, registers tools + UI resource
  • React UI (src/app.tsx) — Rendered in host's sandboxed iframe, communicates via postMessage
  • garmin-connect (packages/garmin-connect/) — TypeScript client library for Garmin Connect OAuth + API

Commit Convention

Commits must follow the Conventional Commits format:

type(optional-scope): description

Allowed types: feat, fix, chore, docs, ci, refactor, test

Disclaimer

Run Coach is an independent, open-source project. It is not affiliated with, endorsed by, or sponsored by Garmin Ltd. or its subsidiaries. Garmin and Garmin Connect are trademarks of Garmin Ltd. or its subsidiaries; they are used here only to describe compatibility. The app uses the unofficial Garmin Connect API with your own account.

来源:README.md,提交 dea4b26

工具

0
工具元数据尚未被收录。

版本历史

1
  1. v0.9.0最新Oct 8, 2026