Strava MCP Server
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 ID と Client 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.json3. ビルド
npm install
npm run build4. 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を再起動し、会話の中で以下を行います:
strava_get_auth_urlを呼び出す — ClaudeがURLを返しますブラウザでそのURLを開き、Stravaでアプリを承認します
ページに "✓ Authentification réussie !" と表示され、トークンが自動的に保存されます
利用可能なツール
認証
ツール | 説明 |
| OAuth2 URLを生成し、ローカルコールバックサーバーを開始します |
| 手動フォールバック:認証コードをトークンと交換します |
| トークンが有効かどうか、および有効期限を確認します |
アクティビティ
ツール | 説明 |
| 最近のアクティビティ(ラン、ライド、ウォーク、すべて)を距離、ペース、心拍数とともに一覧表示します |
| アクティビティの詳細:kmごとのスプリット、ラップ、消費カロリー |
| Stravaのグローバル統計:今週、今年、全期間 |
分析
ツール | 説明 |
| 週ごとのボリューム内訳と一貫性スコア |
| TRIMPによるCTL(フィットネス)/ ATL(疲労)/ TSB(フレッシュネス) |
| 6つのペースゾーンにわたる分布、80/20ルールのチェック |
予測
ツール | 説明 |
| 基準となる記録からRiegelの式を用いて完走タイムを予測します |
| レース結果からVDOTスコアと5つのトレーニングペースゾーンを計算します |
トレーニング計画
ツール | 説明 |
| 今日からレース当日までの完全なピリオダイゼーション計画(ベース/ビルド/ピーク/テーパー) |
| 指定したフェーズの来週分のセッションのみを生成します |
トレーニング計画の詳細
フェーズ
フェーズ | 焦点 | 強度 |
ベース | 有酸素運動の基礎 | イージーラン、ロングラン、ストライド |
ビルド | 乳酸閾値 | テンポ走、イージーミディアム、ロングラン |
ピーク | VO2max + レース特化 | インターバル、テンポ走、ロングラン |
テーパー | フレッシュネス | ボリュームの削減、質の維持 |
ボリュームの計算方法
開始ボリューム — 過去4週間の平均kmとCTLから導き出された週次km推定値のブレンド(怪我による中断にも対応)
ピークボリューム — 現在の1.4倍。レースごとの最低基準あり(5K: 40km, 10K: 50km, ハーフ: 60km, マラソン: 80km)
週次進行 — 怪我を防ぐため、週あたり最大+10%に制限
回復週 — 各フェーズ内の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_km と goal_time を同時に渡すことで、Stravaアカウントなしで計画を生成できます。自身のClaude Desktopから友人の計画を作成するのに便利です。
必須パラメータ
パラメータ | 説明 | 例 |
| レース距離 |
|
| レース日 (YYYY-MM-DD) |
|
| 目標完走タイム |
|
| 現在の週次走行距離 |
|
プロンプト例
Génère un plan marathon pour mon ami, il court 55km par semaine et vise 3h45, la course est le 18 octobre 2026Mon amie veut courir un semi-marathon en 1h50 le 2026-09-14, elle fait environ 40km par semainecurrent_weekly_km と goal_time の両方が提供されると、ツールはすべてのStrava API呼び出しをスキップします。レスポンス内の resume には、どのモードが使用されたかを確認するために source_volume: "Fourni manuellement" が含まれます。
モード比較
Stravaモード | 手動モード | |
Stravaアカウントが必要 | はい | いいえ |
ボリュームの調整 | 4週平均 + CTL | 提供された値 |
VDOT推定 | 最近のアクティビティまたは |
|
ユースケース | 自分自身のトレーニング | 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înementQuelle 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-20Calcule ma charge d'entraînement actuelle et dis-moi si je suis en forme pour une course ce week-endMontre-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 2026Mon amie veut courir un semi-marathon en 1h50 le 14 septembre 2026, elle fait 40km par semaineライセンス
MIT
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