Strava上下文平台
一种模型上下文协议服务器,允许用户通过结构化的API接口访问Strava健身数据,包括用户活动、活动详情、路段和排行榜。
服务介绍
Strava MCP 服务器
一个用于与 Strava API 交互的 Model Context Protocol (MCP) 服务器。
用户指南
安装
你可以使用 uvx 轻松安装 Strava MCP:
uvx strava-mcp
设置 Strava 凭证
-
创建 Strava API 应用:
- 前往 https://www.strava.com/settings/api
- 创建一个新的应用以获取你的 Client ID 和 Client Secret
- 在 "Authorization Callback Domain" 中输入
localhost
-
配置你的凭证:
创建一个凭证文件(例如,~/.ssh/strava.sh):export STRAVA_CLIENT_ID=your_client_id export STRAVA_CLIENT_SECRET=your_client_secret -
配置 Claude 桌面:
将以下内容添加到你的 Claude 配置中(/Users/<username>/Library/Application Support/Claude/claude_desktop_config.json):"strava": { "command": "bash", "args": [ "-c", "source ~/.ssh/strava.sh && uvx strava-mcp" ] }
认证
首次使用 Strava MCP 工具时:
- 将自动启动认证流程
- 你的浏览器将打开 Strava 授权页面
- 授权后,你将被重定向回本地页面
- 你的刷新令牌将被自动保存以供将来使用
可用工具
获取用户活动
检索已认证用户的活动。
参数:
before(可选):用于过滤的时间戳after(可选):用于过滤的时间戳page(可选):页码(默认:1)per_page(可选):每页项目数(默认:30)
获取活动
获取特定活动的详细信息。
参数:
activity_id:活动的 IDinclude_all_efforts(可选):包括段落努力(默认:false)
获取活动段落
从特定活动中检索段落。
参数:
activity_id:活动的 ID
获取段落排行榜
获取特定段落的排行榜。
参数:
segment_id:段落的 ID- 各种可选过滤器(性别、年龄组等)
开发者指南
项目设置
-
克隆仓库:
git clone <repository-url> cd strava -
安装依赖项:
uv install -
设置环境变量:
export STRAVA_CLIENT_ID=your_client_id export STRAVA_CLIENT_SECRET=your_client_secret或者,创建一个包含这些变量的
.env文件。
运行在开发模式
使用 MCP CLI 运行服务器:
mcp dev strava_mcp/main.py
手动认证
你可以通过运行以下命令手动获取刷新令牌:
python get_token.py
项目结构
strava_mcp/: 主包目录__init__.py: 包初始化config.py: 使用 pydantic-settings 的配置设置models.py: Strava API 实体的 Pydantic 模型api.py: Strava 的低级 API 客户端auth.py: Strava OAuth 认证实现oauth_server.py: 独立的 OAuth 服务器实现service.py: 业务逻辑的服务层server.py: MCP 服务器实现
tests/: 单元测试strava_mcp/main.py: 运行服务器的主要入口点get_token.py: 获取刷新令牌的手动工具脚本
运行测试
pytest
发布到 PyPI
构建包
# Build both sdist and wheel
uv build
发布到 PyPI
# Publish to Test PyPI first
uv publish --index testpypi
# Publish to PyPI
uv publish