Strava API服务器

一个用于Strava API的模型上下文协议(MCP)服务器,提供获取和分析Strava活动、运动员统计数据和装备的工具。

  • by ondreian
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 ondreian/strava-mcp

使用说明

Strava MCP服务器

用于Strava API的模型上下文协议(MCP)服务器。为Claude提供工具,用于获取和分析您的Strava活动、运动员统计数据和装备。

特性

  • 自动OAuth流 -首次运行时打开浏览器进行授权
  • 令牌管理 -自动刷新访问令牌,安全地存储在XDG目录中
  • 智能缓存 -缓存运动员档案和装备数据,以减少API调用
  • 综合工具 -访问活动、流媒体、照片、统计数据和装备

设置

先决条件

  • Python 3.13+
  • Strava API证书(客户ID和机密)
  • uv 包管理器

获取Strava API证书

  1. 首选https://www.strava.com/settings/api
  2. 创建应用程序
  3. 注意你的 客户端ID 和 客户端密钥
  4. 集 授权回调域 到 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

第一次运行时,这将:

  1. 打开浏览器进入Strava的授权页面
  2. 等待您批准访问
  3. 将代币存储在 ~/.local/share/strava-mcp/tokens.json
  4. 启动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 .

许可证

麻省理工学院