Skip to main content
Glama

Tyme Wear MCP Server

Model Context Protocol サーバーで、Claude を Tyme Wear 呼吸センサープラットフォームに接続します。換気データ、アクティビティ、閾値、トレーニングゾーンを Claude から直接分析できます。

trainingpeaks-mcp と同じアーキテクチャで構築されています。

Tyme Wear とは?

Tyme Wear は VitalPro チェストストラップを製造しており、心拍数に加えて換気指標(呼吸数、一回換気量、分時換気量)を測定するウェアラブル呼吸センサーです。換気閾値(VT1、VT2)を使用してパーソナライズされたトレーニングゾーンを定義します。Team Visma | Lease a Bike が使用しています。

Related MCP server: Strava MCP Server

機能

  • 40 の MCP ツール:プロフィール、アクティビティ、呼吸データ、VE 閾値、アクティビティごとのコンパクト分析、アクティビティファイル/検出、トレーニングプラン、ワークアウト推奨、連携、サブスクリプション/アカウント、安静時/最大生理機能、エクスポートに対応

  • システムキーリング(macOS Keychain / Windows Credential Manager)による安全な認証情報保存、AES-256-GCM 暗号化ファイルフォールバック付き

  • 自動認証:トークンキャッシュと期限切れ時の自動再認証

  • スマート呼吸データ:サマリー、ウィンドウ、フルモードでコンテキストオーバーフローを防止

  • アクティビティごとのインサイトtw_get_activity_insights):検出された VT1/VT2/VO2max、測定された閾値パワー、信頼度スコア、打ち切りテストフラグ、ゾーンごとの時間/カロリーを1回の呼び出しで取得(FIT 解析不要)

  • コンパクトアクティビティ分析tw_get_activity_analysis):調整済みタイムスタンプ、ラベル付きサマリーと機能状態、チャンネルごとの processed/new-processed/FIT フォールバック、決定論的な経過秒マージ、ページネーション

  • スリムなアクティビティペイロードtw_get_activitytw_get_activity_workout_zone_detection はデフォルトで数 MB の毎秒配列を削除(include=[...] でオプトイン可能)

  • パブリック Streamable HTTP モード:静的 Bearer トークンまたは OAuth 認証(ワンクリック claude.ai コネクタ)、オペレーターの Tyme Wear アカウントへのシングルテナント

クイックスタート

1. インストール

git clone https://github.com/tkelkermans/tymewear-mcp.git
cd tymewear-mcp
python -m venv .venv
source .venv/bin/activate
pip install -e .

2. 認証

tymewear-mcp auth

Tyme Wear のメールアドレスとパスワードを入力してください。認証情報はシステムキーリングに安全に保存され、暗号化ファイルフォールバックが使用されます。

3. Claude Desktop の設定

Claude Desktop の設定ファイル(macOS では ~/Library/Application Support/Claude/claude_desktop_config.json)に以下を追加します:

{
  "mcpServers": {
    "tymewear": {
      "command": "/path/to/tymewear-mcp/.venv/bin/tymewear-mcp",
      "args": ["serve"]
    }
  }
}

または、tymewear-mcp config を実行して正しいパスを含むスニペットを生成します。

4. Claude Desktop を再起動

Tyme Wear ツールが Claude のツールリストに表示されます。

CLI コマンド

コマンド

説明

tymewear-mcp auth

Tyme Wear 認証情報を保存(インタラクティブ、または --email/--password

tymewear-mcp auth-status

保存された認証情報が有効か確認

tymewear-mcp auth-clear

保存された認証情報を削除

tymewear-mcp config

Claude Desktop 設定スニペットを出力

tymewear-mcp serve

MCP サーバーを起動(stdio トランスポート)

tymewear-mcp serve-public

パブリック Streamable HTTP サーバーを起動

パブリックインターネットデプロイ

serve-public はホスト型デプロイ用の Streamable HTTP MCP エンドポイントを公開します。認証が必要でステートレスです。匿名の公開 API ではありません。

パブリックサーバー

環境変数で公開 URL と 1 つ以上の MCP Bearer トークンを設定します。各 Bearer トークンは最低 32 文字必要です。生成されたランダムシークレットを使用してください。

export TYMEWEAR_PUBLIC_URL="https://mcp.example.com/mcp"
export TYMEWEAR_PUBLIC_BEARER_TOKENS="replace-with-a-long-random-secret-of-32-plus-chars"

tymewear-mcp serve-public \
  --host 0.0.0.0 \
  --port 8000 \
  --public-url "$TYMEWEAR_PUBLIC_URL"

MCP エンドポイントはデフォルトで /mcp です。/healthz{"status":"ok"} のみを返し、顧客データを公開しません。

コンテナ

同梱の Dockerfile は非 root ユーザーでパブリックサーバーを実行します。実行時にシークレットを注入します:

docker build -t tymewear-mcp-public .

docker run --rm -p 8000:8000 \
  -e TYMEWEAR_PUBLIC_URL="https://mcp.example.com/mcp" \
  -e TYMEWEAR_PUBLIC_BEARER_TOKENS="replace-with-a-long-random-secret-of-32-plus-chars" \
  tymewear-mcp-public

Vercel

リポジトリにはルートの Vercel Python ASGI エントリポイント(main.py)も含まれています。Vercel の Python フレームワークはリクエストを ASGI アプリに直接ルーティングするため、vercel.json/mcp/healthz/.well-known/* を内部関数パスに書き換えてはいけません。ローカルディレクトリを目的の Vercel プロジェクトにリンクし、そのプロジェクトを Git リポジトリに接続してから、少なくとも TYMEWEAR_PUBLIC_BEARER_TOKENS を Production と Preview の両方に設定します。パブリック Bearer トークン環境変数がない場合、エントリポイントはクローズド状態で失敗します。Preview には別の Bearer トークンを使用して認証情報の範囲を制限してください。TYMEWEAR_PUBLIC_URL はプロダクションエイリアスに推奨されますが、プレビューデプロイでは Vercel のデプロイ URL から派生させることができます。

PRODUCTION_TOKEN_FILE=/path/to/generated-production-bearer-token
PREVIEW_TOKEN_FILE=/path/to/generated-preview-bearer-token
chmod 600 "$PRODUCTION_TOKEN_FILE" "$PREVIEW_TOKEN_FILE"
vercel link
vercel git connect
vercel env add TYMEWEAR_PUBLIC_BEARER_TOKENS production --sensitive --yes < "$PRODUCTION_TOKEN_FILE"
vercel env add TYMEWEAR_PUBLIC_BEARER_TOKENS preview --sensitive --yes < "$PREVIEW_TOKEN_FILE"

トークンファイルは所有者のみ読み取り可能にしてください。デプロイメントラッパーはグループまたはその他がアクセス可能なトークンファイルを拒否します。既存のトークンをローテーションする場合は、vercel env update TYMEWEAR_PUBLIC_BEARER_TOKENS production --sensitive --yes < "$PRODUCTION_TOKEN_FILE" を使用してください。Bearer トークンを vercel deploy --env、シェルの echo、またはシェル履歴やプロセス一覧に残る可能性のあるコマンド引数で渡さないでください。

同じパスは scripts/deploy_public_vercel.sh で手動リカバリデプロイ用にラップされています。既存の Vercel プロジェクトリンクが必要で、ファイルからトークンをアップロードし、プロダクションにデプロイし、デプロイされた MCP URL に対して scripts/verify_public_endpoint.py を実行します:

scripts/deploy_public_vercel.sh --token-file "$PRODUCTION_TOKEN_FILE"

検証ツールを特定のインタプリタ(リポジトリの仮想環境など)で実行する場合は、PYTHON=/path/to/python を設定します。

自動デプロイ(CI/CD)

.github/workflows/deploy.yml は、すべてのプッシュとプルリクエストでロックされたテストスイート(ruff + mypy + pytest)を実行します。Vercel 認証情報を保持したり、アプリケーションをデプロイしたりしません。

リンクされた Vercel Git インテグレーションは、フィーチャーブランチとプルリクエスト用のプレビューデプロイを作成し、main が更新されるとプロダクションデプロイを作成します。VERCEL_TOKEN GitHub Actions シークレットは必要ありません。TYMEWEAR_PUBLIC_BEARER_TOKENS などのランタイム変数は Vercel プロジェクトで管理され、Git デプロイ間で保持されます。

claude.ai コネクタ(OAuth)

静的 Bearer トークンはヘッダー対応クライアント(Claude Code: claude mcp add --transport http <url> --header "Authorization: Bearer <token>")で機能します。一方、claude.ai のコネクタは OAuth で認証するため、MCP を追加するにはサーバーが OAuth 保護リソース として動作します。管理されたプロバイダー(例:WorkOS AuthKit や Stytch)からの JWT アクセストークンを検証し、メールアドレスの許可リストを適用します。シングルテナントのままです。すべての承認されたユーザーは、サーバー側の認証情報を介してオペレーターのデータを読み取ります。

これを有効にするには、以下の(機密)Vercel 環境変数を設定します:

変数

目的

TYMEWEAR_PUBLIC_ISSUER_URL

プロバイダーの発行者 URL(OAuth 保護リソースモードを有効化)

TYMEWEAR_OIDC_AUDIENCE

オプションの期待されるトークン aud。未設定の場合、aud は強制されません(発行者の署名 + メール許可リストは引き続き適用)

TYMEWEAR_OIDC_JWKS_URL

オプションの明示的な JWKS URL(未設定の場合は発行者から検出)

TYMEWEAR_OIDC_SCOPES

オプションのクライアントに通知するスコープ(デフォルト openid profile email

TYMEWEAR_ALLOWED_EMAILS

接続を許可するメールアドレスのカンマ区切り許可リスト

TYMEWEAR_EMAIL / TYMEWEAR_PASSWORD

すべてのアップストリーム呼び出しに使用されるオペレーターの Tyme Wear 認証情報

プロバイダー設定(WorkOS AuthKit の例):アプリを作成し、Google/メールログインを有効にし、Dynamic Client Registration を有効にして claude.ai が自己登録できるようにし、発行者 URL を TYMEWEAR_PUBLIC_ISSUER_URL にコピーします。次に、claude.ai でコネクタを追加します。サーバーの /.well-known/oauth-protected-resource を介してプロバイダーを検出し、登録し、ホスト型ログインを実行します。許可リストに登録されたメールアドレスのみが許可されます。

静的 TYMEWEAR_PUBLIC_BEARER_TOKENS パスは OAuth と並行して機能し続けます(デュアルモード)。TYMEWEAR_PUBLIC_ISSUER_URL がない場合、OAuth はオフになり、Bearer パスのみがアクティブになります。

デプロイ後の検証

デプロイ後、シークレットを出力せずにパブリックエンドポイントを検証します:

TYMEWEAR_PUBLIC_URL="https://mcp.example.com/mcp" \
python scripts/verify_public_endpoint.py --bearer-token-file "$TOKEN_FILE"

検証ツールは /healthz、認証なしの /mcp 拒否、認証済み MCP initialize、認証済み tools/list、必須のコンパクト分析/プロフィールツール、およびパブリックセキュリティ/キャッシュなしヘッダーをチェックします。 また、パブリックデプロイが生のアクティビティ読み取りやディスクエクスポートをアドバタイズしないこと、およびデフォルトのデプロイが変更ツールをアドバタイズしないことを確認します。

パブリッククライアント認証

パブリックモードは シングルテナント です。TYMEWEAR_EMAIL / TYMEWEAR_PASSWORD(サーバー側の環境変数)からのオペレーター自身の認証情報を使用して Tyme Wear にアップストリーム認証を行うため、承認されたすべての呼び出し元がオペレーターのデータを読み取ります。クライアントは接続が許可されていることを証明するだけでよく、リクエストごとの Tyme Wear トークンは必要ありません。

ヘッダー対応クライアント(例:Claude Code)は静的ゲートウェイ Bearer トークンを送信します:

Authorization: Bearer <TYMEWEAR_PUBLIC_BEARER_TOKENS entry>

OAuth が有効な場合(TYMEWEAR_PUBLIC_ISSUER_URL が設定されている場合)、claude.ai コネクタなどのクライアントは、ホスト型ログインを通じて取得したプロバイダー発行の JWT を送信します。サーバーはそれを検証し(JWKS による署名、発行者、オプションの audience)、許可リストに登録されたメールアドレスのみを許可します。両方のパスが同時に機能します(デュアルモード)。

以前のリビジョンでは、リクエストごとに X-Tymewear-Token が必要でした。シングルテナントモードで削除されました。認証情報はサーバー側になりました。

パブリックデータポリシー

パブリックモードでは:

  • アクセスは静的 Bearer トークンおよび/または OAuth メール許可リストによって制限されます。許可リストに登録された ID のみが接続できます。

  • オペレーターの Tyme Wear 認証情報はサーバー側の環境変数にのみ存在します(シークレットマネージャーに保管してください)。環境変数から直接読み取られます。パブリックモードはローカルのキーリングや暗号化認証情報ファイルには 触れません(これらは $HOME に書き込まれますが、サーバーレスでは読み取り専用です)。

  • すべてのツール結果と安定したパブリックエラーは、JSON シリアル化の前に、1 つの非変更再帰的プライバシープロジェクションを通過します。これにより、非 JSON 値、非有限数、メールアドレス、ユーザー/アカウント/プロフィール UUID、デバイス識別子/シリアル、トークン、署名付き/コールバック/ダウンロード URL、S3 または一時パス、大きな生フィールド、および明示的な分析ロケーション契約外の座標が削除されます。

  • tw_get_activity_analysis はパブリックのコンパクトな生サンプルインターフェースです。ラベル付きの可用性、機能、チャンネル、出典、サマリー、ページネーションされたサンプルデータを保持します。include_location はリテラルブール値 true でなければなりません。その場合のみ、raw_samples.data[*].position_lat/position_long とそれに対応するチャンネルメタデータが残る可能性があります。自宅、一般的、および無関係な座標は常に削除されます。

  • パブリックレスポンスには Cache-Control: no-storePragma: no-cacheX-Robots-Tag: noindex, nofollow、HTTPS 公開 URL 用の HSTS、およびベースラインセキュリティヘッダーが含まれ、中間キャッシュ、インデックス作成、ブラウザ側での顧客データ漏洩を誤って減らします。

  • プロフィール/アクティビティ変更ツールは非表示になり、デフォルトで PUBLIC_MUTATIONS_DISABLED を返します。信頼できるデプロイでのみ --allow-mutations または TYMEWEAR_PUBLIC_ALLOW_MUTATIONS=true で有効にしてください。

  • CSV、FIT、ストラップファイルエクスポートツールは、ローカル実装がファイルをディスクに書き込むため、PUBLIC_EXPORTS_DISABLED を返します。

  • tw_get_processed_datatw_get_new_processed_datatw_get_activity_logstw_get_activity_strap_files は非表示になり、変更が有効な場合でも PUBLIC_RAW_DATA_DISABLED を返します。ローカルの stdio モードではこれらのツールが保持されます。コンパクトなワークアウトゾーン検出はパブリックのままです。

公開ツールのエラーは安定しており、上流の例外テキストをエコーしません:

コード

意味

INVALID_TOOL_ARGUMENTS

リクエストが公開された厳密なツールスキーマと一致しません

UNKNOWN_TOOL

リクエストされたツールが登録されていません

TYMEWEAR_UPSTREAM_TOKEN_REQUIRED

サーバー側の Tyme Wear 資格情報が利用できません

PUBLIC_TOOL_FAILED

公開クライアント、ハンドラー、クローズ、またはプロジェクション操作が失敗しました

PUBLIC_RAW_DATA_DISABLED

raw/log/ファイル読み取りツールがパブリックモードで利用できません

PUBLIC_EXPORTS_DISABLED

ディスク書き出しエクスポートがパブリックモードで利用できません

PUBLIC_MUTATIONS_DISABLED

明示的な信頼されたデプロイメントのオプトインなしではミューテーションが利用できません

プロダクションの堅牢化

  • エッジでTLSを終端し、TYMEWEAR_PUBLIC_URL を正規のHTTPS MCP URLに設定します。

  • TYMEWEAR_PUBLIC_URL のパスをマウントされたMCPパス(デフォルトは /mcp)に合わせます。パブリックモードでは、起動時にURLのクエリ文字列、フラグメント、ルート/パスの不一致を拒否します。

  • TYMEWEAR_PUBLIC_BEARER_TOKENS をシークレットマネージャーから注入し、シェル履歴やソースコントロールからは注入しないでください。32文字未満のトークンは起動時に拒否されます。

  • プロファイル/アクティビティのミューテーションに対する特定の信頼できるクライアント要件がない限り、パブリックデプロイメントは読み取り専用に保ちます。

  • 信頼できないクライアントに対しては、serve-public の前にOAuthまたはアイデンティティ認識プロキシを使用することを推奨します。静的ベアラートークンは定期的にローテーションしてください。

  • OAuth対応プロキシまたは認可サーバーを使用する場合、TYMEWEAR_PUBLIC_ISSUER_URL または --issuer-url を設定して、MCPクライアントが保護リソースのメタデータを発見できるようにします。

  • パブリックHTTPリクエストボディはデフォルトで1 MiBに制限され、チャンク/ストリーム本文も含みます。TYMEWEAR_PUBLIC_MAX_BODY_BYTES または --max-body-bytes で上書きするのは、信頼できるデプロイメントでより大きなJSON-RPCリクエストが必要な場合のみにしてください。

  • リバースプロキシおよびアプリケーションプラットフォームで、認可ヘッダー、リクエストボディ、レスポンスボディのログ記録を無効にしてください。

  • プラットフォームがサポートする場合、アウトバウンドネットワークのエグレスをTyme Wear APIホストに制限してください。

  • パブリックURLホストだけが有効なホスト/オリジンでない場合は、明示的な --allowed-host--allowed-origin の値を設定してください。パブリックモードでは、すべてのルートで信頼できない Host ヘッダーを拒否し、ワイルドカード * のホスト/オリジン設定を拒否し、許可されたオリジンはパスを含まない正確な http(s) オリジンである必要があり、localhost 以外のオリジンはHTTPSを使用する必要があります。

利用可能なツール

認証とプロファイル

ツール

説明

tw_auth_status

認証ステータスとトークンの有効性を確認します

tw_get_profile

アスリートプロファイル(体重、身長、スポーツごとのVE目標(VT1、BP、VT2、VO2max)、サブスクリプションステータス、外部アカウント)を取得します

tw_update_profile

プロファイルフィールド(体重、身長、単位)を更新します

アクティビティ

ツール

説明

tw_get_activities

カーソルページネーションとスポーツ、アクティビティタイプ、検索、ユーザーID、プロチームのウェブサイトフィルターを使用してアクティビティを一覧表示します

tw_get_activity

アクティビティの詳細(継続時間、閾値、ゾーン、TSS、ファームウェア、サードパーティリンク)を取得します。大きな配列はデフォルトで要約されます。ローカルの stdio 呼び出し元は include=[...] を使用できます。パブリックモードでも、プロジェクトされたコンパクトデータを返します

tw_get_activity_analysis

読み取り専用のコンパクトな分析を取得します。タイムスタンプの調整、要約、ブレークポイント、明示的な機能、チャネルごとのソース/単位/カバレッジ/来歴、およびページネーション前にマージされたサンプルを含みます。include_location=true は分析サンプル座標のみをオプトインします

tw_get_activity_insights

アクティビティごとのコンパクトなレポートを取得します。VT1/VT2/エンデュランスのVE+HR+信頼度、測定された閾値パワー、検出されたブレークポイントタイム、ゾーンごとの時間/カロリー、品質フラグ、打ち切りテストフラグ、VE目標を含みます。テストとライドの両方で機能します

tw_get_activity_status

アクティビティのアルゴリズム処理ステータスを取得します

tw_pin_activity

閾値検出のためにアクティビティをピン/ピン解除します

tw_get_pinned_activity

現在ピンされているアクティビティを取得します

tw_delete_activity

アクティビティを削除します(元に戻せません)

呼吸データ

ツール

説明

tw_get_processed_data

ローカルのみ、秒単位の呼吸時系列データを要約、ウィンドウ、フルモードで取得します。パブリックモードでは代わりに tw_get_activity_analysis を使用します

tw_get_new_processed_data

ローカルのみ、新しいフォーマットの処理データが利用可能な場合に取得します。パブリックモードでは代わりに tw_get_activity_analysis を使用します

アクティビティファイルと検出

ツール

説明

tw_get_activity_logs

ローカルのみ、読み取り専用のアクティビティログ/イベントを取得します

tw_get_activity_strap_files

ローカルのみ、ストラップファイルのメタデータが利用可能な場合に取得します

tw_export_activity_strap_files

生のストラップファイルが利用可能な場合にエクスポートします

tw_get_activity_workout_zone_detection

ワークアウトゾーン検出(ゾーンごとの時間/カロリー、VT1/VT2 VE+HR+信頼度、推定パワー)を取得します。ポイントクラウドはデフォルトで要約されます。ローカルの stdio 呼び出し元は include=[...] を使用できます。パブリックモードでも、プロジェクトされたコンパクトデータを返します

トレーニングプランとワークアウト

ツール

説明

tw_get_training_plan

現在のトレーニングプランを取得します

tw_get_training_plan_by_date

指定された日のトレーニングプランデータを取得します

tw_get_training_plan_by_week

指定された週のトレーニングプランデータを取得します

tw_get_training_plan_history

トレーニングプランの履歴を取得します

tw_get_training_plan_config

トレーニングプランの設定を取得します

tw_get_training_plan_preview

トレーニングプランのプレビューを取得します

tw_get_workout_recommendation

ワークアウトの推奨を取得します

統合とアカウント

ツール

説明

tw_get_integrations

統合を一覧表示します

tw_get_integration

統合の詳細を取得します

tw_get_integration_health

統合のヘルス/ステータスを取得します

tw_get_subscription_status

サブスクリプションステータスを取得します

tw_get_subscription_plans

利用可能なサブスクリプションプランを取得します

tw_get_resting_max_values

安静時/最大生理値を取得します

閾値とゾーン

ツール

説明

tw_get_ve_targets

スポーツごとの現在のVE目標(VT1、BP、VT2、VO2max)

tw_compute_power_at_threshold

外部パワー系列([[t_seconds, watts], ...])を検出されたブレークポイントタイムに結合し、VT1/VT2/VO2max/FatMaxでの平均ワットを計算します。Tyme Wearがすでに記録しているパワーのクロスチェック/バックフィルです

tw_get_zone_distribution

アクティビティ全体のゾーン時間分布を取得します

tw_tag_threshold

特定のアクティビティからの換気閾値(vt1、vt2、bp、vo2max)をタグ付けします

tw_tag_new_zone

特定のアクティビティからの新しいモデルゾーン値(fatmax、vt1、vt2、vo2max)をタグ付けします

最大値

ツール

説明

tw_get_max_value_detections

保留中の最大値検出通知を一覧表示します

tw_respond_max_value

検出された最大値を受け入れるか却下します

エクスポート

ツール

説明

tw_export_csv

アクティビティをCSVとしてエクスポート

tw_export_csv_full

全データチャンネルを含む完全なCSVをエクスポート

tw_export_fit

アクティビティをFITファイルとしてエクスポート

プロンプト例

設定後、Claudeに次のような質問ができます:

  • "最後の10件の自転車アクティビティを表示して"

  • "昨日のライドの呼吸データを分析して — 平均VEと各ゾーンにいた時間は?"

  • "現在のサイクリングにおけるVT1とVT2の閾値は?"

  • "最後の閾値テストのインサイトを取得して — VT2でのパワーと、VO2maxに達したかどうかは?"

  • "最後のアクティビティをFITファイルとしてエクスポートして"

  • "ランニングとサイクリングのVE目標を比較して"

  • "現在のトレーニングプランとワークアウトの推奨を表示して"

  • "最新のライドにストラップファイル、ログ、ワークアウトゾーン検出結果があるか確認して"

  • "接続済みの連携とサブスクリプションステータスを一覧表示して"

セキュリティ

  • 認証情報はシステムキーリング(推奨)またはAES-256-GCM暗号化ファイル(PBKDF2鍵導出、60万回反復、マシン固有のソルト)に保存

  • トークンと認証情報は決してMCPツールの結果に返されません(Claudeに到達する前にサニタイズされます)

  • CI/コンテナ向けに環境変数認証が利用可能:TYMEWEAR_EMAIL + TYMEWEAR_PASSWORD

  • 暗号化された認証情報ファイルのファイルパーミッションは600(所有者のみ読み取り/書き込み)に設定

  • パブリックモードではベアラーまたはOAuth認証が必要で、シングルテナントです:上流のTyme Wear認証はサーバーサイドのTYMEWEAR_EMAIL/TYMEWEAR_PASSWORD環境変数を使用(ローカルのキーリングや暗号化ファイルは使用しません。これらはサーバーレスでは読み取り専用です)。すべての結果はプライバシーが保護され、raw/ファイル/エクスポートツールは無効化されています

アーキテクチャ

tymewear-mcp/
├── src/tymewear_mcp/
│   ├── cli.py              # CLI entry point
│   ├── server.py           # MCP server + 40 tool registrations
│   ├── public.py           # Public Streamable HTTP server + bearer/OAuth auth
│   ├── auth/               # Credential storage (keyring → encrypted → env) + OIDC verifier (oidc.py)
│   ├── client/             # Async HTTP client + Pydantic models
│   └── tools/              # Tool implementations (incl. threshold_analysis.py, _slimming.py)
└── tests/                  # 340 tests

技術スタック: Python 3.10+、MCP SDK、httpx、Pydantic、keyring、cryptography、PyJWT

開発

pip install -e ".[dev]"
pytest tests/ -v          # Run tests
ruff check src tests      # Lint
mypy src/                 # Type check

ライセンス

MIT

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

UpdatingMaintainers
UpdatingResponse time
Release cycle
0Releases (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 Servers

View all related MCP servers

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.

  • WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.

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/tkelkermans/tymewear-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server