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

Я бегаю. Не профессионально, но регулярно — несколько раз в неделю. Тренера у меня нет, но хочется бегать правильно: не перетренироваться, следить за пульсом, прогрессировать, пробежать этот злополучный марафон, в конце концов.
Полгода назад я прочитал "От 800 метров до марафона" Джека Дэниелса (нет, не того, который бурбон — хотя после марафона, говорят, и он помогает). С тех пор активно использую AI-ассистентов для анализа тренировок. Загружал им свои данные, спрашивал совета по плану, обсуждал технику.
Но было одно неудобство: каждый раз приходилось вручную давать ассистенту информацию о пробежках. Скриншоты из Strava, цифры дистанции и пульса, описание ощущений. Это занимало время и отбивало желание спрашивать часто.
Решение нашлось — подключить Strava напрямую к Claude через MCP (Model Context Protocol). Теперь все данные о тренировках доступны ассистенту мгновенно после пробежки.
Что такое MCP
MCP — это протокол, позволяющий Claude подключаться к внешним сервисам. Вместо того чтобы копировать данные вручную, Claude получает доступ к API сервиса и может сам запрашивать нужную информацию.
Какие варианты пробовал
Существует несколько MCP-серверов для Strava:
- strava-mcp от yorrickjansen — падает с ошибкой из-за несовместимости с новой версией FastMCP
- strava-activity-mcp-server — имена инструментов не соответствуют требованиям Claude
- @r-huijts/strava-mcp-server — битый npm-пакет, не хватает файлов
В итоге заработал strava-mcp-server от tomekkorbak.
Инструкция по подключению
Если хотите настроить так же — ниже пошаговая инструкция. Понадобится минут 10 и базовое знание командной строки.
Шаг 1: Создаём приложение в Strava
Strava не даёт доступ к данным напрямую — нужны специальные токены для работы с API. Единственный способ их получить — зарегистрировать своё "приложение" в Strava. Звучит сложно, но на деле это просто форма на сайте.
- Заходим на strava.com/settings/api
- Создаём новое приложение
- В поле "Authorization Callback Domain" указываем
localhost - Сохраняем 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 дней
Профессионального тренера это не заменит, но для любителя — отличный инструмент для рефлексии и отслеживания прогресса. Пользуйтесь!