斯特拉瓦训练MCP
 
全面 模型上下文协议 (MCP)服务器,提供对Strava API的完全访问,该API专为马拉松训练和比赛分析而设计。此服务器使语言模型能够查询详细的运动员数据、分析训练模式、跟踪表现指标和计划比赛。
特性
- 综合活动数据:访问详细的活动信息,包括步速、心率、功率、步频、GPS坐标等
- 训练分析:每周和每月的训练指标、速度趋势和长期分析
- 详细流:用于分析整个活动绩效的时间序列数据
- 搭接和拼接:分析配速一致性和分段,为比赛做准备
- 区域分析:用于训练强度分析的心率和功率区数据
- 运动员统计:年初至今的总数、个人记录和成就跟踪
- 马拉松训练工具:心率区域分析、训练负荷监测、损伤风险检测和恢复分析
- 内置身份验证:使用MCP工具简化OAuth流程-不需要单独的脚本
- 多个传输:支持stdio、SSE和可流式传输的http
安装
使用紫外线(推荐)
# Clone the repository
git clone
cd strava-training-mcp
# Install dependencies
uv sync
# Run the server
uv run src/server.py --transport sse --port 9186使用pip
pip install strava-training-mcp快速开始
- 获取Strava API证书 从 Strava API设置
- 启动服务器 (它将指导您完成身份验证)
- 使用MCP工具 验证和查询您的Strava数据
看 快速启动.md 有关详细的身份验证说明。
可用工具
身份验证和设置
get_strava_auth_token(client_id, client_secret, auth_code):一步完成身份验证(推荐)save_credentials(client_id, client_secret):保存您的Strava API证书get_auth_url(redirect_uri):使用存储的凭据获取授权URLcomplete_strava_auth(auth_code):使用授权码完成身份验证check_auth_status():检查是否配置了身份验证以及令牌是否可用
基本活动查询
get_activities(limit):获取最近的活动get_activities_by_range(start_date, end_date, limit):获取日期范围内的活动get_activity_by_id(activity_id):获取特定活动的详细信息get_recent(days, limit):获取过去X天的活动get_runs_by_range(start_date, end_date, limit):获取日期范围内的跑步活动
详细活动分析
get_activity_streams(activity_id, keys):获取时间序列数据(心率、步速、功率、步频、GPS等)get_activity_laps(activity_id):获取圈数/分段数以分析配速一致性get_activity_zones(activity_id):获取心率和功率区数据
运动员统计
get_athlete_stats(athlete_id):获取运动员统计数据,包括年初至今的总数、PR和成绩
训练分析
analyze_weekly(start_date, end_date):分析每周培训指标analyze_monthly(year, month):分析月度培训和每周细分find_long_runs(start_date, end_date, min_distance_km):查找日期范围内的长跑analyze_pace_trends(start_date, end_date):分析随时间变化的速度趋势
心率区和损伤预防
analyze_hr_zones(start_date, end_date):分析心率区域分布(80/20原理)analyze_training_load(start_date, end_date):分析训练负荷并确定受伤风险指标analyze_hr_trends(start_date, end_date, reference_pace_min_per_km):跟踪心率趋势以监测健康状况的改善analyze_recovery(start_date, end_date):分析恢复模式,包括休息日和训练压力分布
注: 日期应以ISO格式提供(YYYY-MM-DD).用法
Claude桌面版
更新您的 claude_desktop_config.json:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json\ 窗户: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"strava": {
"command": "uvx",
"args": ["strava-training-mcp"],
"env": {
"STRAVA_CLIENT_ID": "YOUR_CLIENT_ID",
"STRAVA_CLIENT_SECRET": "YOUR_CLIENT_SECRET",
"STRAVA_REFRESH_TOKEN": "YOUR_REFRESH_TOKEN"
}
}
}
}本地运行
# SSE transport (recommended for remote connections)
uv run src/server.py --transport sse --port 9186
# Streamable-http transport (stateless HTTP POST)
uv run src/server.py --transport streamable-http --port 9186
# stdio transport (default, for local use)
uv run src/server.py --transport stdio查询示例
认证
- “检查我的Strava身份验证状态”
- “保存我的Strava凭据:client_id=12345,client_secret=abc123”
- “获取Strava OAuth的授权URL”
- “使用代码XYZ789完成Strava身份验证”
基本查询
- “我最近的活动是什么?”
- “显示我上周的活动”
- “在过去的一个月里,我跑得最长的是什么?”
- “获取我最近跑步的详细信息”
马拉松训练分析
- “分析我上周的每周训练”
- “显示我过去一个月的长跑记录”
- “过去3个月我的节奏趋势是什么?”
- “分析我2024年1月的训练”
心率区和损伤预防
- “分析我过去一个月的心率区域”
- “检查我过去4周的训练负荷和受伤风险”
- “显示我过去3个月的心率趋势”
- “分析我的恢复模式——我是否得到了足够的休息?”
活动数据格式
服务器返回具有一致字段名称和单位的活动数据:
| 字段 | 描述 | 单位 |
|---|---|---|
id | 活动ID | - |
name | 活动名称 | - |
sport_type | 运动类型 | - |
start_date | 开始日期和时间 | ISO 8601 |
distance_metres | 距离 | 米 |
elapsed_time_seconds | 总运行时间 | 秒 |
moving_time_seconds | 移动时间 | 秒 |
average_speed_mps | 平均速度 | 米每秒 |
max_speed_mps | 最大速度 | 米每秒 |
average_cadence_rpm | 平均节奏 | 每分钟转数 |
average_heartrate_bpm | 平均心率 | 每分钟心跳次数 |
max_heartrate_bpm | 最大心率 | 每分钟心跳次数 |
average_watts | 平均功率 | 瓦 |
weighted_average_watts | 加权平均功率 | 瓦 |
kilojoules | 能量输出 | 千焦 |
total_elevation_gain_metres | 总高程增益 | 米 |
elev_high_metres | 最高海拔 | 米 |
elev_low_metres | 最低海拔 | 米 |
calories | 燃烧的卡路里 | kcal |
workout_type | 训练类型(0=默认,1=比赛,2=长跑,3=训练) | - |
suffer_score | 感知运动得分 | - |
start_latlng | 起始坐标 | \[lat,lng\] |
end_latlng | 终点坐标 | \[lat,lng\] |
发展
项目结构
strava-training-mcp/
├── src/
│ ├── server.py # Main MCP server implementation
│ ├── client.py # Strava API client wrapper
│ ├── tools.py # MCP tool definitions
│ └── auth.py # Authentication utilities
├── README.md
├── QUICK_START.md
├── AUTHENTICATION.md
├── STEP_BY_STEP_AUTH.md
└── pyproject.toml运行测试
# Run linting
uv run ruff check src/
# Type checking
uv run mypy src/认证
MCP服务器包括内置的身份验证工具。看 认证.md 详细说明。
快速身份验证
- 从获取您的客户ID和客户密码 Strava API设置
- 使用MCP工具:
get_strava_auth_token(client_id, client_secret, auth_code) - 重新启动服务器
有关分步说明,请参阅 STEP_BY_STEP_AUTH.md.
许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
学分
该项目的灵感来自并建立在以下优秀作品的基础上 托梅克/斯特拉瓦mcp服务器原始项目为这个增强版本提供了基础和灵感,该版本增加了全面的训练分析功能、改进的身份验证流程和马拉松专用工具。
贡献
欢迎投稿!请随时提交拉取请求。
