mcpField
И
Интеграция Strava API с Model Context Protocol (MCP) SDK

Интеграция Strava API с Model Context Protocol (MCP) SDK

本地服务
github.com/rbctmz开发工具080 周前更新

关于 Интеграция Strava API с Model Context Protocol (MCP) SDK

这是一个连接 Strava 训练数据的 MCP 服务,提供分析与建议功能。适用于希望通过 MCP 资源和工具查看活动、训练负荷及运动员相关数据的用户。

主要功能

  1. 01读取 Strava 活动列表和详情
  2. 02访问运动员训练区间和俱乐部
  3. 03获取装备信息
  4. 04分析活动和训练负荷
  5. 05生成训练建议
  6. 06自动刷新令牌

适用场景

  1. 01查看某项 Strava 活动
  2. 02检查多项活动的训练负荷
  3. 03根据训练数据获取建议

MCP 相关

该服务将 Strava 数据作为 MCP 资源提供,并提供活动分析、训练负荷分析和建议工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

使用 Model Context Protocol (MCP) SDK 集成 Strava API

CI Codecov Python License: MIT Ruff

使用 Model Context Protocol SDK 集成 Strava,分析训练并根据 Strava 数据获取建议。

🚀 功能

  • 分析 Strava 中的训练
  • 提供训练建议
  • 自动更新令牌
  • 对 API 请求进行速率限制

📋 要求

⚙️ 安装

# Клонируем репозиторий
git clone https://github.com/rbctmz/mcp-server-strava.git
cd mcp-server-strava

# Установка через uv (рекомендуется)
curl -LsSf https://astral.sh/uv/install.sh | sh
uv pip install .

# Установка в режиме разработки
uv pip install -e ".[dev]"
安装 MCP SDK
uv add "mcp[cli]"

🔧 配置

配置 Strava API
  1. 前往 API 设置页面
  2. 创建应用:
    • Application Name:MCP Strava Integration
    • Category:Training Analysis
    • Website:http://localhost
    • Authorization Callback Domain:localhost
配置环境
  1. 创建环境变量文件:

    cp .env-template .env
    
  2. 获取访问令牌:

    python scripts/auth.py
    
  3. 检查配置:

    mcp dev src/server.py
    curl -X GET "http://localhost:8000/activities"
    

📚 API 和示例

资源和工具
类型名称描述
资源strava://activities活动列表
资源strava://activities/{id}活动详情
资源strava://athlete/zones训练区间
资源strava://athlete/clubs运动员俱乐部
资源strava://gear/{gear_id}装备信息
工具analyze_activity(activity_id)分析训练
工具analyze_training_load(activities)分析训练负荷
工具get_activity_recommendations()获取建议
使用示例
from mcp import ClientSession

# Получение активностей
async with ClientSession() as session:
    activities = await session.read_resource("strava://activities")
    activity = await session.read_resource("strava://activities/12345678")

# Анализ тренировки
result = analyze_activity(activity_id="12345678")
"""
{
    "type": "Run",
    "distance": 5000,
    "moving_time": 1800,
    "analysis": {
        "pace": 5.5,  # мин/км
        "effort": "Средняя"
    }
}
"""

# Анализ нагрузки
summary = analyze_training_load(activities)
"""
{
    "activities_count": 10,
    "total_distance": 50.5,  # км
    "total_time": 5.2,      # часы
    "heart_rate_zones": {
        "easy": 4,    # ЧСС < 120
        "medium": 4,  # ЧСС 120-150
        "hard": 2     # ЧСС > 150
    }
}
"""

# Получение тренировочных зон
async with ClientSession() as session:
    zones = await session.read_resource("strava://athlete/zones")
    """
    {
        "heart_rate": {
            "custom_zones": true,
            "zones": [
                {"min": 0, "max": 120, "name": "Z1 - Recovery"},
                {"min": 120, "max": 150, "name": "Z2 - Endurance"},
                {"min": 150, "max": 170, "name": "Z3 - Tempo"},
                {"min": 170, "max": 185, "name": "Z4 - Threshold"},
                {"min": 185, "max": -1, "name": "Z5 - Anaerobic"}
            ]
        },
        "power": {
            "zones": [
                {"min": 0, "max": 180},
                {"min": 181, "max": 250},
                {"min": 251, "max": 300},
                {"min": 301, "max": 350},
                {"min": 351, "max": -1}
            ]
        }
    }
    """

🛠 开发

CI/CD 和安全
  • Coverage
  • Tests
  • Ruff
GitHub Actions 中的检查
类型工具描述
代码检查ruff代码格式化和分析
测试pytest单元测试和集成测试
覆盖率pytest-cov代码覆盖率报告
安全和密钥
  1. 保护令牌:

    • .env 位于 .gitignore 中
    • CI/CD 使用 GitHub Secrets
    • 速率限制:100 次请求/15 分钟
  2. 配置密钥:

    # В GitHub: Settings → Secrets → Actions
    STRAVA_CLIENT_ID=<client_id>
    STRAVA_CLIENT_SECRET=<client_secret>
    STRAVA_REFRESH_TOKEN=<refresh_token>
    
贡献
  1. Fork 仓库

  2. 安装依赖:uv pip install -e ".[dev]"

  3. 创建分支:git checkout -b feature/name

  4. 检查更改:

    ruff format .
    ruff check .
    pytest --cov=src
    
  5. 创建 Pull Request

📫 支持

📄 许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。