Strava MCP Server
Strava MCP 서버
Claude를 Strava 계정에 연결하는 모델 컨텍스트 프로토콜(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 비율 | 용도 |
Easy | 65% | 일상 달리기, 장거리 달리기 |
Marathon | 80% | 마라톤 페이스 구간 |
Threshold | 86% | 템포런 |
Interval | 98% | VO2max 인터벌 |
Repetition | 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