TrainBud 是一个开源 MCP(Model Context Protocol)服务器,旨在将 Garmin Connect 的健身数据连接到 Claude、Cursor 及其他兼容 MCP 的 AI 助手。用户可以用自然语言询问训练、睡眠、心率、恢复和身体成分等信息,所有数据在本地机器上处理,凭据仅保存在本地 .env 文件中。
用途
TrainBud 让用户通过 AI 助手以对话方式查询自己的 Garmin 训练数据。连接 MCP 客户端后,可以询问诸如“我今天做了什么?”“这周睡眠怎么样?”“我恢复得足够明天高强度训练吗?”“我的静息心率是否呈下降趋势?”等问题。
主要能力
- 本地优先:使用 SQLite 缓存,会话令牌存储在 .trainbud/ 目录,数据缓存在本机。
- 跨平台:支持 Windows、macOS、Linux,需要 Node.js 22.12+。
- 兼容任意 MCP 客户端:如 Claude Desktop、Cursor 及其他 stdio 兼容客户端。
- 智能获取:批量 API 调用,会话过期时自动重新认证。
- 仪表盘:trainbud serve 在 /dashboard 提供手机优先的仪表盘,展示当日突出指标、本周与上周对比、静息心率和睡眠与 30 天中位数的对比,数据来自本地历史存储,即使 Connect 会话过期也能即时显示。
- 用量监控:仪表盘显示每次调用的 token 和成本、月度累计及 30 天图表。
- Garmin 手表小部件(Connect IQ):通过 ciq/ 中的 Connect IQ 小部件在 Garmin 手表上查看恢复、睡眠、活动、压力和 VO2 max。需要 trainbud serve 运行并配合 HTTPS 隧道。
- 语音交互(/voice):在手机上按住按钮提问,语音回答。Android/Chrome 使用浏览器语音识别(免费);iPhone/Safari 通过 Groq 服务端转录(whisper-large-v3-turbo,约 $0.04/小时音频)。
- 始终在线:可注册计划任务和看门狗,使服务器和隧道在重启后自动恢复。
- Docker 支持:提供已发布镜像 ghcr.io/zsadigzade/trainbud,也可自行构建。
使用方式
- 安装:需要 Node 22.12+。可通过 npx trainbud <command> 直接运行,或 npm install -g trainbud 全局安装,或在克隆仓库后运行 npm link。
- 设置向导:引导完成凭据、认证以及连接 Cursor 或 Claude Desktop,无需手动编辑 MCP 配置。
- 连接 Claude Desktop:编辑 claude_desktop_config.json(Windows: %APPDATA%\Claude\claude_desktop_config.json;macOS: ~/Library/Application Support/Claude/claude_desktop_config.json),将客户端指向 trainbud 命令。
- Claude Code 插件:可作为 Claude Code 插件安装,一步包含技能和 MCP 服务器。
- 仪表盘:运行 trainbud serve 后访问 /dashboard,首次通过 /dashboard?token=YOUR_API_KEY 获取会话 cookie。
- 手表小部件:启动服务器和隧道(trainbud serve cloudflared tunnel --url http://127.0.0.1:3847),构建并侧载小部件,在 Garmin Connect Mobile 中设置服务器 URL,然后在手表上打开小部件获取配对码并在仪表盘批准。
- 语音:打开 https://YOUR-HOST/voice?token=YOUR_API_KEY 一次,换取 cookie 后重定向到干净 URL。
- Docker:挂载卷到 /app/.trainbud 以保留 SQLite 历史、缓存会话和日志。作为 MCP 服务器时使用 -i 标志;作为 HTTP 服务器时设置 TRAINBUD_HOST=0.0.0.0。
适用场景
- 希望用自然语言查询个人 Garmin 训练数据的运动爱好者。
- 需要将 Garmin 数据集成到 AI 助手工作流的用户。
- 关注恢复、睡眠、心率变异性等指标的健身人群。
- 希望在 Garmin 手表上快速查看关键指标的跑者或骑行者。
限制
- 非官方项目:与 Garmin Ltd. 无关联,使用非官方 garmin-connect npm 包,Garmin 可能随时更改 API。
- 不支持 MFA:底层库不支持多因素认证,需禁用 MFA 或使用应用专用密码。
- AI 功能需自备密钥:AI 功能运行在用户自己的 Anthropic 密钥上,费用由用户承担。
- 非托管服务:没有 TrainBud 账户或服务器,需自行在本地运行。
- 语音非手表功能:Connect IQ 不向小部件暴露麦克风或扬声器;移动浏览器在标签页后台时会暂停麦克风。
- 安全注意:会话令牌 .trainbud/session.json 与密码同等敏感;服务器默认绑定 127.0.0.1,仅当指向隧道时才可从互联网访问。
- 许可证:MIT。