Skip to main content
Glama
SkyBlob12

Strava MCP Server

by SkyBlob12

Strava MCP Server

Сервер протокола контекста модели (MCP), который подключает Claude к вашей учетной записи Strava. Попросите Claude на естественном языке проанализировать ваши тренировки, спрогнозировать время гонки, рассчитать тренировочные нагрузки или составить полный периодический план тренировок.

Возможности

  • 13 инструментов в 5 категориях: аутентификация, активности, анализ, прогнозирование, планирование

  • Процесс OAuth2 с автоматическим локальным сервером обратного вызова — никакого ручного копирования кода

  • Темп тренировок на основе VDOT (формула бега Джека Дэниелса)

  • Метрики тренировочной нагрузки CTL/ATL/TSB (хроническая/острая тренировочная нагрузка, баланс тренировочного стресса)

  • Прогнозирование времени гонки по формуле Ригеля

  • Полные периодические планы тренировок (База → Подготовка → Пик → Подводка) с логикой, специфичной для гонки

Требования

  • Node.js ≥ 18

  • Учетная запись Strava

  • Claude Desktop (или любой клиент, совместимый с MCP)


Настройка

1. Создайте приложение Strava API

Перейдите на strava.com/settings/api и создайте приложение.

  • Домен обратного вызова авторизации: 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.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, либо блок env в конфигурации Claude Desktop — оба варианта работают.

5. Аутентификация

Перезапустите Claude Desktop, затем в диалоге:

  1. Вызовите strava_get_auth_url — Claude вернет URL

  2. Откройте URL в браузере и авторизуйте приложение в Strava

  3. На странице появится надпись "✓ Authentification réussie !", и токены будут сохранены автоматически


Доступные инструменты

Аутентификация

Инструмент

Описание

strava_get_auth_url

Генерирует URL OAuth2 и запускает локальный сервер обратного вызова

strava_exchange_token

Ручной резервный вариант: обмен кода авторизации на токены

strava_auth_status

Проверка валидности токенов и срока их действия

Активности

Инструмент

Описание

strava_get_activities

Список недавних активностей (бег, вело, ходьба, все) с дистанцией, темпом, ЧСС

strava_get_activity_detail

Полная информация об одной активности: сплиты по км, круги, калории

strava_athlete_stats

Глобальная статистика Strava: за эту неделю, за этот год, за все время

Анализ

Инструмент

Описание

strava_analyze_training

Разбивка недельного объема + оценка стабильности

strava_training_load

CTL (форма) / ATL (усталость) / TSB (свежесть) через TRIMP

strava_pace_zones

Распределение по 6 зонам темпа, проверка правила 80/20

Прогнозирование

Инструмент

Описание

strava_predict_race_time

Прогноз времени финиша по формуле Ригеля на основе эталонного усилия

strava_vdot

Расчет показателя VDOT + 5 зон тренировочного темпа на основе любого результата гонки

Планирование тренировок

Инструмент

Описание

strava_generate_training_plan

Полный периодический план с сегодняшнего дня до дня гонки (База/Подготовка/Пик/Подводка)

strava_weekly_workout

Генерация тренировок только на следующую неделю для заданной фазы


Детали плана тренировок

Фазы

Фаза

Фокус

Интенсивность

База

Аэробная база

Легкий бег, длительный бег, ускорения

Подготовка

Лактатный порог

Темповый бег, легкий средний, длительный бег

Пик

VO2max + специфика гонки

Интервалы, темп, длительный бег

Подводка

Свежесть

Сниженный объем, поддержание качества

Как рассчитывается объем

  1. Начальный объем — смесь вашего 4-недельного среднего в км и оценки недельного км на основе CTL (устойчиво к перерывам из-за травм)

  2. Пиковый объем — 1.4× текущего, с минимальными значениями для конкретной гонки (5К: 40км, 10К: 50км, Полумарафон: 60км, Марафон: 80км)

  3. Недельный прогресс — ограничен +10% в неделю для предотвращения травм

  4. Восстановительные недели — автоматически каждая 4-я неделя внутри каждой фазы (объем × 0.8)

Логика, специфичная для гонки

  • Марафон (Подготовка и Пик): Длительные пробежки включают секцию в темпе марафона (~45% пробежки в темпе гонки)

  • Глубина подводки: 5К снижается до 80% от пикового объема, Марафон до 40% — короткие гонки требуют меньше восстановления

  • Интервалы: 6 × 1000м для 5К/10К, 5 × 1000м для Полумарафона/Марафона

VDOT и зоны темпа

Основано на формуле бега Джека Дэниелса. Зоны рассчитываются как доля от VDOT:

Зона

% от VDOT

Использование

Легкая

65%

Ежедневные пробежки, длительный бег

Марафон

80%

Секции в темпе марафона

Порог

86%

Темповые пробежки

Интервал

98%

Интервалы VO2max

Повторение

105%

Скоростная работа / ускорения


Создание планов для друзей (ручной режим)

strava_generate_training_plan поддерживает ручной режим, который полностью обходит Strava. Передайте current_weekly_km и goal_time вместе, и учетная запись Strava не потребуется — полезно для создания планов для друзей из вашего собственного Claude Desktop.

Обязательные параметры

Параметр

Описание

Пример

target_race

Дистанция гонки

"Marathon"

race_date

Дата гонки (ГГГГ-ММ-ДД)

"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_km, и goal_time, инструмент пропускает все вызовы API Strava. Поле 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