Strava数据分析服务

通过AI连接Strava账户,分析运动数据并提供个性化建议的智能分析服务

  • by r-huijts
  • TypeScript
  • 本地部署
  • 503 星标
  • 更新于
在 GitHub 查看 r-huijts/strava-mcp

使用说明

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帐户”时,会发生以下情况:

  1. 浏览器窗口打开 显示设置页面
  2. 输入您的Strava API证书 (客户端ID和客户端密码)
  3. 点击“继续前往斯特拉瓦” -您将被重定向到Strava
  4. 授权应用程序 Strava的网站
  5. 查看成功消息 -您可以关闭浏览器
  6. 完成! 克劳德确认你有联系

您的凭据保存在本地 ~/.config/strava-mcp/config.json 并在会话中持续存在。

获取Strava API证书

您需要创建一个免费的Strava API应用程序(一次性设置):

  1. 首选 strava.com/settings/api
  2. 点击“创建应用程序”(或查看您现有的应用程序)
  3. 填写表格:
    • 应用程序名称:任何你想要的(例如,“我的克劳德助理”)
    • 类别:选择任何
    • 网站:可以是任何东西(例如。, http://localhost)
    • 授权回调域:必须是 localhost
  4. 复制您的 客户端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分钟

你的功率与心率之比表明你有良好的有氧效率。..

寻找新路线

你:在科罗拉多州博尔德附近给我找一些有挑战性的自行车攀爬

克劳德:以下是博尔德附近的热门攀岩段:

  1. 弗拉格斯塔夫路 -5.2公里,平均坡度6.8%
  2. 阳光峡谷 -3.8公里,平均坡度7.2%
  3. 左手峡谷 -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:

  1. 清除npx缓存:运行 rm -rf ~/.npm/_npx 在终端
  2. 验证配置 用途 @r-huijts/strava-mcp-server (不是老 strava-mcp-server)
  3. 重新启动克劳德桌面 完全(退出并重新打开)
  4. 手动测试:运行 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.

配置优先级

  1. 环境变量(最高)
  2. ~/.config/strava-mcp/config.json
  3. 本地 .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.