Strava上下文平台

@yorrickjansen/strava-mcp
0 Stars 11 次浏览 yorrickjansen 更新于 2026-08-23

一种模型上下文协议服务器,允许用户通过结构化的API接口访问Strava健身数据,包括用户活动、活动详情、路段和排行榜。

该服务暂未提供标准配置,请参考 README 手动接入

服务介绍

Strava MCP 服务器

CI/CD Pipeline
codecov

一个用于与 Strava API 交互的 Model Context Protocol (MCP) 服务器。

用户指南

安装

你可以使用 uvx 轻松安装 Strava MCP:

uvx strava-mcp

设置 Strava 凭证

  1. 创建 Strava API 应用

  2. 配置你的凭证
    创建一个凭证文件(例如,~/.ssh/strava.sh):

    export STRAVA_CLIENT_ID=your_client_id
    export STRAVA_CLIENT_SECRET=your_client_secret
    
  3. 配置 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 工具时:

  1. 将自动启动认证流程
  2. 你的浏览器将打开 Strava 授权页面
  3. 授权后,你将被重定向回本地页面
  4. 你的刷新令牌将被自动保存以供将来使用

可用工具

获取用户活动

检索已认证用户的活动。

参数:

  • before(可选):用于过滤的时间戳
  • after(可选):用于过滤的时间戳
  • page(可选):页码(默认:1)
  • per_page(可选):每页项目数(默认:30)

获取活动

获取特定活动的详细信息。

参数:

  • activity_id:活动的 ID
  • include_all_efforts(可选):包括段落努力(默认:false)

获取活动段落

从特定活动中检索段落。

参数:

  • activity_id:活动的 ID

获取段落排行榜

获取特定段落的排行榜。

参数:

  • segment_id:段落的 ID
  • 各种可选过滤器(性别、年龄组等)

开发者指南

项目设置

  1. 克隆仓库:

    git clone <repository-url>
    cd strava
    
  2. 安装依赖项:

    uv install
    
  3. 设置环境变量:

    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

许可证

MIT License

致谢

相关 MCP 服务