Назад к списку

AI-тренер по бегу: подключаем Strava к Claude

runningaimcpstrava
AI-тренер по бегу: подключаем Strava к Claude

Я бегаю. Не профессионально, но регулярно — несколько раз в неделю. Тренера у меня нет, но хочется бегать правильно: не перетренироваться, следить за пульсом, прогрессировать, пробежать этот злополучный марафон, в конце концов.

Полгода назад я прочитал "От 800 метров до марафона" Джека Дэниелса (нет, не того, который бурбон — хотя после марафона, говорят, и он помогает). С тех пор активно использую AI-ассистентов для анализа тренировок. Загружал им свои данные, спрашивал совета по плану, обсуждал технику.

Но было одно неудобство: каждый раз приходилось вручную давать ассистенту информацию о пробежках. Скриншоты из Strava, цифры дистанции и пульса, описание ощущений. Это занимало время и отбивало желание спрашивать часто.

Решение нашлось — подключить Strava напрямую к Claude через MCP (Model Context Protocol). Теперь все данные о тренировках доступны ассистенту мгновенно после пробежки.

Что такое MCP

MCP — это протокол, позволяющий Claude подключаться к внешним сервисам. Вместо того чтобы копировать данные вручную, Claude получает доступ к API сервиса и может сам запрашивать нужную информацию.

Какие варианты пробовал

Существует несколько MCP-серверов для Strava:

  1. strava-mcp от yorrickjansen — падает с ошибкой из-за несовместимости с новой версией FastMCP
  2. strava-activity-mcp-server — имена инструментов не соответствуют требованиям Claude
  3. @r-huijts/strava-mcp-server — битый npm-пакет, не хватает файлов

В итоге заработал strava-mcp-server от tomekkorbak.

Инструкция по подключению

Если хотите настроить так же — ниже пошаговая инструкция. Понадобится минут 10 и базовое знание командной строки.

Шаг 1: Создаём приложение в Strava

Strava не даёт доступ к данным напрямую — нужны специальные токены для работы с API. Единственный способ их получить — зарегистрировать своё "приложение" в Strava. Звучит сложно, но на деле это просто форма на сайте.

  1. Заходим на strava.com/settings/api
  2. Создаём новое приложение
  3. В поле "Authorization Callback Domain" указываем localhost
  4. Сохраняем Client ID и Client Secret

Шаг 2: Получаем authorization code

Открываем в браузере URL (подставив свой Client ID):

https://www.strava.com/oauth/authorize?client_id=ВАШ_CLIENT_ID&response_type=code&redirect_uri=http://localhost&scope=read,activity:read_all,profile:read_all

После авторизации браузер перенаправит на localhost с параметром code в URL. Копируем этот код.

Шаг 3: Обмениваем код на refresh token

В PowerShell выполняем:

$body = @{ client_id = "ВАШ_CLIENT_ID" client_secret = "ВАШ_CLIENT_SECRET" code = "ПОЛУЧЕННЫЙ_КОД" grant_type = "authorization_code" } Invoke-RestMethod -Uri "https://www.strava.com/oauth/token" -Method POST -Body $body

Из ответа сохраняем refresh_token.

Шаг 4: Настраиваем Claude Desktop

Открываем файл %APPDATA%\Claude\claude_desktop_config.json и добавляем:

{ "mcpServers": { "strava": { "command": "uvx", "args": ["strava-mcp-server"], "env": { "STRAVA_CLIENT_ID": "ваш_client_id", "STRAVA_CLIENT_SECRET": "ваш_client_secret", "STRAVA_REFRESH_TOKEN": "ваш_refresh_token" } } } }

Шаг 5: Настраиваем Claude Code (опционально)

Этот шаг нужен, только если вы используете Claude Code — терминальную версию Claude. Я использую её чаще, чем десктопное приложение: привык всё делать в терминале.

В файл ~\.claude.json в секцию mcpServers добавляем:

"strava": { "type": "stdio", "command": "uvx", "args": ["strava-mcp-server"], "env": { "STRAVA_CLIENT_ID": "ваш_client_id", "STRAVA_CLIENT_SECRET": "ваш_client_secret", "STRAVA_REFRESH_TOKEN": "ваш_refresh_token" } }

Как теперь этим пользоваться

Теперь после каждой пробежки я могу просто зайти в существующий чат (или создать новый) и спросить Claude:

— "Как тебе моя пробежка сегодня?" — "Покажи мои тренировки за неделю" — "Как думаешь, за какое время я смогу пробежать марафон через две недели?"

Claude сам обращается к Strava, получает данные и анализирует их. Никаких скриншотов, никакого ручного ввода. Пробежал — спросил — получил анализ.

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

  • get_activities — последние активности
  • get_activities_by_date_range — активности за период
  • get_activity_by_id — детали конкретной тренировки
  • get_recent_activities — активности за последние N дней

Профессионального тренера это не заменит, но для любителя — отличный инструмент для рефлексии и отслеживания прогресса. Пользуйтесь!

© 2026 Ivan Bezdenezhnykh. Все права защищены.