mcpField
G
Garmin Workouts MCP

Garmin Workouts MCP

ローカル
github.comヘルスケア233 週間前に更新

Garmin Workouts MCP について

Garmin Workouts MCPは、Garmin Connectのワークアウトを扱う独立したMCPサーバーです。構造化された筋力トレーニングとエクササイズのマッピングを重視し、stdioで動作します。公開HTTP MCPエンドポイントではありません。

主な機能

  1. 01回数条件を指定できる筋力トレーニング手順
  2. 02Garminの列挙値または別名によるエクササイズ対応付け
  3. 03アップロード前のワークアウトデータ確認
  4. 04構造とマッピングの検証
  5. 05機械可読な入力スキーマ
  6. 06ワークアウトの一覧、取得、削除、スケジュール設定

活用シーン

  1. 01Garmin Connect向けの筋力トレーニング作成
  2. 02アップロード前のワークアウトデータ確認
  3. 03筋力エクササイズのGarmin対応付け確認
  4. 04ワークアウトカレンダーとアクティビティの確認

MCP 対応

stdioで動作するMCPサーバーとして、ワークアウトの作成・プレビュー・検証、エクササイズの対応付け、ワークアウト一覧、カレンダー、アクティビティのツールを提供します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"pranciskus-garmin-workouts": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GARMIN_EMAIL",
"-e",
"GARMIN_PASSWORD",
"ghcr.io/pranciskus/garmin-workouts-mcp:0.1.2"
],
"env": {
"GARMIN_EMAIL": "<GARMIN_EMAIL>",
"GARMIN_PASSWORD": "<GARMIN_PASSWORD>"
}
}
}
}
起動コマンドdocker run -i --rm -e GARMIN_EMAIL -e GARMIN_PASSWORD ghcr.io/pranciskus/garmin-workouts-mcp:0.1.2
設定が必要な環境変数
GARMIN_EMAILシークレットGarmin Connect account email.
GARMIN_PASSWORDシークレットGarmin Connect account password.

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

パッケージ
ocighcr.io/pranciskus/garmin-workouts-mcp:0.1.2

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Garmin Workouts MCP

garmin-workouts-mcp は、Garmin Connect のワークアウト向けのスタンドアロン MCP サーバーです。

Garmin のワークアウトペイロードをより構造化して扱う必要があるワークフロー、特に筋力トレーニング向けの機能拡張として設計されています。

このプロジェクトは stdio MCP サーバーとしてパッケージ化されており、MCP レジストリや Glama へのデプロイ向けに OCI イメージとして公開できます。スタンドアロンの公開 HTTP MCP エンドポイントではありません。

Garmin Workouts 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 のメンテナーアカウントを宣言しています。

コメント

MCP は初めてですか?

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

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