Strava MCP Server
Strava MCP 服务器
一个将 Claude 连接到您的 Strava 账户的模型上下文协议 (MCP) 服务器。通过自然语言要求 Claude 分析您的训练、预测比赛时间、计算训练负荷或生成完整的周期性训练计划。
功能
13 个工具,涵盖 5 个类别:认证、活动、分析、预测、规划
带有自动本地回调服务器的 OAuth2 流程 — 无需手动复制代码
基于 VDOT 的训练配速(Jack Daniels 的跑步公式)
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 并启动本地回调服务器 |
| 手动回退:将授权码交换为令牌 |
| 检查令牌是否有效及其过期时间 |
活动
工具 | 描述 |
| 列出最近的活动(跑步、骑行、步行、全部),包含距离、配速、心率 |
| 单个活动的完整详情:每公里分段、圈数、卡路里 |
| 全局 Strava 统计数据:本周、今年、历史总计 |
分析
工具 | 描述 |
| 每周训练量细分 + 一致性评分 |
| 通过 TRIMP 计算 CTL(体能)/ ATL(疲劳)/ TSB(新鲜度) |
| 分布在 6 个配速区间,80/20 法则检查 |
预测
工具 | 描述 |
| 通过 Riegel 公式根据参考表现预测完赛时间 |
| 根据任何比赛表现计算 VDOT 分数 + 5 个训练配速区间 |
训练规划
工具 | 描述 |
| 从今天到比赛日的完整周期性计划(基础/构建/巅峰/减量) |
| 仅生成给定阶段下周的训练课程 |
训练计划详情
阶段
阶段 | 重点 | 强度 |
基础 | 有氧基础 | 轻松跑、长距离跑、跨步跑 |
构建 | 乳酸阈值 | 节奏跑、中等强度跑、长距离跑 |
巅峰 | 最大摄氧量 + 比赛专项 | 间歇跑、节奏跑、长距离跑 |
减量 | 新鲜度 | 减少训练量,保持训练质量 |
训练量计算方式
起始训练量 — 结合您 4 周的平均公里数和基于 CTL 的每周公里数估算(对受伤中断具有鲁棒性)
巅峰训练量 — 当前的 1.4 倍,并设有比赛专项最低限额(5K: 40km, 10K: 50km, 半马: 60km, 全马: 80km)
每周进度 — 每周上限增加 +10%,以防止受伤
恢复周 — 每个阶段的第 4 周自动进行(训练量 × 0.8)
比赛专项逻辑
马拉松(构建期和巅峰期):长距离跑包含马拉松配速部分(约 45% 的跑步距离以比赛配速进行)
减量深度:5K 减量至巅峰训练量的 80%,马拉松减量至 40% — 短距离比赛需要的恢复较少
间歇跑:5K/10K 为 6 × 1000m,半马/全马为 5 × 1000m
VDOT 和配速区间
基于 Jack Daniels 的跑步公式。区间计算为 VDOT 的分数:
区间 | VDOT 百分比 | 用途 |
轻松 (Easy) | 65% | 日常跑、长距离跑 |
马拉松 (Marathon) | 80% | 马拉松配速部分 |
阈值 (Threshold) | 86% | 节奏跑 |
间歇 (Interval) | 98% | 最大摄氧量间歇跑 |
重复 (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 semaine当同时提供 current_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