关于 Strava
这是一个用于查询 Strava 活动、运动员、路段和路线数据,并分析训练情况的 MCP 服务。它面向希望通过 LLM 客户端查看训练记录的 Strava 用户,支持本地单用户和 HTTP 多用户模式。
主要功能
- 01查询和分析活动
- 02访问运动员统计与训练区间
- 03探索路段和排行榜
- 04列出并导出路线
- 05比较训练并查找相似活动
- 06提供运动员资源和查询提示词
适用场景
- 01查看近期跑步和训练指标
- 02比较活动或寻找相似训练
- 03检查路段历史和排行榜
- 04将 Strava 路线导出为 GPX 或 TCX
MCP 相关
提供覆盖活动、运动员数据、路段、路线和分析的 11 个工具,以及运动员资料资源和 6 个提示词模板。支持为预配置账户使用 stdio,也支持按用户建立会话的 HTTP 模式。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm ghcr.io/eddmann/strava-mcp:latest本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/eddmann/strava-mcp:lateststdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Strava MCP 服务

用于集成 Strava 的 Model Context Protocol(MCP)服务。通过 Claude、ChatGPT 和其他大模型访问你的活动、运动员统计数据、路段和路线。
概述
此 MCP 服务提供 11 个工具,用于与 Strava 账户交互,分为 5 个类别:
- 活动(2 个工具)——查询和分析你的 Strava 活动
- 运动员(1 个工具)——访问个人资料、统计数据和训练区间
- 路段(3 个工具)——探索和跟踪路段成绩
- 路线(2 个工具)——管理和导出路线
- 分析(3 个工具)——训练洞察、比较和相似性搜索
此外,该服务还提供:
- 1 个 MCP 资源——包含统计数据和区间信息的运动员个人资料,可用于持续提供上下文
- 6 个 MCP 提示词——常见查询模板(训练分析、路段表现、活动分析、跑步比较、训练摘要、比赛表现)
部署选项:
- Stdio 模式:单用户本地部署(例如 Claude Desktop、Cursor)
- HTTP 模式:多用户部署(例如 ChatGPT、远程 MCP 部署)
前提条件
- uv(此软件包需要 Python 3.11+,uv 可负责管理),或
- Docker
Strava API 应用设置
安装前,你需要创建一个 Strava API 应用:
- 前往 https://www.strava.com/settings/api
- 使用以下设置创建新应用:
- 应用名称:自选(例如 “My Strava MCP”)
- 类别:自选(例如 “Data Importer”)
- 俱乐部:留空(可选)
- 网站:可填写任意内容(例如
http://localhost) - 授权回调域:必须为
localhost
- 创建后,记下你的 Client ID 和 Client Secret
- 你将在下方的设置过程中使用这些凭据
安装与设置
身份验证的工作方式
Stdio 模式(单用户,预配置)
- OAuth 流程——通过浏览器进行一次性授权
- 令牌存储——OAuth 令牌默认保存到
~/.strava-mcp.env,如果本地存在.env文件,则保存到该文件 - 自动刷新——令牌过期时自动刷新
- 持久化——后续运行会复用已存储的令牌
HTTP 模式(多用户,按需)
- OAuth 流程——每位用户首次连接时授权(MCP OAuth → Strava OAuth)
- 令牌存储——OAuth 令牌存储在会话存储中(内存或 DynamoDB)
- 自动刷新——按会话自动刷新令牌
- 持久化——会话在 12 小时后过期(可配置)
选项 1:使用 uvx
uvx mcp-strava auth
此交互式向导将引导你配置 stdio 或
http 传输模式的身份验证。配置默认写入 ~/.strava-mcp.env。
如果你更倾向于检出源代码进行开发,请参阅下方的“使用本地源代码”。
如需手动配置 stdio,请使用 Strava OAuth 应用
凭据和令牌创建 ~/.strava-mcp.env。
选项 2:使用 Docker
# Pull the image
docker pull ghcr.io/eddmann/strava-mcp:latest
然后配置凭据:
# Create the env file first (Docker will create it as a directory if it doesn't exist)
touch strava-mcp.env
# Run the setup script
docker run -it --rm \
-v "/ABSOLUTE/PATH/TO/strava-mcp.env:/app/.env" \
ghcr.io/eddmann/strava-mcp:latest \
auth
此交互式向导将引导你配置 stdio 或 http 传输模式的身份验证。
必需的 OAuth 作用域
身份验证过程会请求以下作用域:
profile:read_all- 读取运动员个人资料和区间activity:read_all- 读取所有活动数据activity:read- 读取活动摘要profile:write- 收藏/取消收藏路段
传输模式
该服务支持两种传输模式,通过 --transport 标志选择(默认使用 stdio,无需指定标志):
Stdio 模式(默认)
使用标准输入/输出与一个预配置的 Strava 账号通信。
- 身份验证:使用
~/.strava-mcp.env或本地.env文件中的预配置 OAuth 令牌 - 用户:每个部署支持单个用户
- 设置:运行
strava-mcp auth授权一次 - 令牌存储:默认存储在
~/.strava-mcp.env中,开发和 Docker 环境可使用本地.env文件覆盖
HTTP 模式(可流式传输的 HTTP)
使用 HTTP 传输,并为每位用户提供独立的 OAuth 流程。
- 身份验证:每位用户分别执行 OAuth 流程(MCP OAuth → Strava OAuth)
- 用户:支持多位用户,并使用独立的会话
- 设置:基于环境变量进行配置
- 令牌存储:内存或 DynamoDB 会话存储
Claude Desktop 配置
将以下内容添加到配置文件中:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
使用 uvx
运行 uvx mcp-strava auth 后,配置 Claude Desktop 启动已发布的包:
{
"mcpServers": {
"strava": {
"command": "uvx",
"args": ["mcp-strava"]
}
}
}
使用本地源代码
开发时,从本地检出目录运行:
cd strava-mcp
make deps
uv run strava-mcp auth
{
"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 模式下启动服务,以便远程部署:
# Using uvx
uvx --from "mcp-strava[http]" mcp-strava --transport http
# Using local source
cd /ABSOLUTE/PATH/TO/strava-mcp
make deps
uv run strava-mcp --transport http
# Using Docker
docker run -p 8000:8000 --rm \
-v "/ABSOLUTE/PATH/TO/strava-mcp.env:/app/.env" \
ghcr.io/eddmann/strava-mcp:latest \
--transport http
可以使用 uvx mcp-strava auth 配置环境变量,也可以在本地检出目录或 Docker 镜像中使用 strava-mcp auth 配置。
使用 ngrok 进行本地开发
在本地测试 ChatGPT 集成:
-
在 HTTP 模式下启动服务:
uv run strava-mcp --transport http -
在另一个终端中,通过 ngrok 暴露服务:
ngrok http 8000 -
更新环境变量:将
STRAVA_MCP_BASE_URL设置为你的 ngrok URL:export STRAVA_MCP_BASE_URL=https://abc123.ngrok.io或添加到你的
.env文件中:STRAVA_MCP_BASE_URL=https://abc123.ngrok.io -
重启服务,使其应用新的基础 URL
-
配置 ChatGPT:使用 ngrok URL(带
/mcp路径)作为 MCP 服务端点
用法
使用自然语言让 Claude 与你的 Strava 数据交互。该服务提供工具、资源和提示词模板,帮助你快速上手。
使用 MCP 提示词快速开始
使用内置提示词模板处理常见查询(可通过 Claude 中的提示词建议使用):
analyze_recent_training- 分析我过去 30 天的训练情况segment_performance- 分析我在特定路段上的表现activity_deep_dive- 深入分析某项活动compare_recent_runs- 对比我最近的跑步,追踪进步情况training_summary- 显示全面的训练摘要race_performance_analysis- 分析特定距离的比赛表现
活动
"Show me my runs from the last 30 days"
"Get my last long run with lap splits and heart rate zones"
"Show me the comments and kudos on my half marathon race"
"Find all my marathon races from this year"
"Show me all 10km runs from the last 90 days"
运动员个人资料与统计数据
"Show my athlete profile with year-to-date stats and training zones"
注意:运动员个人资料资源(strava://athlete/profile)会自动提供持续的上下文。
路段
"Show me the Box Hill segment with my effort history"
"Find running segments near Hyde Park"
"Show the leaderboard for my favorite climb segment"
路线
"List my routes"
"Export my Richmond Park route to GPX"
训练分析
"Analyze my training over the past 30 days"
"Analyze my marathon race performance this year"
"Compare my last three 10K runs"
"Find runs similar to my last tempo workout"
"Show me all my 5k races from the last year"
注意:返回列表的工具使用基于游标的分页,默认限制为 10 项(活动/路段/路线)或 50 项(排行榜)。
可用工具
活动(2 个工具)
| 工具 | 说明 |
|---|---|
query_activities | 统一查询活动,支持筛选(距离、标题、比赛状态)和可选的扩展数据(分段、区域、数据流) |
get_activity_social | 获取某项活动的评论和赞 |
运动员(1 个工具)
| 工具 | 说明 |
|---|---|
get_athlete_profile | 获取运动员个人资料,可选包含统计数据(近期、年初至今、历史全部)和训练区域 |
Segments(3 个工具)
| 工具 | 描述 |
|---|---|
query_segments | 统一查询赛段(按 ID 查询、查询已加星标的赛段,或按地理边界浏览) |
star_segment | 为赛段加星标或取消星标 |
get_segment_leaderboard | 获取赛段排行榜并使用筛选选项 |
Routes(2 个工具)
| 工具 | 描述 |
|---|---|
query_routes | 获取路线详情(按 ID 查询单条路线或列出所有路线) |
export_route | 将路线导出为 GPX 或 TCX 格式 |
分析(3 个工具)
| 工具 | 描述 |
|---|---|
analyze_training | 分析指定时间段内的训练,并按距离、标题和比赛状态筛选及汇总指标 |
compare_activities | 并排比较 2-5 项活动 |
find_similar_activities | 查找与参考活动相似的活动,并提供预筛选选项以跟踪进度 |
MCP 资源
资源可为大模型持续提供上下文,无需显式调用工具:
| 资源 | 描述 |
|---|---|
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. 无关联,也未获得其认可或赞助。所有产品名称、徽标和品牌均归各自所有者所有。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。