Garmin Connect について
Garmin Connectは、MCPクライアント経由でGarminデータを読み取り、管理し、ワークアウトを作成したい人向けの非公式MCPサーバーです。健康指標やアクティビティ、予定設定を扱い、保存前にワークアウトをプレビューして確認します。
主な機能
- 01睡眠、HRV、ストレス、トレーニング指標の取得
- 02アクティビティの検索、確認、管理
- 03プレビュー付きワークアウト作成と予定設定
- 04ワークアウトをGarminデバイスへ送信
- 05ギア、コース、デバイス、体重データの管理
活用シーン
- 01睡眠とトレーニングレディネスの確認
- 02距離、ペース、心拍数でランを比較
- 03ワークアウトを作成して日程を設定
- 04アクティビティファイルのアップロードやダウンロード
MCP 対応
MCPクライアントにGarmin Connectのデータとワークアウト管理ツールを提供します。stdioでローカル実行でき、ホスト型のストリーミングHTTPサーバーも利用できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://garmin.ficdev.xyz/mcpclaude mcp add --transport http dynamicsninja-garminconnect https://garmin.ficdev.xyz/mcp{"mcpServers":{"dynamicsninja-garminconnect":{"type":"http","url":"https://garmin.ficdev.xyz/mcp"}}}Cursor で開く{"servers":{"dynamicsninja-garminconnect":{"type":"http","url":"https://garmin.ficdev.xyz/mcp"}}}VS Code で開く{"mcpServers":{"dynamicsninja-garminconnect":{"type":"http","url":"https://garmin.ficdev.xyz/mcp"}}}{"mcpServers":{"dynamicsninja-garminconnect":{"serverUrl":"https://garmin.ficdev.xyz/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
@dynamicsninja/garminconnect-mcp
Claude と会話しながら Garmin のワークアウトを作成したり、garminconnect-js をベースに構築された MCP サーバーを通じて、その他の Garmin Connect データを読み取ったり管理したりできます。
「5 km のペースで 400 m を6本、2分間のジョグで回復するセッションを作成して、木曜日に設定し、時計に送ってください。」
Claude はワークアウトをプレビューして、あなたの承認を待ってから、Garmin のワークアウトライブラリに保存し、スケジュールを設定してデバイスに送信します。
非公式のプロジェクトです。Garmin が作成したものではなく、Garmin との提携関係もありません。
インストールせずに使う
ホスト版は https://garmin.ficdev.xyz/mcp で実行されています。ブラウザーウィンドウで一度 Garmin にサインインするだけで、インストール不要で同じツールを利用できます。
- claude.ai: [Settings]→[Connectors]→[Add custom connector]を選択します。URL を貼り付け、開いたウィンドウで Garmin にサインインしてください。同じアカウントの Claude Desktop とモバイル版にも表示されます。
- Claude Code:
claude mcp add --transport http garmin https://garmin.ficdev.xyz/mcp - その他の MCP クライアント: その URL を使って、ストリーム可能な HTTP サーバーを追加します。
ローカルサーバーとの違い:
sign_in_to_garminツールはありません。コネクターを追加するときにサインインします。- アップロードツールでは
filenameとcontentを指定します。.fitファイルの場合はencoding: "base64"も指定します。上限は 10 MB です。 - ダウンロードしたファイルはフォルダーに保存されず、チャットに返されます。上限は 5 MB です。
接続を解除するには、コネクターを削除してください。次回のサインイン時に「Disconnect my other Garmin connections」にチェックを入れることもできます。プライバシーの詳細については、PRIVACY.md をご覧ください。
必要なもの
- Node.js 18 以降(確認するには
node --versionを実行します)。 - Garmin Connect アカウント。
- Claude Desktop、またはその他の MCP クライアント(その他の MCP クライアントを参照)。
セットアップ
最も簡単な方法:Claude Desktop Extension
- 最新リリースから
garminconnect-mcp-<version>.mcpbをダウンロードします。 - ダブルクリックする(または Claude Desktop の[Settings]→[Extensions]にドラッグする)と、Install を選択できます。
- Garmin データについて Claude に質問します。初回は Claude がブラウザーで Garmin のサインインページを開くので、そこでサインインし(MFA コードを使用している場合は入力して)、完了したことを Claude に伝えてください。
ツールグループやダウンロードフォルダーなどのオプション設定は、[Settings]→[Extensions]→[Garmin Connect]にあります。
その他のインストール方法:npm
1. インストール
npm install -g @dynamicsninja/garminconnect-mcp
npx 経由で実行するのではなく、一度だけインストールしてください。Claude Desktop は複数のサーバーを同時に起動するため、npx が同じキャッシュフォルダーに並行してインストールすると、互いに不具合を起こすことがあります(ERR_MODULE_NOT_FOUND … ajv/dist/2020.js)。
2. Garmin にサインイン
ターミナルで実行します(パスワードが Claude を経由することはありません)。
garminconnect-mcp login
Garmin のメールアドレス(古いアカウントの場合はユーザー名)、パスワード、MFA を使用している場合は MFA コードの入力を求められます。セッションは ~/.garminconnect-mcp/tokens に保存され、30 日ごとに少なくとも1回使用すれば自動的に更新されます。
3. Claude Desktop に追加
[Settings]→[Developer]→[Edit Config]を開き、claude_desktop_config.json に garmin エントリを追加します。node のパスをインストール済みのサーバーに設定します。パスを調べるには npm root -g を実行し、その末尾に /@dynamicsninja/garminconnect-mcp/dist/cli.js を追加します。
Windows(スラッシュを使用):
{
"mcpServers": {
"garmin": {
"command": "node",
"args": ["C:/Users/<you>/AppData/Roaming/npm/node_modules/@dynamicsninja/garminconnect-mcp/dist/cli.js"]
}
}
}
macOS / Linux:
{
"mcpServers": {
"garmin": {
"command": "node",
"args": ["/usr/local/lib/node_modules/@dynamicsninja/garminconnect-mcp/dist/cli.js"]
}
}
}
node が見つからない場合(nvm を使用しているとよく発生します)は、which node で確認したフルパスを command として使用します。
4. Claude Desktop を再起動
完全に終了してください:トレイ/メニューバーのアイコン → [Quit]。ウィンドウを閉じただけではアプリは実行中のままなので、新しい設定は読み込まれません。もう一度起動して新しいチャットを開くと、メッセージボックスのツールアイコンの下に Garmin ツールが表示されます。
使用方法
そのまま頼むだけです。試してみたい例をいくつか紹介します。
- 「筋力トレーニングを作成してください。60 kg のバックスクワットを 10 回、腕立て伏せを 12 回、プランクを 1 分間行うセットを 3 ラウンド。ラウンド間の休憩は 90 秒です。」
- 「25 m プール用のスイムセットを作ってください。ゆっくり 400 m、15 秒休憩でクロール 100 m を 8 本、クールダウン 200 m。」
- 「そのワークアウトを木曜日に予定して、ウォッチに送信してください。」
- 「昨夜の睡眠はどうでしたか? 今日のトレーニングレディネスはどうですか?」
- 「直近のランを要約してください。距離、ペース、平均心拍数、トレーニング効果を教えてください。」
- 「レース予測を教えてください。また、今月の HRV の推移はどうですか?」
- 「6 月以降の 10 km 超のランを、距離の長い順に探して、平均心拍数を比較してください。」
ワークアウトは必ず最初にプレビューされます。 Claude はワークアウトを読みやすい形式(ステップ、目標、/km と /mi 単位のペース)で表示し、確認されるまで保存しません。エクササイズ名は Garmin のカタログと照合され、ワークアウトに間違いがあれば、どこにあるかを正確に示して Claude に返されるので、修正できます。
Claude Desktop では、ツールを呼び出すたびに確認を求められます。 ツールを 1 回だけ、または常に許可できます。データを削除または上書きするツール(アクティビティ、ワークアウト、ギア、体重測定値などの削除)は破壊的な操作としてマークされており、Claude は使用前に確認するよう指示されます。
できること
sign_in_to_garmin:MFA を含め、ブラウザーで開くページからサインインします。ターミナルは不要です。上記の最も簡単な方法:Claude Desktop Extensionをご覧ください。- ワークアウト:ランニング、サイクリング、水泳、筋力トレーニング、HIIT、ヨガ、ピラティス、モビリティ、カーディオ、ラッキング、マルチスポーツに対応する
preview_workout、create_workout、update_workout、search_exercisesに加え、一覧表示、スケジュール設定、ウォッチへの送信、削除ができます。 - garminconnect-js のその他すべての機能:睡眠、HRV、ストレス、Body Battery、最長 1 年分の全日サマリー、トレーニングレディネスとステータス、レース予測、アクティビティ(一覧表示、種類による検索、距離、時間、パワー、日付、テキストまたは場所による検索、詳細、実施したワークアウト、ダウンロード、ファイルのアップロード、RPE と感覚)、ギア、コース、レースカレンダー、デバイス、バッジ、体重測定と体重目標、食事の記録(Garmin Connect+ を利用)などに対応します。ライブラリのメソッドごとに 1 つのツールを用意しています。
公開されない機能: logout(保存済みセッションが削除されるため)、生の JSON によるワークアウトのアップロード(チェック機能付きの create_workout が代わりに使用されます)、およびオプトインしない限り、生の GraphQL パススルー。
設定(環境変数)
| 変数 | デフォルト | 意味 |
|---|---|---|
GARMIN_MCP_TOKEN_DIR | ~/.garminconnect-mcp/tokens | セッションの保存先 |
GARMIN_MCP_DOWNLOAD_DIR | ~/Downloads/garmin | ダウンロードしたファイル(FIT、GPX、…)の保存先 |
GARMIN_MCP_GROUPS | all | カンマ区切りのツールグループ:wellness、activities、metrics、workouts、gear、courses、calendar-events、devices、badges-challenges、body-composition-weight、womens-health、golf、profile-and-misc。大文字と小文字を区別せず照合されます。不明な名前は無視されます(指定した名前のうち有効なものがない場合は、すべて読み込まれます)。ワークアウト作成ツールは常に有効です。グループを減らすと、Claude が使用するコンテキストを削減できます。 |
GARMIN_MCP_ENABLE_GRAPHQL | off | query_garmin_graphql を公開するには 1 を設定します |
たとえば、設定エントリの "env" に設定します。
"garmin": {
"command": "node",
"args": ["…/dist/cli.js"],
"env": { "GARMIN_MCP_GROUPS": "workouts,metrics,wellness,activities" }
}
GARMIN_EMAIL(メールアドレス、または古いアカウントの場合はユーザー名)と GARMIN_PASSWORD を両方設定すると、拡張機能のメールアドレスとパスワードの設定と同様に機能します。保存済みセッションがない場合、サーバーが自動でサインインします(MFA は使用しません)。
GARMIN_MCP_TOKEN_DIR を変更した場合は、同じ値でサインインしてください(GARMIN_MCP_TOKEN_DIR=/path/to/dir garminconnect-mcp login)。そうしないと、サーバーはセッションを見つけられません。
トラブルシューティング
- ツールが表示されません。 Claude Desktop を完全に終了してから再起動したことを確認してください(手順 4)。次に、
「設定」→「開発者」→
garminでサーバーの状態とログへのリンクを確認します。 - 「Garmin にログインしていません」または「セッションの有効期限が切れました」:Claude に再度サインインするよう依頼してください(
sign_in_to_garminを呼び出します)。または、garminconnect-mcp loginをもう一度実行します。実行中のサーバーは次のリクエストで新しいセッションを取得するため、再起動は不要です。 - サインインページが開きませんでした:Claude の返信にリンクが含まれています。このコンピューターの任意のブラウザーで開いてください。有効期限は 15 分です。Claude に再度サインインするよう依頼してください。
npxの実行後にERR_MODULE_NOT_FOUNDが表示される:npm キャッシュ内の_npxフォルダーを削除して(場所はnpm config get cacheで確認できます)、上記のグローバルインストールを使用してください。- 「Garmin がリクエストをレート制限しています」:Garmin は短時間に集中する呼び出しを制限します。1 分待ってから、もう一度依頼してください。
- 保存時に HTTP 412 が発生する(EU アカウント):Garmin Connect の設定で一度アップロードへの同意を行ってください。それまでは Garmin がすべての書き込みを拒否します。
- 詳細なアクティビティデータが途中で切れているように見える:1 回のツール結果は 100,000 文字に制限されており、秒単位のアクティビティデータ(
get_activity_details)は通常それを超えます。代わりに要約を依頼するか、アクティビティファイル(download_activity)をダウンロードして、別の場所で開いてください。
更新
npm install -g @dynamicsninja/garminconnect-mcp@latest
その後、Claude Desktop を終了して再起動してください。保存済みのセッションは保持されます。
その他の MCP クライアント
stdio サーバーを起動できるクライアントなら、どれでも動作します。コマンドは garminconnect-mcp(または
node …/dist/cli.js)です。たとえば、Claude Code では次のようにします。
claude mcp add garmin -- garminconnect-mcp
知っておくとよいこと
- 日付は UTC の暦日です(
YYYY-MM-DD)。 - すべての処理はお使いのマシン上で実行されます。Garmin セッションはトークンフォルダーに保存され、Garmin にのみ送信されます。詳細は PRIVACY.md をご覧ください。
- Garmin Connect の API は非公式であり、変更される可能性があります。このサーバーは garminconnect-js と同時にリリースされ、各リリースは同梱するライブラリのバージョンに対してテストされています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。