mcpField
G
Garmin Personal MCP

Garmin Personal MCP

ローカル
github.comヘルスケア40今日更新

Garmin Personal MCP について

個人のGarmin ConnectアカウントにGarmin Personal API経由で接続する読み取り専用のMCPサーバーです。パスワードログインやスクレイピングを使わず、取り消し可能なAPIキーで健康・アクティビティデータを取得します。

主な機能

  1. 01睡眠、HRV、Body Batteryデータの取得
  2. 02健康サマリーと日付範囲の検索
  3. 03アクティビティの検索と詳細取得
  4. 04長い期間をAPI上限内の区間に分割
  5. 05高密度サンプルの既定での省略

活用シーン

  1. 01睡眠やHRVの傾向確認
  2. 02最近のランやワークアウトの比較
  3. 03日々の健康・トレーニングデータの確認

MCP 対応

stdioまたはstreamable HTTP経由で、MCPクライアントにGarmin Personal APIのデータ取得ツールを提供します。健康指標、睡眠、アクティビティを読み取り専用で照会できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"mason-levyy-garmin-personal": {
"command": "uvx",
"args": [
"garmin-personal-mcp"
],
"env": {
"GARMIN_PERSONAL_API_KEY": "<GARMIN_PERSONAL_API_KEY>",
"GARMIN_MCP_DOWNLOAD_DIR": "<GARMIN_MCP_DOWNLOAD_DIR>"
}
}
}
}
起動コマンドuvx garmin-personal-mcp
設定が必要な環境変数
GARMIN_PERSONAL_API_KEYシークレットGarmin Connect Personal API key (optional; 'garmin-personal-mcp auth' saves one instead)
GARMIN_MCP_DOWNLOAD_DIRWhere garmin_download_activity saves activity files

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypigarmin-personal-mcp0.2.0

ツール

26

掲載時のツール一覧 · 今日に更新

パラメーター型必須説明
dateanyいいえ

詳細

garmin-personal-mcp

Garmin の公式 API を使って、Garmin のデータについて AI に質問できます。

PyPI CI Python GitHub stars License: MIT

Install in Cursor Install in VS Code Install in VS Code Insiders

クイックスタート · ツール · 認証 · 変更履歴

Garmin Connect を Claude や任意の MCP クライアントに接続できます。昨夜の睡眠、 HRV の傾向、Body Battery、トレーニング負荷、特定のランニングについて、実際の Garmin アカウントのデータをもとに質問できます。

PyPI では garmin-personal-mcp として公開されています。

非公式プロジェクト、公式 API を使用。 Garmin が開発したものではありませんが、 Garmin の公式 Python クライアントを通じて、Garmin のドキュメント化された Personal API のみを利用します。

このツールを選ぶ理由

多くの Garmin MCP サーバーは、非公式の garminconnect ライブラリを使って Garmin のパスワードでログインします。そのため、Garmin がログイン方法を変更するたびに動かなくなります。2026 年 10 月、Garmin は個人向けの Personal API を公開しました。このサーバーはこれを利用します。

  • パスワード不要、スクレイピングなし:Garmin Connect で作成できる、いつでも無効化可能な Personal API キーを、短期間有効なトークンと交換します
  • Personal API 全体に対応:リファレンスに記載された動作するすべてのエンドポイントにツールがあり、ドキュメント化されたフィルターにもすべて対応しています
  • 任意の日付範囲に対応:エンドポイントで許可される範囲(ステップ数は 28 日、睡眠は 31 日など)を超える場合、リクエストを分割して実行します
  • モデルに適した応答:終日分のサンプル配列は、要求されない限り含めません
  • 読み取り専用:Personal API ではアカウントを変更できず、このサーバーでも変更できません

クイックスタート

  1. Personal API キーを保存します(初回のみ。詳しくは認証をご覧ください)。

    uvx garmin-personal-mcp auth
    
  2. サーバーをクライアントに追加します。上部のインストールボタンを使うと、Cursor と VS Code にはワンクリックで追加できます。

    Claude Code

    claude mcp add garmin -- uvx garmin-personal-mcp
    

    または、プラグインとしてインストールすることもできます。その場合、手順 1 の代わりにキーの入力を求められます。

    /plugin install garmin-personal-mcp --marketplace Mason-Levyy/garmin-personal-mcp
    

    Claude Desktop(claude_desktop_config.json)、Cursor (~/.cursor/mcp.json)、Windsurf(~/.codeium/windsurf/mcp_config.json)、 Cline(cline_mcp_settings.json)では、すべて同じエントリーを使用します。

    {
      "mcpServers": {
        "garmin": {
          "command": "uvx",
          "args": ["garmin-personal-mcp"]
        }
      }
    }
    
    VS Code、Codex CLI、Gemini CLI

    VS Code(または上のボタンを使用してください):

    code --add-mcp '{"name":"garmin","command":"uvx","args":["garmin-personal-mcp"]}'
    

    Codex CLI:

    codex mcp add garmin -- uvx garmin-personal-mcp
    

    Gemini CLI:

    gemini mcp add garmin uvx garmin-personal-mcp
    
  3. 質問してみましょう。「昨夜の睡眠はどうだった?」、「今月、HRV は低下傾向にある?」、*「直近 3 回のロングランを比較して」*などです。

uv が必要です。Claude に限らず、stdio またはストリーミング可能な HTTP に対応した MCP クライアントであれば利用できます。

役に立ちましたか? GitHub に ⭐ を付けると、ほかの Garmin ユーザーが見つけやすくなります。

認証

  1. ウェブで Garmin Connect にサインインし、設定 → Personal API を開きます。
  2. キーを作成し、有効期間(30 日から 1 年)を選びます。Garmin がキーを表示するのは一度だけです。
  3. garmin-personal-mcp auth を実行し、非表示の入力プロンプトでキーを貼り付けます。サーバーは Garmin でキーを確認してから、所有者のみがアクセスできる権限で ~/.config/garmin/connect-personal-api-key に保存します。

スクリプトやエージェントが実行するシェルなど、入力プロンプトを表示する端末がない場合は、代わりにキーをパイプで渡します。例:pbpaste | garmin-personal-mcp auth。

garmin-personal-mcp auth --check を実行すると、プロンプトを表示せずに、保存したキーが引き続き使用できるか確認できます。キーの有効期限が切れる約 1 週間前に Garmin からメールが届きます。新しいキーを作成し、再度 auth を実行してください。再起動は不要です。サーバーは呼び出しのたびにキーを読み込みます。

キーのファイルの代わりに GARMIN_PERSONAL_API_KEY を設定できます。この環境変数が優先されます。キーのファイルとベアラートークンのキャッシュは、Garmin の gc-personal CLI と共通のため、どちらかで保存したキーを両方で使用できます。

ツール

すべてのツールで日付は YYYY-MM-DD 形式で指定します。期間を指定するツールは、デフォルトで今日までの 7 日間を対象とします。リストを返すツールは、結果を {"results": [...]} でラップします。

ツール返される内容
garmin_get_day1 日の概要:サマリー、睡眠、HRV、Body Battery、ストレス、アクティビティ
garmin_get_daily_summary指定日のすべての終日ウェルネス合計
garmin_get_daily_summaries期間内の日次サマリー(週または月単位の傾向)
garmin_get_steps1 日の歩数、距離、目標
garmin_get_stress1 日のストレスレベルと、各ストレス帯で過ごした時間
garmin_get_hydration1 日の摂取量、目標、発汗による損失
garmin_get_body_battery1 日の充電・消耗とその要因となったイベント。chunks で日中の最低値・最高値を取得
garmin_get_heart_rate安静時/最小/最大 HR、7 日間の安静時平均、異常 HR アラート。リクエストに応じて測定値を取得
garmin_get_spo2パルスオキシメーターの平均値、時間ごとの平均値、順応状況。リクエストに応じて測定値を取得
garmin_get_wellness_activitiesサマリー値と各ゾーンでの時間を含むウェルネスアクティビティ
garmin_get_sleep1 晩分の詳細:スコア、睡眠ステージ、時刻、夜間のバイタル
garmin_get_sleep_summaries期間内の夜ごとの睡眠記録
garmin_get_hrv1 晩分の HRV とすべての測定値
garmin_get_hrv_summaries期間内の夜ごとの HRV、週間平均、ベースライン、ステータス
garmin_get_weight日次の体重サマリー、期間平均、前後の計測値。include_all で全計測値を取得
garmin_get_weight_goals適用中の体重目標とその目標範囲
garmin_get_food_logGarmin Connect の栄養ログ:食品、栄養素、目標、食事
garmin_search_activitiesGarmin がサポートするすべてのフィルター(種類、日付、距離、パワー、エリア、ダイビングなど)に対応したアクティビティ
garmin_get_activity1 件のアクティビティの詳細(スプリットを含む)
garmin_get_activity_workoutsアクティビティ中に実施した構成済みワークアウト
garmin_download_activityアクティビティの元ファイル(.fit を含む ZIP)をサーバーのマシンに保存
garmin_get_profile単位、形式、タイムゾーン、トレーニング日の設定
garmin_get_heart_rate_zonesスポーツごとのゾーン下限値と、それらの基準となる HR
garmin_get_fitness_ageフィットネス年齢、達成可能なフィットネス年齢、およびその構成要素
garmin_get_menstrual_cycle周期の段階、日数、妊娠可能期間、予測
garmin_get_menstrual_day1 日分の記録された症状、経血量、周期の詳細

重量はグラム、距離はメートル、時間は秒単位で返されます。これは Garmin の返却形式に準じています。

リモート/HTTP モード

デフォルトのトランスポートは stdio です。ネットワーククライアントを使う場合:

garmin-personal-mcp --http --host 127.0.0.1 --port 8491

これにより、/mcp でストリーミング可能な HTTP を提供します。認証機能は組み込まれていません。インターネットに公開しないでください。 localhost にバインドし、認証を代行するもの(VPN または tailnet(例:tailscale serve)、認証対応リバースプロキシ、OAuth 対応 MCP ゲートウェイ)を前段に配置してください。プロキシの背後で使用する場合は、--allowed-host <proxy hostname> を指定してください(複数回指定可能)。これにより、DNS リバインディングチェックで Host ヘッダーが許可されます。

設定

変数用途デフォルト
GARMIN_PERSONAL_API_KEYPersonal API key。保存済みのキー ファイルより優先されます–
GARMIN_MCP_DOWNLOAD_DIRgarmin_download_activity がファイルを保存する場所~/Downloads/garmin(プラットフォームのダウンロードディレクトリ)

トラブルシューティング

  • 「Garmin rejected the Personal API key」:キーの有効期限が切れたか、削除されています。 新しいキーを作成し、garmin-personal-mcp auth を実行してください。
  • 「No usable Garmin Personal API key was found」:garmin-personal-mcp auth を実行するか、 クライアント設定で GARMIN_PERSONAL_API_KEY を設定してください。
  • {"no_data": ...}:Garmin にその日付のデータがまだない(たとえば、睡眠前の今日の HRV)か、 お使いのデバイスがその指標を記録していません。
  • 長い期間を指定した際の HTTP 400:上限が文書化されていないエンドポイントで、指定した期間が拒否されました。 より短い期間を指定してください。

FAQ

これはGarminの公式APIですか? はい。Garmin Connectアカウントを持っていれば誰でも申請なしで有効にできるGarminのPersonal APIを、GarminのApacheライセンスのPythonクライアントを通じて使用しています。このプロジェクト自体は独立したものです。

Garminのデータを変更できますか? いいえ。Personal APIは読み取り専用です。何かを書き込む唯一のツールであるgarmin_download_activityは、お使いのマシンにファイルを保存します。

どのMCPクライアントで使えますか? Claude Desktop、Claude Code、Cursor、Windsurf、Cline、VS Codeなど、stdioまたはストリーミング可能なHTTPサーバーを実行できる任意のクライアントで使えます。AIコーディングエージェントはllms-install.mdに従ってセットアップできます。

データはどこに送られますか? サーバーはGarminとのみ通信します。キーとベアラートークンは~/.config/garmin/に保存されます。ツールの結果は、接続先のMCPクライアントとモデルに送られます。

他の人のアカウントにも使えますか? いいえ。GarminのPersonal APIはご自身のデータを対象としています。他のユーザーにサービスを提供するアプリには、Garminのビジネス開発者プログラムが必要です。

仕組み

  • garmin-personal-mcp authでキーを保存します。各呼び出しでは、GarminのPersonalApiAuthenticatorを通じてキーをベアラートークンに交換します。トークンは有効期限の1時間前までキャッシュされます。トークンが期限前に拒否された場合は、新しいトークンに交換して1回再試行します。
  • 各ツールはpersonal.connectapi.garmin.com上の1つのエンドポイントに対応します(garmin_get_dayは複数のエンドポイントを組み合わせます)。エンドポイントにドキュメント化された最大値を超える範囲は、連続する期間に分けて取得し、結合します。
  • モデルが読みやすいレスポンスを保てるよう、分単位の大量のサンプル配列はデフォルトで除外されます。include_samplesまたはchunksを指定すると、サンプル配列を含められます。

開発

git clone https://github.com/Mason-Levyy/garmin-personal-mcp
cd garmin-personal-mcp
uv sync
uv run pytest

テストは合成フィクスチャを使用して実行するため、アカウントは必要ありません。Lintとフォーマットはruff(uv run ruff check .、uv run ruff format .)で適用されます。

コントリビューション

課題の報告やプルリクエストを歓迎します。特にGarminがPersonal APIにエンドポイントを追加した場合はぜひお知らせください。セットアップ、スタイル、PRチェックリストについてはCONTRIBUTING.mdを、脆弱性を非公開で報告する方法についてはSECURITY.mdをご覧ください。リリース履歴はCHANGELOG.mdにあります。

プロジェクトを支援する

このサーバーが時間の節約に役立った場合は、ぜひリポジトリにスターを付けてください。スターを通じて、他のGarminユーザーがGitHub検索やMCPディレクトリでこのプロジェクトを見つけやすくなります。不具合の報告やエンドポイントのリクエストも、課題で歓迎します。

ライセンス

MIT。GarminおよびGarmin ConnectはGarmin Ltd.またはその子会社の商標です。このプロジェクトはGarminと提携しておらず、Garminから承認も受けていません。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。