Strava MCP服务器
MCP(模型上下文协议)服务器,将Claude连接到Strava API,让Claude直接访问您的训练数据。
特性
- 运动员简介 --获取您的Strava个人资料信息
- 运动员统计 --一生和最近的总数(跑步、骑行、游泳)
- 活动 --列出最近的活动或按日期范围筛选
- 活动详情 --深入任何一项活动
- 活动流 --时间序列数据:GPS、心率、功率、节奏、高度
- 片段 --星级细分市场和细分市场详细信息
设置
1.创建Strava API应用程序
- 首选 strava.com/settings/api
- 创建应用程序--设置 授权回调域 到
localhost - 注意你的 客户端ID 和 客户端密钥
2.安装并授权
npm install
npm run setup安装向导将:
- 询问您的客户ID和客户密码
- 打开浏览器,使用Strava进行授权
- 自动捕获回调并交换令牌
- 写你的
.env文件
3.建造
npm run buildManual setup (alternative)
在浏览器中打开此URL(替换 CLIENT_ID):
https://www.strava.com/oauth/authorize?client_id=CLIENT_ID&response_type=code&redirect_uri=http://localhost&scope=read_all,activity:read_all授权后,您将被重定向到 http://localhost?code=AUTHORIZATION_CODE.复制代码并交换:
curl -s -X POST 'https://www.strava.com/oauth/token' \
-F 'client_id=CLIENT_ID' \
-F 'client_secret=CLIENT_SECRET' \
-F 'code=AUTHORIZATION_CODE' \
-F 'grant_type=authorization_code'保存 refresh_token 从响应中创建 .env 文件:
STRAVA_CLIENT_ID=your_client_id
STRAVA_CLIENT_SECRET=your_client_secret
STRAVA_REFRESH_TOKEN=your_refresh_token4.配置克劳德桌面
选项A:Docker(推荐)
构建Docker镜像:
docker build -t strava-mcp-server .编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"strava": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"--env-file", "/absolute/path/to/your/.env",
"strava-mcp-server"
]
}
}
}替换 /absolute/path/to/your/.env 与您的完整路径 .env 文件。
选项B:Node.js(本地)
{
"mcpServers": {
"strava": {
"command": "node",
"args": ["/Users/USERNAME/Apps/StravaMCP/dist/index.js"],
"env": {
"STRAVA_CLIENT_ID": "your_client_id",
"STRAVA_CLIENT_SECRET": "your_client_secret",
"STRAVA_REFRESH_TOKEN": "your_refresh_token"
}
}
}
}重新启动克劳德桌面。您应该在工具菜单(锤子图标)中看到可用的Strava工具。
可用工具
| 工具 | 说明 |
|---|---|
get_athlete | 获取您的Strava个人资料 |
get_athlete_stats | 获取生命周期和最近的统计数据 |
get_activities | 列出最近的活动(分页) |
get_activities_between | 获取日期范围内的所有活动(自动分页) |
get_activity | 获取一项活动的详细信息 |
get_activity_laps | 获取活动的圈速/分段数据 |
get_activity_zones | 获取人力资源和权力区域分布 |
get_activity_streams | 获取时间序列数据(GPS、HR、功率等) |
get_starred_segments | 获取您的星级片段 |
get_segment | 获取特定细分市场的详细信息 |
get_segment_efforts | 在细分市场上获得你的努力(使用可选的日期过滤器) |
示例提示
连接后,试着问克劳德:
- “我这周的活动是什么?”
- “分析我过去一个月的跑步表现”
- “比较我一月和二月的骑行时间”
- “显示我上次跑步的心率数据”
- “我的历史数据是什么?”
发展
# Run in dev mode (no build step)
npm run dev
# Build for production
npm run build
npm start许可证
麻省理工学院
