Skip to main content
Glama

garmin-mcp

ローカルMCPサーバーで、Garmin Connectのアクティビティ、健康、トレーニングデータ(アクティビティ、HRV、睡眠、心拍数、ストレス、Body Battery、トレーニングレディネス、心拍数/パワーゾーン、乳酸閾値、FTP、VO2max、自己ベスト、ワークアウト、予定されたワークアウト、トレーニングプラン)をClaude Desktop内のツールとして公開します。

garminconnectライブラリを介して、Garmin ConnectのライブAPIと直接通信します。データは読み取り専用です。Garminに書き戻されることは一切ありません。

認証の仕組み

Garminのログインは、意図的に2つの別々の場所で行われます:

  • 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、キーチェーンアクセスで表示可能)に保存され、ファイルに書き込まれることはありません。保存されるのはGarminのログインメールアドレス(機密ではありません)だけで、~/.garmin_mcp/config.jsonに保存されます。

セットアップ

  1. 依存関係をインストールします:

    cd garmin_mcp
    uv sync
  2. 一度だけの対話型ログインを実行します:

    uv run python scripts/setup_auth.py

    Garmin Connectのメールアドレスとパスワードを入力します(パスワードは次回のためにキーチェーンに保存されます)。プロンプトが表示されたらMFAコードを入力します。成功すると、確認メッセージとトークンキャッシュのパスが表示されます。

  3. Claude Desktopにサーバーを登録するには、~/Library/Application Support/Claude/claude_desktop_config.jsonを編集し、(他のmcpServersエントリに加えて)以下を追加します:

    {
      "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

1件のアクティビティの完全な詳細:サマリー + メトリックごとの時系列

get_activity_splits

1件のアクティビティのラップ/スプリットデータ

get_heart_rate

毎日の安静時心拍数 + 日内心拍数のタイムライン

get_daily_stats

歩数、消費カロリー、安静時心拍数、距離、フロア、運動強度時間

get_sleep

睡眠ステージ、睡眠時間、睡眠スコア

get_hrv

心拍変動(HRV)

get_body_battery

指定期間の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

指定日のGarminフィットネス年齢

get_personal_records

自己ベスト記録

list_workouts

保存済みワークアウトテンプレート(新しい順、ページングあり)

get_workout

1件のワークアウトの完全な構造:セグメント、ターゲット、インターバル

get_scheduled_workouts

指定月に予定されているワークアウトのカレンダー

get_scheduled_workout

予定されたワークアウト1件の詳細

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