Garmin Workouts MCP について
Garmin Workouts MCPは、Garmin Connectのワークアウトを扱う独立したMCPサーバーです。構造化された筋力トレーニングとエクササイズのマッピングを重視し、stdioで動作します。公開HTTP MCPエンドポイントではありません。
主な機能
- 01回数条件を指定できる筋力トレーニング手順
- 02Garminの列挙値または別名によるエクササイズ対応付け
- 03アップロード前のワークアウトデータ確認
- 04構造とマッピングの検証
- 05機械可読な入力スキーマ
- 06ワークアウトの一覧、取得、削除、スケジュール設定
活用シーン
- 01Garmin Connect向けの筋力トレーニング作成
- 02アップロード前のワークアウトデータ確認
- 03筋力エクササイズのGarmin対応付け確認
- 04ワークアウトカレンダーとアクティビティの確認
MCP 対応
stdioで動作するMCPサーバーとして、ワークアウトの作成・プレビュー・検証、エクササイズの対応付け、ワークアウト一覧、カレンダー、アクティビティのツールを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm -e GARMIN_EMAIL -e GARMIN_PASSWORD ghcr.io/pranciskus/garmin-workouts-mcp:0.1.2GARMIN_EMAILシークレットGarmin Connect account email.GARMIN_PASSWORDシークレットGarmin Connect account password.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/pranciskus/garmin-workouts-mcp:0.1.2stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Garmin Workouts MCP
garmin-workouts-mcp は、Garmin Connect のワークアウト向けのスタンドアロン MCP サーバーです。
Garmin のワークアウトペイロードをより構造化して扱う必要があるワークフロー、特に筋力トレーニング向けの機能拡張として設計されています。
このプロジェクトは stdio MCP サーバーとしてパッケージ化されており、MCP レジストリや Glama へのデプロイ向けに OCI イメージとして公開できます。スタンドアロンの公開 HTTP MCP エンドポイントではありません。
追加機能
reps終了条件を使用した Garmin の筋力トレーニングのステップに対応しています。- Garmin の明示的な列挙値またはわかりやすいエイリアスを使った、エクササイズのメタデータに対応しています。
- アップロード前にペイロードを確認できる
preview_workout_payloadを追加しています。 - スキーマとマッピングのエラーを早期に検出する
validate_workoutを追加しています。 - マッピングをすばやく確認できる
resolve_supported_strength_exerciseを追加しています。 - クライアントとの機械可読な連携に対応する
get_workout_input_schemaを追加しています。 - 対応するスポーツタイプとして
walkingを追加しています。これはプロンプト/スキーマにも反映されています。 - おなじみのリスト/取得/削除/スケジュール/カレンダー/アクティビティ用ツールも引き続き利用できます。
環境
Garmin を利用するツールは、呼び出されたときに遅延認証を行います。
- 認証に使用する環境変数:
GARMIN_EMAILとGARMIN_PASSWORD
サーバーは認証情報なしで起動できます。ペイロードのプレビューやスキーマの確認など、Garmin に接続しないツールは、シークレットなしでも引き続き利用できます。
ワークアウト入力
アップロードツールとプレビューツールは、次のような JSON オブジェクトを受け付けます。
{
"name": "Upper Day",
"type": "strength",
"steps": [
{
"stepType": "warmup",
"endConditionType": "lap.button",
"stepDescription": "General warm-up"
},
{
"stepType": "interval",
"exercise": "incline db press",
"endConditionType": "reps",
"stepReps": 8,
"stepDescription": "8-10 reps"
},
{
"stepType": "rest",
"endConditionType": "time",
"stepDuration": 120
}
]
}
筋力トレーニングのエクササイズでは、わかりやすいエイリアスを渡す方法と、
{ "exercise": "t bar row" }
明示的な Garmin の列挙値を渡す方法があります。
{
"exercise": {
"category": "ROW",
"exerciseName": "T_BAR_ROW"
}
}
get_workout_input_schema を使って受け付ける構造をプログラムから確認したり、resolve_supported_strength_exercise を使って Garmin の筋力トレーニングのマッピング候補を確認したりすることもできます。
開発
Docker Compose でテストを実行します。
docker compose run --rm tests
ランタイムイメージをビルドします。
docker build -t garmin-workouts-mcp:local .
Garmin の認証情報を使わずに stdio サーバーの起動をスモークテストします。
python - <<'PY'
import subprocess
proc = subprocess.Popen(
["bash", "-lc", "tail -f /dev/null | docker run --rm -i garmin-workouts-mcp:local"]
)
try:
proc.wait(timeout=5)
print(f"container exited early with code {proc.returncode}")
finally:
if proc.poll() is None:
proc.terminate()
proc.wait()
print("container stayed up for 5 seconds")
PY
公開
OCI イメージの公開先は次のとおりです。
ghcr.io/pranciskus/garmin-workouts-mcp
レジストリのメタデータは server.json にあります。OCI イメージには、次の必須ラベルが含まれています。
io.modelcontextprotocol.server.name=io.github.pranciskus/garmin-workouts-mcp
Glama の所有者メタデータは glama.json にあります。Glama の掲載情報の所有権を取得して管理できる、GitHub のメンテナーアカウントを宣言しています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。