Skip to main content
Glama
SkyBlob12

Strava MCP Server

by SkyBlob12

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 IDClient 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 파일이나 Claude Desktop 설정의 env 블록 중 하나를 사용할 수 있으며, 둘 다 작동합니다.

5. 인증

Claude Desktop을 재시작한 후 대화창에서 다음을 수행합니다:

  1. strava_get_auth_url 호출 — Claude가 URL을 반환합니다.

  2. 브라우저에서 해당 URL을 열고 Strava에서 앱을 승인합니다.

  3. 페이지에 **"✓ Authentification réussie !"**가 표시되며 토큰이 자동으로 저장됩니다.


사용 가능한 도구

인증

도구

설명

strava_get_auth_url

OAuth2 URL을 생성하고 로컬 콜백 서버를 시작합니다

strava_exchange_token

수동 대체: 인증 코드를 토큰으로 교환합니다

strava_auth_status

토큰 유효성 및 만료 시간 확인

활동

도구

설명

strava_get_activities

최근 활동(달리기, 라이딩, 걷기, 전체)을 거리, 페이스, 심박수와 함께 나열

strava_get_activity_detail

활동 상세 정보: km당 구간, 랩, 칼로리

strava_athlete_stats

전체 Strava 통계: 이번 주, 올해, 전체 기간

분석

도구

설명

strava_analyze_training

주간 볼륨 분석 + 일관성 점수

strava_training_load

TRIMP를 통한 CTL(체력) / ATL(피로) / TSB(컨디션)

strava_pace_zones

6개 페이스 구간 분포, 80/20 규칙 확인

예측

도구

설명

strava_predict_race_time

기준 기록을 바탕으로 Riegel 공식을 사용하여 완주 시간 예측

strava_vdot

모든 레이스 기록에서 VDOT 점수 + 5개 훈련 페이스 구간 계산

훈련 계획

도구

설명

strava_generate_training_plan

오늘부터 레이스 당일까지의 전체 주기화 계획 (기초/빌드/피크/테이퍼)

strava_weekly_workout

특정 단계에 대한 다음 주 세션만 생성


훈련 계획 상세

단계

단계

초점

강도

기초

유산소 기반

가벼운 달리기, 장거리 달리기, 스트라이드

빌드

젖산 역치

템포런, 중간 강도, 장거리 달리기

피크

VO2max + 레이스 특화

인터벌, 템포런, 장거리 달리기

테이퍼

컨디션 회복

볼륨 감소, 질적 유지

볼륨 계산 방식

  1. 시작 볼륨 — 4주 평균 km와 CTL 기반 주간 km 추정치의 혼합 (부상 휴식기에 강함)

  2. 피크 볼륨 — 현재의 1.4배, 레이스별 최소치 적용 (5K: 40km, 10K: 50km, 하프: 60km, 마라톤: 80km)

  3. 주간 진행 — 부상 방지를 위해 주당 최대 +10% 제한

  4. 회복 주간 — 각 단계 내 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_kmgoal_time을 함께 전달하면 Strava 계정 없이도 사용할 수 있습니다. 자신의 Claude Desktop에서 친구를 위한 계획을 생성할 때 유용합니다.

필수 매개변수

매개변수

설명

예시

target_race

레이스 거리

"Marathon"

race_date

레이스 날짜 (YYYY-MM-DD)

"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_kmgoal_time이 모두 제공되면 도구는 모든 Strava API 호출을 건너뜁니다. 응답의 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