Skip to main content
Glama
SkyBlob12

Strava MCP Server

by SkyBlob12

Strava MCPサーバー

ClaudeをStravaアカウントに接続するためのModel Context Protocol (MCP) サーバーです。Claudeに自然言語で話しかけるだけで、トレーニングの分析、レースタイムの予測、トレーニング負荷の計算、または完全なピリオダイゼーション(期分け)トレーニング計画の生成が可能です。

機能

  • 5つのカテゴリ(認証、アクティビティ、分析、予測、計画)にわたる13のツール

  • 自動ローカルコールバックサーバーを備えたOAuth2フロー — 手動でのコードコピーは不要

  • VDOTベースのトレーニングペース(ジャック・ダニエルズのランニング・フォーミュラ)

  • CTL/ATL/TSBトレーニング負荷メトリクス(慢性/急性トレーニング負荷、トレーニングストレスバランス)

  • Riegelの式によるレースタイム予測

  • レース特有のロジックを組み込んだ完全なピリオダイゼーション(ベース → ビルド → ピーク → テーパー)トレーニング計画

要件

  • Node.js ≥ 18

  • Stravaアカウント

  • Claude Desktop(またはMCP互換クライアント)


セットアップ

1. Strava APIアプリケーションの作成

strava.com/settings/api にアクセスし、アプリケーションを作成します。

  • Authorization Callback Domain: localhost

Client IDClient Secret を控えておいてください。

2. 環境変数の設定

cp .env.example .env

.env を編集します:

STRAVA_CLIENT_ID=your_client_id
STRAVA_CLIENT_SECRET=your_client_secret
STRAVA_REDIRECT_URI=http://localhost:8080/callback
TOKENS_FILE_PATH=./tokens.json

3. ビルド

npm install
npm run build

4. Claude Desktopの設定

%APPDATA%\Claude\claude_desktop_config.json (Windows) または ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) を編集します:

{
  "mcpServers": {
    "strava": {
      "command": "node",
      "args": ["C:/path/to/McpStrava/dist/index.js"],
      "env": {
        "STRAVA_CLIENT_ID": "your_client_id",
        "STRAVA_CLIENT_SECRET": "your_client_secret",
        "TOKENS_FILE_PATH": "C:/path/to/McpStrava/tokens.json"
      }
    }
  }
}

.env ファイルまたはClaude Desktop設定内の env ブロックのどちらでも使用可能です。

5. 認証

Claude Desktopを再起動し、会話の中で以下を行います:

  1. strava_get_auth_url を呼び出す — ClaudeがURLを返します

  2. ブラウザでそのURLを開き、Stravaでアプリを承認します

  3. ページに "✓ Authentification réussie !" と表示され、トークンが自動的に保存されます


利用可能なツール

認証

ツール

説明

strava_get_auth_url

OAuth2 URLを生成し、ローカルコールバックサーバーを開始します

strava_exchange_token

手動フォールバック:認証コードをトークンと交換します

strava_auth_status

トークンが有効かどうか、および有効期限を確認します

アクティビティ

ツール

説明

strava_get_activities

最近のアクティビティ(ラン、ライド、ウォーク、すべて)を距離、ペース、心拍数とともに一覧表示します

strava_get_activity_detail

アクティビティの詳細:kmごとのスプリット、ラップ、消費カロリー

strava_athlete_stats

Stravaのグローバル統計:今週、今年、全期間

分析

ツール

説明

strava_analyze_training

週ごとのボリューム内訳と一貫性スコア

strava_training_load

TRIMPによるCTL(フィットネス)/ ATL(疲労)/ TSB(フレッシュネス)

strava_pace_zones

6つのペースゾーンにわたる分布、80/20ルールのチェック

予測

ツール

説明

strava_predict_race_time

基準となる記録からRiegelの式を用いて完走タイムを予測します

strava_vdot

レース結果からVDOTスコアと5つのトレーニングペースゾーンを計算します

トレーニング計画

ツール

説明

strava_generate_training_plan

今日からレース当日までの完全なピリオダイゼーション計画(ベース/ビルド/ピーク/テーパー)

strava_weekly_workout

指定したフェーズの来週分のセッションのみを生成します


トレーニング計画の詳細

フェーズ

フェーズ

焦点

強度

ベース

有酸素運動の基礎

イージーラン、ロングラン、ストライド

ビルド

乳酸閾値

テンポ走、イージーミディアム、ロングラン

ピーク

VO2max + レース特化

インターバル、テンポ走、ロングラン

テーパー

フレッシュネス

ボリュームの削減、質の維持

ボリュームの計算方法

  1. 開始ボリューム — 過去4週間の平均kmとCTLから導き出された週次km推定値のブレンド(怪我による中断にも対応)

  2. ピークボリューム — 現在の1.4倍。レースごとの最低基準あり(5K: 40km, 10K: 50km, ハーフ: 60km, マラソン: 80km)

  3. 週次進行 — 怪我を防ぐため、週あたり最大+10%に制限

  4. 回復週 — 各フェーズ内の4週目ごとに自動設定(ボリューム × 0.8)

レース特有のロジック

  • マラソン (ビルド & ピーク): ロングランにはマラソンペース区間を含む(ランの約45%をレースペースで実施)

  • テーパーの深さ: 5Kはピークボリュームの80%まで、マラソンは40%までテーパー — 短いレースほど回復の必要性が低い

  • インターバル: 5K/10Kは 6 × 1000m、ハーフ/マラソンは 5 × 1000m

VDOTとペースゾーン

ジャック・ダニエルズのランニング・フォーミュラに基づいています。ゾーンはVDOTの割合として計算されます:

ゾーン

VDOTの割合

用途

イージー

65%

日々のラン、ロングラン

マラソン

80%

マラソンペース区間

閾値

86%

テンポ走

インターバル

98%

VO2maxインターバル

レペティション

105%

スピード練習 / ストライド


友人向けの計画生成(手動モード)

strava_generate_training_plan は、Stravaを完全にバイパスする手動モードをサポートしています。current_weekly_kmgoal_time を同時に渡すことで、Stravaアカウントなしで計画を生成できます。自身のClaude Desktopから友人の計画を作成するのに便利です。

必須パラメータ

パラメータ

説明

target_race

レース距離

"Marathon"

race_date

レース日 (YYYY-MM-DD)

"2026-10-18"

goal_time

目標完走タイム

"3:45:00"

current_weekly_km

現在の週次走行距離

55

プロンプト例

Génère un plan marathon pour mon ami, il court 55km par semaine et vise 3h45, la course est le 18 octobre 2026
Mon amie veut courir un semi-marathon en 1h50 le 2026-09-14, elle fait environ 40km par semaine

current_weekly_kmgoal_time の両方が提供されると、ツールはすべてのStrava API呼び出しをスキップします。レスポンス内の resume には、どのモードが使用されたかを確認するために source_volume: "Fourni manuellement" が含まれます。

モード比較

Stravaモード

手動モード

Stravaアカウントが必要

はい

いいえ

ボリュームの調整

4週平均 + CTL

提供された値

VDOT推定

最近のアクティビティまたは goal_time から

goal_time から(必須)

ユースケース

自分自身のトレーニング

Stravaを使用していない友人/アスリート


開発

# Watch mode (no build step needed)
npm run dev

# Build TypeScript
npm run build

# Run built server
npm start

# Clean build artifacts
npm run clean

プロジェクト構造

src/
├── index.ts                  # MCP server entry point
├── config.ts                 # Env vars, Strava constants, race distances
├── types.ts                  # Shared TypeScript interfaces
├── auth/
│   ├── oauth.ts              # OAuth2 URL builder, token exchange
│   ├── tokenStore.ts         # Load/save tokens.json, expiry check
│   ├── callbackServer.ts     # Local HTTP server for OAuth redirect
│   └── authTools.ts          # MCP auth tools
├── strava/
│   ├── client.ts             # Axios instance with auto token refresh
│   ├── activities.ts         # Strava activities API
│   ├── athlete.ts            # Strava athlete/stats API
│   └── activityTools.ts      # MCP activity tools
├── analytics/
│   ├── metrics.ts            # Weekly stats, pace zones, consistency score
│   ├── trainingLoad.ts       # TRIMP, CTL/ATL/TSB computation
│   └── analysisTools.ts      # MCP analysis tools
├── prediction/
│   ├── riegel.ts             # Riegel race time prediction formula
│   ├── vdot.ts               # VDOT computation, training paces, race equivalents
│   └── predictionTools.ts    # MCP prediction tools
└── planning/
    ├── workouts.ts           # Workout templates and distance bounds
    ├── plan.ts               # Plan generation, phase allocation, VDOT estimation
    └── planTools.ts          # MCP planning tools

トークン

tokens.json はStravaのアクセストークンとリフレッシュトークンを保存します。これは .gitignore に含まれているため、絶対にコミットしないでください。トークンは期限切れになると自動的に更新されます(Stravaのアクセストークンの有効期限は6時間です)。


プロンプト例

Stravaモード(自分のアカウント)

Analyse mes 8 dernières semaines d'entraînement
Quelle serait mon heure sur un marathon si je cours un 10K en 45min ?
Génère-moi un plan d'entraînement pour un semi-marathon le 2026-09-20
Calcule ma charge d'entraînement actuelle et dis-moi si je suis en forme pour une course ce week-end
Montre-moi la répartition de mes allures sur les 4 dernières semaines

手動モード(友人 / Stravaなし)

Génère un plan marathon pour mon ami, il court 55km par semaine et vise 3h45, la course est le 18 octobre 2026
Mon amie veut courir un semi-marathon en 1h50 le 14 septembre 2026, elle fait 40km par semaine

ライセンス

MIT

Install Server
F
license - not found
A
quality
-
maintenance - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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/SkyBlob12/McpStrava'

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