Strava MCP Server
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.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, либо блокenvв конфигурации Claude Desktop — оба варианта работают.
5. Аутентификация
Перезапустите Claude Desktop, затем в диалоге:
Вызовите
strava_get_auth_url— Claude вернет URLОткройте URL в браузере и авторизуйте приложение в Strava
На странице появится надпись "✓ Authentification réussie !", и токены будут сохранены автоматически
Доступные инструменты
Аутентификация
Инструмент | Описание |
| Генерирует URL OAuth2 и запускает локальный сервер обратного вызова |
| Ручной резервный вариант: обмен кода авторизации на токены |
| Проверка валидности токенов и срока их действия |
Активности
Инструмент | Описание |
| Список недавних активностей (бег, вело, ходьба, все) с дистанцией, темпом, ЧСС |
| Полная информация об одной активности: сплиты по км, круги, калории |
| Глобальная статистика Strava: за эту неделю, за этот год, за все время |
Анализ
Инструмент | Описание |
| Разбивка недельного объема + оценка стабильности |
| CTL (форма) / ATL (усталость) / TSB (свежесть) через TRIMP |
| Распределение по 6 зонам темпа, проверка правила 80/20 |
Прогнозирование
Инструмент | Описание |
| Прогноз времени финиша по формуле Ригеля на основе эталонного усилия |
| Расчет показателя VDOT + 5 зон тренировочного темпа на основе любого результата гонки |
Планирование тренировок
Инструмент | Описание |
| Полный периодический план с сегодняшнего дня до дня гонки (База/Подготовка/Пик/Подводка) |
| Генерация тренировок только на следующую неделю для заданной фазы |
Детали плана тренировок
Фазы
Фаза | Фокус | Интенсивность |
База | Аэробная база | Легкий бег, длительный бег, ускорения |
Подготовка | Лактатный порог | Темповый бег, легкий средний, длительный бег |
Пик | VO2max + специфика гонки | Интервалы, темп, длительный бег |
Подводка | Свежесть | Сниженный объем, поддержание качества |
Как рассчитывается объем
Начальный объем — смесь вашего 4-недельного среднего в км и оценки недельного км на основе CTL (устойчиво к перерывам из-за травм)
Пиковый объем — 1.4× текущего, с минимальными значениями для конкретной гонки (5К: 40км, 10К: 50км, Полумарафон: 60км, Марафон: 80км)
Недельный прогресс — ограничен +10% в неделю для предотвращения травм
Восстановительные недели — автоматически каждая 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.
Обязательные параметры
Параметр | Описание | Пример |
| Дистанция гонки |
|
| Дата гонки (ГГГГ-ММ-ДД) |
|
| Целевое время финиша |
|
| Текущий недельный километраж |
|
Примеры запросов
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 semaineКогда предоставлены и current_weekly_km, и goal_time, инструмент пропускает все вызовы API Strava. Поле 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