Skip to main content
Glama

garmin-mcp

Garmin Connect의 활동, 건강 및 트레이닝 데이터(활동, HRV, 수면, 심박수, 스트레스, 바디 배터리, 트레이닝 준비도, HR/파워 존, 젖산 역치, FTP, VO2max, 개인 기록, 운동, 예약된 운동, 트레이닝 플랜)를 Claude Desktop 내 도구로 노출하는 로컬 MCP 서버입니다.

garminconnect 라이브러리를 통해 실제 Garmin Connect API에 직접 연결합니다. 데이터는 읽기 전용이며, Garmin에 어떤 것도 다시 기록되지 않습니다.

인증 방식

Garmin 로그인은 의도적으로 두 곳에서 분리되어 있습니다.

  • scripts/setup_auth.py — 직접 터미널에서 실행하는 대화형 스크립트입니다. 이메일/비밀번호로 로그인하고, Garmin이 요청하면 MFA 코드를 입력받아 생성된 세션 토큰을 ~/.garmin_mcp/tokens에 저장합니다.

  • MCP 서버(src/garmin_mcp/server.py)는 Claude Desktop이 헤드리스로 실행하며, 캐시된 토큰을 로드하고 자동으로 갱신만 합니다. MFA를 요청하지 않습니다. Claude Desktop에는 프롬프트를 표시할 터미널이 없으며, 거기서 stdin을 기다리면 도구 호출이 중단되기 때문입니다. 캐시된 세션이 없거나 만료된 경우 도구 호출은 setup_auth.py를 다시 실행하라는 오류와 함께 실패합니다.

Garmin 비밀번호는 macOS 키체인(항목/서비스 garmin-mcp, Keychain Access에서 확인 가능)에 저장되며 파일에 기록되지 않습니다. Garmin 로그인 이메일(비밀 아님)만 ~/.garmin_mcp/config.json에 저장됩니다.

설치

  1. 의존성을 설치합니다:

    cd garmin_mcp
    uv sync
  2. 일회성 대화형 로그인을 실행합니다:

    uv run python scripts/setup_auth.py

    Garmin Connect 이메일과 비밀번호를 입력합니다(비밀번호는 다음 번을 위해 키체인에 저장됩니다). 메시지가 표시되면 MFA 코드를 입력합니다. 성공하면 확인 메시지와 토큰 캐시 경로가 표시됩니다.

  3. ~/Library/Application Support/Claude/claude_desktop_config.json을 편집하고(다른 mcpServers 항목 옆에) 다음을 추가하여 Claude Desktop에 서버를 등록합니다:

    {
      "mcpServers": {
        "garmin": {
          "command": "uv",
          "args": ["run", "--project", "/Users/felix.guiony/Code/Perso/garmin_mcp", "garmin-mcp"]
        }
      }
    }
  4. Claude Desktop을 완전히 종료(Cmd+Q, 창을 닫는 것만으로는 안 됨)하고 다시 엽니다. 도구/해머 아이콘에 garmin 도구가 표시되어야 합니다.

도구

도구

설명

list_activities

최근 활동 (최신순, 페이지네이션, 선택적 유형 필터)

get_activity

단일 활동의 전체 세부 정보: 요약 및 지표별 시계열

get_activity_splits

단일 활동의 랩/구간 데이터

get_heart_rate

일일 안정 시 심박수 및 당일 심박수 타임라인

get_daily_stats

걸음 수, 칼로리, 안정 시 심박수, 거리, 층수, 운동 강도 시간

get_sleep

수면 단계, 수면 시간, 수면 점수

get_hrv

심박 변이도

get_body_battery

날짜 범위에 따른 바디 배터리 에너지 보유량

get_stress

하루 종일 스트레스 수준

get_training_readiness

트레이닝 준비도 점수 및 기여 요인

get_profile

신원, 단위 환경설정, 개인 설정(최대 심박수, 안정 시 심박수, 체중, 키, VO2max), 스포츠별 심박수 존 및 파워 존

get_lactate_threshold

러닝 젖산 역치: 심박수, 파워, 속도

get_cycling_ftp

최신 사이클링 기능적 역치 파워(FTP)

get_ftp_history

날짜 범위 내 스포츠의 과거 FTP

get_max_metrics

날짜 범위 내 최대 지표 데이터(예: VO2max)

get_resting_heart_rate

날짜 범위 내 일일 안정 시 심박수 추세

get_fitness_age

특정 날짜의 가민 피트니스 나이

get_personal_records

개인 기록

list_workouts

저장된 운동 템플릿 (최신순, 페이지네이션)

get_workout

단일 운동의 전체 구조: 세그먼트, 목표, 인터벌

get_scheduled_workouts

특정 월에 예약된 운동 일정

get_scheduled_workout

단일 예약 운동 인스턴스의 세부 정보

list_training_plans

트레이닝 플랜

get_training_plan

특정 트레이닝 플랜의 세부 정보

get_adaptive_training_plan

특정 적응형 트레이닝 플랜의 세부 정보

모든 날짜 매개변수는 YYYY-MM-DD 형식을 사용하며 기본값은 오늘입니다.

문제 해결

도구 호출 시 "Garmin session error" / "run setup_auth.py" 메시지가 반환됩니다. 캐시된 갱신 토큰이 만료되었거나 해지되었습니다(비밀번호 변경이나 장기간 비활성 상태 후에 가끔 발생합니다). 다시 실행하세요:

uv run python scripts/setup_auth.py

속도 제한. Garmin Connect는 빠른 요청에 때때로 속도 제한을 적용합니다. 기본 라이브러리는 일시적인 오류를 자동으로 재시도하지만, 속도 제한 오류가 표시되면 잠시 기다렸다가 다시 시도하세요.

Claude Desktop 외부에서 서버를 직접 확인하려면:

uv run mcp dev src/garmin_mcp/server.py

MCP Inspector가 열려 각 도구를 직접 호출하고 출력/스키마를 확인할 수 있습니다.

프로젝트 구조

garmin_mcp/
  pyproject.toml
  src/garmin_mcp/
    auth.py      # keychain + token-cache helpers
    server.py    # FastMCP server and tool definitions
  scripts/
    setup_auth.py  # interactive one-time/occasional login
-
license - not tested
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.

  • Garmin data in Claude: 135 tools — activities, sleep, HRV, training, workouts. Free, open source.

  • MCP server for Withings health data — sleep, activity, heart, and body metrics.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sovnheim/garmin-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server