使用说明
Strava MCP服务器
用于Strava API的模型上下文协议(MCP)服务器。为Claude提供工具,用于获取和分析您的Strava活动、运动员统计数据和装备。
特性
- 自动OAuth流 -首次运行时打开浏览器进行授权
- 令牌管理 -自动刷新访问令牌,安全地存储在XDG目录中
- 智能缓存 -缓存运动员档案和装备数据,以减少API调用
- 综合工具 -访问活动、流媒体、照片、统计数据和装备
设置
先决条件
- Python 3.13+
- Strava API证书(客户ID和机密)
uv包管理器
获取Strava API证书
- 首选https://www.strava.com/settings/api
- 创建应用程序
- 注意你的 客户端ID 和 客户端密钥
- 集 授权回调域 到
localhost
安装
cd strava-mcp
uv sync
配置凭据
创建 ~/.config/strava/credentials.sh:
mkdir -p ~/.config/strava
cat > ~/.config/strava/credentials.sh << 'EOF'
export STRAVA_CLIENT_ID=YOUR_CLIENT_ID
export STRAVA_CLIENT_SECRET=YOUR_CLIENT_SECRET
EOF
替换 YOUR_CLIENT_ID 和 YOUR_CLIENT_SECRET 凭你的真实证件。
用法
独立测试
source ~/.config/strava/credentials.sh
uv run python -m strava_mcp
第一次运行时,这将:
- 打开浏览器进入Strava的授权页面
- 等待您批准访问
- 将代币存储在
~/.local/share/strava-mcp/tokens.json - 启动MCP服务器
MCP配置
在您的Claude Code项目中,创建或更新 .mcp.json:
{
"strava": {
"command": "bash",
"args": [
"-c",
"source ~/.config/strava/credentials.sh && cd /absolute/path/to/strava-mcp && uv run python -m strava_mcp"
]
}
}
更新 /absolute/path/to/strava-mcp 到实际路径。
可用工具
get_recent_activities
使用分页获取最近的活动。
- 参数:
per_page(默认值30),page(默认值1) - 退货:活动摘要列表
get_activity
获取单个活动的详细信息。
- 参数:
activity_id - 退货:完整的活动细节,包括分段和拆分
get_activity_streams
获取时间序列数据(HR、功率、节奏、温度等)
- 参数:
activity_id,keys(逗号分隔的流类型) - 退货:流数据数组
get_athlete
获取您的运动员档案(缓存1天)。
- 参数:
refresh(bool,强制缓存刷新) - 退货:运动员资料,包括ID、姓名、体重等。
get_athlete_stats
获取年度和历史统计数据。
- 退货:最近/ytd/历史总距离、海拔、时间
get_activity_photos
将照片附加到活动中。
- 参数:
activity_id,size(像素,默认值600) - 退货:照片数据列表
get_gear
拿上你的自行车和鞋子(缓存一周)。
- 参数:
refresh(bool,强制缓存刷新) - 退货:用“自行车”和“鞋子”列表骰子
reauthorize
强制一个新的OAuth流(如果作用域发生变化,则很有用)。
- 退货:成功消息
数据存储
所有数据都存储在XDG兼容目录中:
- 代币:
~/.local/share/strava-mcp/tokens.json - 运动员缓存:
~/.local/share/strava-mcp/athlete.json - 齿轮缓存:
~/.local/share/strava-mcp/gear.json
速率限制
Strava API限值:
- 每15分钟200个请求
- 每天2000次请求
此服务器在适当的情况下缓存数据,以最大限度地减少API调用。
故障排除
“授权失败”
- 检查您的客户ID和密码是否正确
- 确保回调域设置为
localhost在Strava API设置中
“令牌刷新失败”
- 跑
reauthorize触发新OAuth流的工具 - 或手动删除
~/.local/share/strava-mcp/tokens.json
速率限制错误
- 等待错误消息中指定的时间
- 考虑使用缓存工具(
get_athlete,get_gear)而不是新的请求
发展
运行测试:
uv run pytest
格式代码:
uv run ruff format .
许可证
麻省理工学院