Garmin MCP 服务器是一个 Webhook 接收器和 MCP(模型上下文协议)服务器,它可以收集 Garmin 健康数据,并通过 OpenAI 的远程 MCP 集成将这些数据提供给 ChatGPT 使用。
Garmin 设备 → Webhook → SQLite 数据库 → MCP 服务器 → ChatGPT
git clone https://github.com/yourusername/garmin-mcp.git
cd garmin-mcp
npm install
cp env.example .env
# 使用你的配置编辑 .env
npm run build
npm start
docker-compose up --build
你可以使用临时公共 HTTPS URL 公开本地服务器(无需 DNS 或账户):
brew install cloudflared
./scripts/cloudflared-quick.sh
此命令会输出一个 https:// 格式的 URL。可使用该 URL 测试以下端点:
https://.trycloudflare.com/garmin/webhook https://.trycloudflare.com/healthz | 变量 | 描述 | 是否必需 |
|---|---|---|
PORT |
服务器端口(默认:8080) | 否 |
MCP_API_TOKEN |
用于 MCP 认证的 Bearer 令牌 | 是 |
GARMIN_WEBHOOK_SECRET |
用于 Webhook 签名验证的密钥 | 否 |
GARMIN_API_KEY |
Garmin 健康 API 密钥 | 否 |
GARMIN_API_SECRET |
Garmin 健康 API 密钥 | 否 |
POST /garmin/webhook - 接收 Garmin 健康数据GET /mcp/tools - 列出可用工具POST /mcp/tools/call - 执行工具GET /mcp/sse - 服务器发送事件端点GET /healthz - 健康检查端点garmin.getDailySummary获取用户某一天的每日健康摘要。 参数:
user_id(字符串,必需):用户标识符date(字符串,可选):日期,格式为 YYYY-MM-DD(默认为今天)garmin.getRecentDays获取用户最近 N 天的健康数据。 参数:
user_id(字符串,必需):用户标识符days(数字,可选):要获取的天数(默认:7)我们使用基于 Git 的版本控制来管理 Docker 镜像:
v1.0.0、v1.1.0)latest 标签# 1. 为版本发布创建 Git 标签
git tag v1.0.0
# 2. 构建并推送带有版本号的镜像
cd terraform
./build-and-push.sh
# 3. 部署到 ECS
aws ecs update-service --cluster garmin-mcp-cluster --service garmin-mcp-service --force-new-deployment
v1.0.0 - 支持 Cloudflare 隧道部署,可用于生产环境# 列出 ECR 中可用的版本
aws ecr describe-images --repository-name garmin-mcp --query 'imageDetails[*].imageTags' --output table
# 更新任务定义以使用特定版本
aws ecs update-service --cluster garmin-mcp-cluster --service garmin-mcp-service --task-definition garmin-mcp-task:REVISION_NUMBER
我们的基础设施采用成本优化架构,并使用 Cloudflare 隧道实现安全访问:
# 安装 cloudflared
brew install cloudflared
# 登录 Cloudflare
cloudflared tunnel login
# 创建隧道
cloudflared tunnel create garmin-mcp
# 获取隧道令牌(保存好)
cloudflared tunnel token garmin-mcp
cd terraform
# 使用你的隧道令牌创建 terraform.tfvars
echo 'cloudflare_tunnel_token = "your-tunnel-token-here"' > terraform.tfvars
./deploy.sh
# 用于自定义域名
cloudflared tunnel route dns garmin-mcp webhook.yourdomain.com
这是一个个人非商业项目。有关数据收集和使用的详细信息,请参阅 PRIVACY.md。
仅供个人使用。本项目不用于商业用途。
这是一个个人项目,但欢迎通过问题反馈和讨论提出建议和改进意见。