返回市场
斯特拉瓦-MCP

斯特拉瓦-MCP

作者:eddmann2 星标更新:2025-11-07

项目介绍

Strava MCP Server

Strava MCP Server

这是一个用于Strava集成的模型上下文协议(MCP)服务器。通过Claude、ChatGPT和其他大型语言模型访问您的活动、运动员统计数据、分段和路线。

Python 3.11+

概述

此MCP服务器提供了11个工具来与您的Strava账户进行交互,这些工具被组织成5个类别:

  • 活动(2个工具) - 查询和分析您的Strava活动
  • 运动员(1个工具) - 访问个人资料、统计数据和训练区间
  • 分段(3个工具) - 探索和跟踪分段努力
  • 路线(2个工具) - 管理和导出路线
  • 分析(3个工具) - 训练见解、比较和相似性搜索

此外,该服务器还提供:

  • 1个MCP资源 - 包含统计数据和区间的运动员个人资料,用于持续上下文
  • 5个MCP提示 - 常见查询模板(训练分析、分段表现、活动分析、跑步比较、训练总结)

部署选项:

  • 标准I/O模式:单用户本地部署(例如,Claude桌面版、Cursor)
  • HTTP模式:多用户部署(例如,ChatGPT、远程MCP部署)

预备条件

  • Python 3.11+ 和 uv,或者
  • Docker

Strava API应用程序设置

在安装之前,您需要创建一个Strava API应用程序:

  1. 访问 https://www.strava.com/settings/api
  2. 使用以下设置创建一个新的应用程序:
    • 应用程序名称:您的选择(例如,“我的Strava MCP”)
    • 类别:您的选择(例如,“数据导入器”)
    • 社团:留空(可选)
    • 网站:可以是任何内容(例如,http://localhost
    • 授权回调域名:必须是localhost
  3. 创建后,请记下您的客户端ID和客户端密钥
  4. 在下面的设置过程中会使用这些凭证

安装与设置

认证工作原理

标准I/O模式(单用户,预配置)

  1. OAuth流程 - 通过浏览器一次性授权
  2. 令牌存储 - OAuth令牌保存到.env文件中
  3. 自动刷新 - 当令牌过期时自动刷新
  4. 持久化 - 后续运行重用已存储的令牌

HTTP模式(多用户,按需)

  1. OAuth流程 - 用户首次连接时进行授权(MCP OAuth → Strava OAuth)
  2. 令牌存储 - OAuth令牌存储在会话存储中(内存或DynamoDB)
  3. 自动刷新 - 每个会话自动刷新令牌
  4. 持久化 - 会话在12小时后过期(可配置)

方案1:使用UV

# 安装依赖项
cd strava-mcp
uv sync

然后配置凭证:

uv run strava-mcp-auth

这个交互式向导将引导您完成为标准I/O或HTTP传输模式配置认证的过程。

方案2:使用Docker

# 拉取镜像
docker pull ghcr.io/eddmann/strava-mcp:latest

然后配置凭证:

# 首先创建env文件(如果不存在,Docker会将其创建为目录)
touch strava-mcp.env

# 运行设置脚本
docker run -it --rm \
  -v "/ABSOLUTE/PATH/TO/strava-mcp.env:/app/.env" \
  --entrypoint= \
  ghcr.io/eddmann/strava-mcp:latest \
  python -m strava_mcp.scripts.setup_auth

这个交互式向导将引导您完成为标准I/O或HTTP传输模式配置认证的过程。

所需OAuth范围

认证过程请求以下范围:

  • profile:read_all - 读取运动员个人资料和区间
  • activity:read_all - 读取所有活动数据
  • activity:read - 读取活动摘要
  • profile:write - 对分段进行点赞/取消点赞

传输模式

服务器支持两种传输模式,通过--transport标志选择(默认为stdio,无需标志):

标准I/O模式(默认)

使用标准输入/输出与预先配置的单个Strava账户进行通信。

  • 认证:.env文件中的预配置OAuth令牌
  • 用户:每个部署单个用户
  • 设置:运行strava-mcp-auth进行一次授权
  • 令牌存储:本地.env文件

HTTP模式(流式HTTP)

使用HTTP传输和每个用户的OAuth流程。

  • 认证:每个用户的OAuth流程(MCP OAuth → Strava OAuth)
  • 用户:支持多个用户,具有独立的会话
  • 设置:基于环境的配置
  • 令牌存储:内存或DynamoDB会话存储

Claude桌面配置

添加到您的配置文件中:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

使用UV

{
  "mcpServers": {
    "strava": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/ABSOLUTE/PATH/TO/strava-mcp",
        "strava-mcp",
        "--transport",
        "stdio"
      ]
    }
  }
}

使用Docker

{
  "mcpServers": {
    "strava": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-v",
        "/ABSOLUTE/PATH/TO/strava-mcp.env:/app/.env",
        "ghcr.io/eddmann/strava-mcp:latest",
        "--transport",
        "stdio"
      ]
    }
  }
}

ChatGPT集成及HTTP模式

在HTTP模式下运行

以HTTP模式启动服务器以进行远程部署:

# 使用UV
uv run --directory /ABSOLUTE/PATH/TO/strava-mcp strava-mcp --transport http

# 使用Docker
docker run -p 8000:8000 --rm \
  -v "/ABSOLUTE/PATH/TO/strava-mcp.env:/app/.env" \
  ghcr.io/eddmann/strava-mcp:latest \
  --transport http

环境变量可以通过strava-mcp-auth设置向导进行配置(参见安装与设置部分)。

使用ngrok进行本地开发

要测试ChatGPT集成:

  1. 以HTTP模式启动服务器

    uv run strava-mcp --transport http
    
  2. 在另一个终端中通过ngrok暴露

    ngrok http 8000
    
  3. 更新环境:将STRAVA_MCP_BASE_URL设置为您的ngrok URL:

    export STRAVA_MCP_BASE_URL=https://abc123.ngrok.io
    

    或者添加到您的.env文件中:

    STRAVA_MCP_BASE_URL=https://abc123.ngrok.io
    
  4. 重启服务器以获取新的基础URL

  5. 配置ChatGPT:使用ngrok URL(带有/mcp路径)作为您的MCP服务器端点

使用方法

让Claude使用自然语言与您的Strava数据进行交互。服务器提供了工具、资源和提示模板来帮助您开始。

快速开始使用MCP提示

使用内置提示模板进行常见查询(可通过Claude中的提示建议获得):

  • analyze-recent-training - 分析我过去30天的训练
  • segment-performance - 分析我在特定分段上的表现
  • activity-deep-dive - 对特定活动进行深入分析
  • compare-recent-runs - 比较我的最近几次跑步以追踪进步
  • training-summary - 显示全面的训练概要

活动

"显示我过去30天的跑步"
"获取我最后一次长跑的分段和心率区间"
"显示我对半程马拉松比赛的评论和点赞"
"查找今年的所有马拉松比赛"
"显示过去90天内的所有10公里跑步"

运动员个人资料及统计

"显示包含今年至今统计和训练区间的运动员个人资料"

注意:运动员个人资料资源(strava://athlete/profile)自动提供持续上下文。

分段

"显示Box Hill分段及其历史努力情况"
"查找Hyde Park附近的跑步分段"
"显示我最喜欢的爬坡分段的排行榜"

路线

"列出我的路线"
"将我的Richmond Park路线导出为GPX格式"

训练分析

"分析我过去30天的训练"
"分析我今年的马拉松比赛表现"
"比较我最后三次10公里跑步"
"查找与我上次间歇训练相似的跑步"
"显示我过去一年内的所有5公里比赛"

注意:返回列表的工具使用基于游标的分页,默认限制(活动/分段/路线10项,排行榜50项)。

可用工具

活动(2个工具)

工具描述
query-activities统一查询活动,包括过滤(距离、标题、比赛状态)和可选丰富信息(分段、区间、流)
get-activity-social获取活动的评论和点赞

运动员(1个工具)

工具描述
get-athlete-profile获取运动员个人资料,包括可选统计(近期、今年至今、所有时间)和训练区间

分段(3个工具)

工具描述
query-segments统一分段查询(通过ID、收藏或地理边界探索)
star-segment收藏或取消收藏分段
get-segment-leaderboard获取分段排行榜,包括过滤选项

路线(2个工具)

工具描述
query-routes获取路线详情(通过ID获取单个路线或列出所有路线)
export-route将路线导出为GPX或TCX格式

分析(3个工具)

工具描述
analyze-training分析一段时间内的训练,包括过滤(距离、标题、比赛状态)和聚合指标
compare-activities并排比较2-5个活动
find-similar-活动查找与参考活动相似的活动,并进行预筛选以追踪进度

MCP资源

资源为LLM提供持续上下文,而无需显式调用工具:

资源描述
strava://athlete/profile包含近期统计、区间和装备的完整运动员个人资料

MCP提示

常见查询的提示模板(可通过Claude中的提示建议获得):

提示描述
analyze-recent-training对指定时间段进行全面的训练分析
race-performance-analysis分析特定距离的比赛表现
segment-performance详细的分段表现分析
activity-deep-dive对特定活动进行深入分析,包括所有指标
compare-recent-runs比较最近几次跑步以识别趋势和改进
training-summary全面的训练概述,附带建议

许可证

MIT许可证 - 详情请参阅LICENSE文件

免责声明

本项目未得到Strava, Inc.的认可、赞助或关联。所有产品名称、徽标和品牌均为其各自所有者的财产。