健身数据协议服务器

Garmin MCP服务器连接Garmin Connect,将健身和健康数据暴露给Claude和其他MCP兼容客户端。

  • by svarun115
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 svarun115/garmin-mcp-server

使用说明

Garmin MCP服务器

此模型上下文协议(MCP)服务器连接到Garmin Connect,并将您的健身和健康数据暴露给Claude和其他兼容MCP的客户端。

特性

  • 列出最近的活动
  • 获取详细的活动信息
  • 访问健康指标(步数、心率、睡眠)
  • 查看车身成分数据

设置

  1. 在新环境中安装所需的软件包:
uv sync

运行服务器

Garmin MCP服务器现在支持三种部署模式:

模式1:WebSocket(默认,推荐)

# Terminal 1: Start WebSocket backend
PORT=5001 uv run garmin-mcp

# Terminal 2 (Optional): Start HTTP adapter for testing
PORT=5000 WS_BACKEND_URL=ws://localhost:5001 python -m garmin_mcp.http_adapter

特征:

  • 快速双向通信
  • 用于使用curl进行测试的HTTP端点
  • 支持使用HTTP适配器进行远程访问
  • JSON-RPC 2.0协议

Claude桌面配置(WebSocket):

{
  "mcpServers": {
    "garmin": {
      "command": "uvx",
      "args": ["--python", "3.12", "--from", "git+https://github.com/Taxuspt/garmin_mcp", "garmin-mcp"],
      "env": {
        "GARMIN_EMAIL": "YOUR_GARMIN_EMAIL",
        "GARMIN_PASSWORD": "YOUR_GARMIN_PASSWORD",
        "PORT": "5001"
      }
    }
  }
}

模式2:Stdio(原始、直接集成)

uv run garmin-mcp --stdio

特征:

  • 直接客户端集成
  • 无需额外流程
  • 原始行为得以保留
  • 完全向后兼容

克劳德桌面配置(标准):

{
  "mcpServers": {
    "garmin": {
      "command": "uvx",
      "args": [
        "--python",
        "3.12",
        "--from",
        "git+https://github.com/Taxuspt/garmin_mcp",
        "garmin-mcp",
        "--stdio"
      ],
      "env": {
        "GARMIN_EMAIL": "YOUR_GARMIN_EMAIL",
        "GARMIN_PASSWORD": "YOUR_GARMIN_PASSWORD"
      }
    }
  }
}

模式3:HTTP适配器(用于测试和远程访问)

# Terminal 1: Start WebSocket backend
PORT=5001 uv run garmin-mcp

# Terminal 2: Start HTTP adapter (requires backend running)
PORT=5000 WS_BACKEND_URL=ws://localhost:5001 python -m garmin_mcp.http_adapter

特征:

  • 便于测试的HTTP端点
  • 工具缓存
  • 可以在与后端分离的机器上运行
  • 非常适合开发和调试

卷曲测试:

# Health check
curl http://localhost:5001/health

# List tools
curl http://localhost:5000/listTools

# Call a tool
curl -X POST http://localhost:5000/rpc \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

模式比较

特性 WebSocket Stdio HTTP适配器
协议 JSON-RPC 2.0 MCP标准 HTTP/JSON-RPC
端口 5001(默认) N/A 5000(默认)
性能 快速 良好 中等
远程访问 是(使用代理) 否 是
克劳德桌面 ✓ ✓ (--stdio) ✓ (代理)
测试 curl stdio curl

配置

环境变量

GARMIN_EMAIL="your_email"              # Required
GARMIN_PASSWORD="your_password"        # Required
PORT="5001"                            # Optional (default: 5001 for WebSocket, 5000 for adapter)
WS_BACKEND_URL="ws://localhost:5001"  # Optional (adapter only)

使用克劳德桌面

编辑配置文件并设置 PORT 环境变量:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 窗户: %APPDATA%\Claude\claude_desktop_config.json

用法示例

在Claude中连接后,您可以提出以下问题:

  • “显示我最近的活动”
  • “我昨晚睡得怎么样?”
  • “我昨天走了几步?”
  • “显示我最近跑步的详细信息”

安全说明

故障排除

端口已在使用中

如果端口已在使用中,请终止现有进程或使用其他端口:

# Use a different port
PORT=5002 uv run garmin-mcp

WebSocket连接问题

  • 确保防火墙允许WebSocket连接
  • 检查后端是否正在运行: curl http://localhost:5001/health
  • 验证 WS_BACKEND_URL 环境变量设置正确

克劳德桌面找不到服务器

  1. 验证凭据(GARMIN_EMAIL、GARMIN_PASSWORD)
  2. 检查是否指定了正确的模式(有或没有--stdio)
  3. 完全重新启动克劳德桌面
  4. 检查克劳德桌面日志:
    • macOS: ~/Library/Logs/Claude/mcp-server-garmin.log
    • 窗户: %APPDATA%\Claude\logs\mcp-server-garmin.log

登录问题

  1. 验证您的Garmin Connect凭据
  2. 检查Garmin是否需要额外的验证
  3. 清除令牌缓存: rm -rf ~/.garminconnect ~/.garminconnect_base64
  4. 请尝试重新登录

HTTP适配器未连接到后端

# Verify backend is running
curl http://localhost:5001/health

# Check adapter status
curl http://localhost:5000/status