article
README
🚀 MCP Strava Server
MCP Strava Server 是一个小型的 Python MCP 服务器,它可以让 Claude Desktop 读取你的 Strava 活动数据。你可以提出类似“显示我最近 10 次跑步的距离和平均配速”这样的问题。
🚀 快速开始
环境准备
- 操作系统:x64 架构的 Windows 10 或 11
- Python 版本:3.10 或更高版本
- 需安装 Claude Desktop
安装步骤
cd C:\Users\AtikantJain\mcp-strava
python -m venv .venv
. .\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
配置流程
- 在 VS Code 中开始操作,使用 MCP 工具和基于环境的配置编写
server.py。 - 在虚拟环境中安装依赖:
mcp[cli]、requests、anyio。 - 进行 Strava 应用设置:授权回调域设为
localhost,网站设为http://localhost。 - 在 Claude Desktop 中添加服务器环境变量:
STRAVA_CLIENT_ID、STRAVA_CLIENT_SECRET、STRAVA_REDIRECT_URI、STRAVA_TOKEN_PATH、STRAVA_SCOPES。 - Claude 通过虚拟环境的 Python 和参数
server.py启动 MCP 服务器。
操作流程
- 在 Claude 中运行
oauth_login。 - 服务器在
http://localhost:8723/callback启动本地回调并打开浏览器。 - 你登录 Strava 并授权。
- Strava 携带代码重定向回来。
- 服务器使用
client_id、client_secret、code发送 POST 请求/oauth/token。 - 若请求成功(200 OK),服务器将
access_token、refresh_token、expires_at保存到STRAVA_TOKEN_PATH。 - 你在 Claude 中调用
list_activities或get_activity。 - 检查
access_token是否即将过期:- 若过期,服务器使用
refresh_token发送 POST 请求/oauth/token获取新的令牌。 - 若未过期,服务器使用
Authorization: Bearer access_token调用 Strava API。
- 若过期,服务器使用
- JSON 数据返回给 MCP 服务器,Claude 会给你返回一个摘要信息。
登录错误处理
若在登录过程中出现 401 或其他错误,根据错误类型进行以下处理:
- 若
client_secret无效,在 Claude 环境中修正STRAVA_CLIENT_SECRET后再次运行oauth_login。 - 若
client_id无效,修正STRAVA_CLIENT_ID后再次运行oauth_login。 - 若
redirect_uri不匹配,确保STRAVA_REDIRECT_URI = http://localhost:8723/callback且仪表盘域为localhost。 - 若
code无效或过期,再次运行oauth_login并及时授权。
✨ 主要特性
- 工具丰富:提供
oauth_login、list_activities、get_activity等工具。 - 本地 OAuth 与自动令牌刷新:支持本地 OAuth 认证,并能自动刷新令牌。
- 令牌本地存储:令牌保存到本地 JSON 文件,且不提交到版本控制。
微信扫一扫