使用说明
Strava MCP服务器
使用AI与您的Strava数据对话。
将Claude连接到您的Strava帐户,并用简单的英语提问:“我这个月跑了多远?”、“分析我上一次骑行”或“给我看我跑得最快的分段”
你能用这个做什么?
连接后,只需像与可以访问您所有Strava数据的朋友交谈一样与Claude交谈:
🏃 跟踪您的进度
“这个月我跑了多少公里?”
“比较我1月至12月的跑步统计数据”
“我坐过的最长的车是什么?”
📊 分析你的锻炼计划
“分解我上一次的自行车锻炼——向我展示力量、心率和节奏”
“在昨天的跑步中,我的心率区域是什么样子的?”
“在间歇训练中,我每圈的平均速度是多少?”
🗺️ 探索路线和路段
“中央公园附近最受欢迎的自行车段是什么?”
“显示我的明星片段”
“将我的周日早晨路线导出为GPX文件”
🏆 获取教练见解
“分析我本周的训练负荷”
“我目前的健康状况与上个月相比如何?”
“给我总结一下我今年的自行车表现”
快速入门(3个步骤)
步骤1:添加到克劳德桌面
打开您的Claude Desktop配置文件:
- 苹果电脑:
~/Library/Application Support/Claude/claude_desktop_config.json - 视窗:
%APPDATA%\Claude\claude_desktop_config.json
将以下内容添加到文件中:
{
"mcpServers": {
"strava": {
"command": "npx",
"args": ["-y", "@r-huijts/strava-mcp-server"]
}
}
}
步骤1(备选):添加到克劳德代码
您可以使用以下命令将此MCP服务器添加到claude代码中:
claude mcp add --transport stdio strava -- npx @r-huijts/strava-mcp-server
您可以按照以下步骤确认安装成功:
% claude mcp list
Checking MCP server health...
strava: npx @r-huijts/strava-mcp-server - ✓ Connected
步骤2:重新启动克劳德桌面
关闭并重新打开Claude Desktop以加载新配置。
第三步:连接你的Strava
对克劳德说:
“连接我的Strava帐户”
浏览器窗口将打开。输入您的Strava API证书,授权应用程序,您就完成了!
就是这样! 开始询问你的活动。
连接您的Strava帐户
首次设置
当你说“连接我的Strava帐户”时,会发生以下情况:
- 浏览器窗口打开 显示设置页面
- 输入您的Strava API证书 (客户端ID和客户端密码)
- 点击“继续前往斯特拉瓦” -您将被重定向到Strava
- 授权应用程序 Strava的网站
- 查看成功消息 -您可以关闭浏览器
- 完成! 克劳德确认你有联系
您的凭据保存在本地 ~/.config/strava-mcp/config.json 并在会话中持续存在。
获取Strava API证书
您需要创建一个免费的Strava API应用程序(一次性设置):
- 首选 strava.com/settings/api
- 点击“创建应用程序”(或查看您现有的应用程序)
- 填写表格:
- 应用程序名称:任何你想要的(例如,“我的克劳德助理”)
- 类别:选择任何
- 网站:可以是任何东西(例如。,
http://localhost) - 授权回调域:必须是
localhost
- 复制您的 客户端ID 和 客户端密钥
就是这样!你只需要做一次。
管理您的连接
- 检查状态“我和斯特拉瓦有联系吗?”
- 重新连接:“连接我的Strava帐户”(使用
force: true重新连接) - 断开:“断开我的Strava帐户”
安装选项
选项A:直接使用(推荐)
无需安装!这 npx 快速入门中的命令会自动下载并运行最新版本。
选项B:全局安装
如果您希望安装一次:
npm install -g @r-huijts/strava-mcp-server
然后更新您的Claude配置以使用:
{
"mcpServers": {
"strava": {
"command": "strava-mcp-server"
}
}
}
注: 即使包名是 @r-huijts/strava-mcp-server,可执行文件名保持不变 strava-mcp-server 为了向后兼容性。
选项C:从源代码构建
对于想要修改代码的开发人员:
git clone https://github.com/r-huijts/strava-mcp.git
cd strava-mcp
npm install
npm run build
然后将Claude指向您的本地版本:
{
"mcpServers": {
"strava": {
"command": "node",
"args": ["/path/to/strava-mcp/dist/server.js"]
}
}
}
对话示例
早上入住
你这个星期我做了什么运动?
克劳德:看看你本周的Strava活动,你完成了:
- 周一:5.2公里跑(28:15)
- 星期三:骑行45公里(1:32:00)
- 周六:10公里跑(52:30)
总计:3项活动60.2km。很好的一致性!
锻炼分析
你:详细分析我上次的自行车锻炼
克劳德:以下是您昨天乘坐的“晚间环线”的详细信息:
概述
- 距离:42.3公里
- 时间:1:28:45
- 平均速度:28.6公里/小时
功率分析
- 平均功率:185W
- 标准功率:198W
- 最大功率:520W
心率
- 平均:142 bpm
- 最大:175 bpm
- 时区4+:23分钟
你的功率与心率之比表明你有良好的有氧效率。..
寻找新路线
你:在科罗拉多州博尔德附近给我找一些有挑战性的自行车攀爬
克劳德:以下是博尔德附近的热门攀岩段:
- 弗拉格斯塔夫路 -5.2公里,平均坡度6.8%
- 阳光峡谷 -3.8公里,平均坡度7.2%
- 左手峡谷 -8.1公里,平均坡度4.5%
你想让我为其中任何一个配音,这样你以后就能很容易地找到它们吗?
可用工具
帐户和个人资料
| 你可以问什么 | 它做什么 |
|---|---|
| “连接我的Strava帐户” | 将您的Strava链接到Claude |
| “检查我的Strava连接” | 显示连接状态 |
| “断开我的Strava帐户” | 取消Strava链接并清除存储的令牌 |
| “获取我的Strava个人资料” | 显示您的个人资料信息 |
| “我有什么鞋?” | 列出你的鞋和使用距离 |
| “我的培训区域是什么?” | 显示人力资源和权力区域 |
活动
| 你可以问什么 | 它做什么 |
|---|---|
| “显示我最近的活动” | 列出您的最新锻炼 |
| “获取我1月份的所有跑步记录” | 使用过滤器获取活动 |
| “分析活动12345” | 一个活动的详细信息 |
| “显示我上次跑步的圈数” | 逐圈细分 |
| “从我的骑行中获取心率数据” | 时间序列锻炼数据(优化的紧凑格式) |
| “显示我徒步旅行的照片” | 活动照片 |
统计数据与进展
| 你可以问什么 | 它做什么 |
|---|---|
| “我的跑步数据是什么?” | YTD和历史总数 |
| “我今年骑自行车走了多远?” | 按类型统计的活动总数 |
| “我骑行时间最长的是什么?” | 个人记录 |
片段
| 你可以问什么 | 它做什么 |
|---|---|
| “显示我的明星片段” | 您最喜欢的片段 |
| “查找[位置]附近的细分市场” | 发现热门细分市场 |
| “获取细分12345的详细信息” | 细分信息和排行榜 |
| “标记此片段” | 保存到收藏夹 |
| “展示我在[片段]上的努力” | 您在片段上的尝试 |
路线
| 你可以问什么 | 它做什么 |
|---|---|
| “列出我保存的路线” | 您创建的路线 |
| “获取我的[路线名称]的详细信息” | 路线信息 |
| “将[路线]导出为GPX” | 下载适用于GPS设备 |
| “将[路线]导出为TCX” | 下载适用于GPS设备 |
俱乐部
| 你可以问什么 | 它做什么 |
|---|---|
| “我加入了哪些俱乐部?” | 列出你的Strava俱乐部 |
锻炼
| 你可以问什么 | 它做什么 |
|---|---|
| “将此锻炼转化为Zwift文件” | 将锻炼计划格式化为结构化文件(目前为Zwift .zwo) |
服务器
| 你可以问什么 | 它做什么 |
|---|---|
| “Strava服务器是什么版本?” | 显示MCP服务器版本和元数据 |
故障排除
“连接我的Strava帐户”无法打开浏览器
- 确保Claude Desktop正在运行MCP服务器(检查Claude中的错误)
- 尝试重新启动Claude Desktop
- 检查端口8111是否未被防火墙阻止
“身份验证失败”或“令牌无效”
- 您的令牌可能已过期-说“连接我的Strava帐户”以重新连接
- 确保您的Strava API应用程序在 strava.com/settings/api
“缺少凭据”错误
- 您需要完成OAuth流程-说“连接我的Strava帐户”
- 如果您正在使用环境变量,请确保所有4个变量都已设置(请参阅“开发人员”部分)
克劳德没有看到斯特拉瓦工具
- 确保你的
claude_desktop_config.json是有效的JSON(没有尾随逗号!) - 更改配置后重新启动Claude Desktop
- 检查Claude的开发人员控制台是否有错误消息
JSONRPC。更改包名后发生ProtocolTransportError
如果更新到后出现JSONRPC错误 @r-huijts/strava-mcp-server:
- 清除npx缓存:运行
rm -rf ~/.npm/_npx在终端 - 验证配置 用途
@r-huijts/strava-mcp-server(不是老strava-mcp-server) - 重新启动克劳德桌面 完全(退出并重新打开)
- 手动测试:运行
npx -y @r-huijts/strava-mcp-server-您应该看到“正在启动Strava MCP Server v1.2.1…”
对于开发者
Click to expand technical details
环境变量
您可以设置环境变量,而不是使用基于浏览器的身份验证:
| 变量 | 描述 |
|---|---|
STRAVA_CLIENT_ID |
您的Strava应用程序客户端ID |
STRAVA_CLIENT_SECRET |
您的Strava应用程序客户端密码 |
STRAVA_ACCESS_TOKEN |
OAuth访问令牌 |
STRAVA_REFRESH_TOKEN |
OAuth刷新令牌 |
ROUTE_EXPORT_PATH |
GPX/TCX导出目录 |
令牌刷新
服务器会自动刷新过期的令牌。新令牌同时保存到两个 process.env 和 ~/.config/strava-mcp/config.json.
配置优先级
- 环境变量(最高)
~/.config/strava-mcp/config.json- 本地
.env文件
建筑与测试
npm install
npm run build
npm test
活动流优化
这 get-activity-streams 默认情况下,该工具使用紧凑的格式,在保留所有数据的同时将有效载荷大小减少约70-80%:
- 紧凑格式 (默认):带有元数据的原始数组,大约小70-80%,非常适合LLM处理
- 详细格式:具有格式化值的人类可读对象(向后兼容)
- 智能分块:大型活动会自动拆分为约50KB的块
- 可选降采样:可以减少非常大的数据集,同时保留关键特征
紧凑的格式包括全面的元数据(单位、描述、统计数据),因此LLM可以理解原始数字数据。
API 参考
服务器实现了模型上下文协议(MCP),并公开了Strava API v3的25个工具。请参阅中的源代码 src/tools/ 了解实施细节。
贡献
欢迎投稿!请提交拉取请求。
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
问题? 打开一个问题 GitHub.
