trackmcp
Back to directory
rbctmz

mcp-server-strava

View on GitHub

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

0 stars PythonDeveloper Kits Updated Apr 17, 2025

Documentation

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

CI
Codecov
Python
License: MIT
Ruff

Интеграция для анализа тренировок и получения рекомендаций на основе данных Strava с использованием Model Context Protocol SDK.

🚀 Возможности

  • Анализ тренировок из Strava
  • Рекомендации по тренировкам
  • Автоматическое обновление токенов
  • Rate limiting для API запросов

📋 Требования

⚙️ Установка

bash
# Клонируем репозиторий
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

bash
uv add "mcp[cli]"

🔧 Настройка

Настройка Strava API

1. Перейдите на страницу настроек API

2. Создайте приложение:

    Настройка окружения

    1. Создайте файл с переменными окружения:

    bash
    cp .env-template .env

    2. Получите токены доступа:

    bash
    python scripts/auth.py

    3. Проверьте настройку:

    bash
    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()`Рекомендации

    Примеры использования

    python
    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,    # ЧСС  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Форматирование и анализ кода
    ТестыpytestUnit и интеграционные тесты
    Покрытиеpytest-covОтчет о покрытии кода

    Безопасность и секреты

    1. Защита токенов:

      2. Настройка секретов:

      bash
      # В GitHub: Settings → Secrets → Actions
         STRAVA_CLIENT_ID=
         STRAVA_CLIENT_SECRET=
         STRAVA_REFRESH_TOKEN=

      Contributing

      1. Форкните репозиторий

      2. Установите зависимости: `uv pip install -e ".[dev]"`

      3. Создайте ветку: `git checkout -b feature/name`

      4. Проверьте изменения:

      bash
      ruff format .
         ruff check .
         pytest --cov=src

      5. Создайте Pull Request

      📫 Поддержка

      📄 Лицензия

      MIT

      Frequently asked questions

      What is mcp-server-strava?

      mcp-server-strava is Интеграция Strava API с Model Context Protocol SDK

      How do I install mcp-server-strava?

      Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.

      Is mcp-server-strava open source?

      Yes — it is hosted on GitHub at https://github.com/rbctmz/mcp-server-strava.

      Related MCP tools

      Run your own MCP server? See who uses it and what to fix.

      Measure it with TrackMCP