Strava活动数据服务

一个用于与Strava API交互的模型上下文协议(MCP)服务器,提供用户活动数据获取、分段分析和排行榜查询等功能。

  • by yorrickjansen
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 yorrickjansen/strava-mcp

使用说明

Strava MCP服务器

用于与Strava API交互的模型上下文协议(MCP)服务器。

用户指南

安装

您可以轻松安装Strava MCP uvx:

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设置的配置设置
    • 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许可证

致谢