Strava跑步教练MCP服务器
本地MCP服务器,将Claude Desktop连接到您的Strava数据,实现个性化的跑步教练体验。
特性
- Strava集成:访问您的培训数据、活动和PR
- 训练分析:每周/每月里程趋势和训练负荷
- 鞋履追踪:监控鞋子里程、磨损和使用模式
- 目标跟踪:设定并跟踪你的跑步目标
- 比赛日历:用进球时间管理即将到来的比赛
设置
1.创建Strava API应用程序
- 首选 Strava API设置
- 创建新应用程序:
- 应用程序名称:跑步教练(或任何名字) - 类别:培训 - 网站: http://localhost - 授权回调域:本地主机
- 注意你的 客户端ID 和 客户端密钥
2.安装依赖项
cd /Users/.../runcoach
pip install -e .或者直接安装依赖项:
pip install mcp httpx3.与Strava进行身份验证
运行身份验证流程:
python -m runcoach.auth这将:
- 询问您的客户ID和客户密码
- 打开浏览器进行Strava授权
- 将您的代币保存到
data/tokens.json
4.添加到克劳德桌面
将MCP服务器添加到您的Claude Desktop配置中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"runcoach": {
"command": "/path/to/python",
"args": ["-m", "runcoach.server"],
"cwd": "/path/to/runcoach"
}
}
}注: 使用Python可执行文件的完整路径(使用 which python 或 python -c "import sys; print(sys.executable)")以及runcoach目录的完整路径。
然后重新启动Claude Desktop。
可用工具
斯特拉瓦数据
| 工具 | 说明 |
|---|---|
get_athlete_profile | 您的Strava个人资料(姓名、位置、统计数据) |
get_recent_activities | 最后N次跑步,速度、距离、心率 |
get_activity_details | 在特定跑步中进行深潜(分段、圈) |
get_athlete_stats | 总体统计数据,包括历史总数 |
get_training_load | 每周/每月里程趋势 |
sync_all_activities | 将所有活动同步到本地缓存以进行历史分析 |
search_activities | 按年份、距离、类型搜索缓存的活动 |
get_yearly_stats | 按年份汇总的跑步统计数据 |
鞋履追踪
| 工具 | 说明 |
|---|---|
get_shoes | 列出所有鞋子的里程数、磨损状态和更换建议 |
get_shoe_usage | 分析你在不同跑步类型、距离和速度下使用的鞋子 |
目标和比赛
| 工具 | 说明 |
|---|---|
get_goals | 列出你的跑步目标 |
set_goal | 添加或更新目标 |
delete_goal | 删除目标 |
get_races | 列出即将到来的比赛 |
add_race | 添加即将到来的比赛 |
update_race | 更新比赛详细信息 |
delete_race | 删除比赛 |
示例提示
设置完成后,您可以向Claude询问以下问题:
基本活动查询
- “我最近跑得怎么样?”
- “我周六的10公里跑得怎么样?给我看看劈叉。”
- “过去一个月我的训练负荷是多少?”
- “向我展示今年以来所有超过20公里的跑步记录”
训练分析
- “我在不同心率区的平均步速是多少?”
- “在过去的6个月里,我的心率是否在相同的情况下有所改善?”
- “比较我1月和2月的培训量”
- “今年我的跑步成绩提高了多少?”
- “与去年相比,我今年的跑步表现更稳定了吗?”
性能洞察
- “根据我的10K PR,我应该设定什么样的马拉松时间?”
- “在过去的一年里,我的心率以马拉松的速度变化了多少?”
- “我在丘陵和平坦路线上的平均速度是多少?”
- “显示我在常规10公里路线上的进展”
- “我的长跑是越来越快,还是保持了更好的稳定性?”
目标设定和比赛准备
- “增加一个目标,在3月前跑完低于50分钟的10公里”
- 我将于10月13日3:30参加芝加哥马拉松比赛
- “根据我最近的训练,我准备好迎接即将到来的半程马拉松了吗?”
- “根据我目前的健康状况制定一个为期12周的马拉松训练计划”
历史分析
首先使用“同步我的所有Strava活动”同步您的数据,然后:
- “显示我的年度跑步统计数据”
- “查找2024年以来我的最长跑步记录”
- “比较我2023年和2024年的训练量”
- “在我最后一次马拉松比赛前的几周,我的训练高峰期是什么?”
- “在我最后一次马拉松训练中,我每周跑了多少次?”
鞋类管理
- “我有什么鞋,它们穿得多旧?”
- “我该退哪双鞋?”
- “我在快速锻炼和轻松跑步时穿哪双鞋?”
- “我的飞马座有多少公里?”
- “建议我这个周末长跑应该穿哪双鞋”
高级教练
- “我想在六月跑一场低于3:15的马拉松。根据我的个人记录和训练历史,这现实吗?”
- “分析我的心率数据——我是否在提高我的有氧效率?”
- “根据我以前做过的事情,我每周的最佳里程是多少?”
- “我将在4周后参加半程马拉松比赛。我应该逐渐减少,减少多少?”
文件结构
runcoach/
├── pyproject.toml # Project config
├── src/runcoach/
│ ├── __init__.py
│ ├── server.py # MCP server
│ ├── strava.py # Strava API client
│ ├── auth.py # OAuth management
│ └── storage.py # Local JSON storage
├── data/
│ ├── tokens.json # OAuth tokens (gitignored)
│ ├── goals.json # Your goals
│ └── races.json # Upcoming races
└── README.md故障排除
“未找到令牌”错误
运行身份验证流程:
python -m runcoach.auth令牌刷新失败
删除 data/tokens.json 并重新进行身份验证。
服务器未显示在Claude Desktop中
- 检查配置文件路径是否正确
- 确保Python可以找到该模块(试试
python -m runcoach.server手动) - 完全重新启动克劳德桌面
安全说明
data/tokens.json包含敏感的OAuth令牌并且是gitignore- 代币过期时自动刷新(Strava代币在6小时后过期)
- 只有您可以通过此本地服务器访问您的Strava数据
许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。
贡献
欢迎投稿!
致谢
- 建于 模型上下文协议(MCP)
- 由...驱动 API斯特拉瓦
