Skip to main content
Glama

mcp-server-strava

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

CI Codecov Python License: MIT Ruff

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

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

  • Анализ тренировок из Strava

  • Рекомендации по тренировкам

  • Автоматическое обновление токенов

  • Rate limiting для 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

Unit и интеграционные тесты

Покрытие

pytest-cov

Отчет о покрытии кода

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

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

    • .env в .gitignore

    • GitHub Secrets для CI/CD

    • Rate limiting: 100 запросов/15 мин

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

    # В GitHub: Settings → Secrets → Actions STRAVA_CLIENT_ID=<client_id> STRAVA_CLIENT_SECRET=<client_secret> STRAVA_REFRESH_TOKEN=<refresh_token>

Contributing

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

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

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

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

    ruff format . ruff check . pytest --cov=src
  5. Создайте Pull Request

📫 Поддержка

📄 Лицензия

MIT

Related MCP Servers

  • A
    security
    A
    license
    A
    quality
    Enables integration with OpenMetadata by wrapping its REST API for standardized interaction through the Model Context Protocol.
    Last updated -
    18
    MIT License
  • A
    security
    A
    license
    A
    quality
    A Model Context Protocol server that provides language models with access to Strava API data, allowing them to query and analyze athlete activities from Strava.
    Last updated -
    4
    15
    MIT License
    • Apple
  • -
    security
    A
    license
    -
    quality
    A Model Context Protocol server that enables language models to interact with Strava data, including activities, athlete statistics, routes, achievements, and social features.
    Last updated -
    2
    MIT License
    • Linux
    • Apple
  • A
    security
    A
    license
    A
    quality
    A Model Context Protocol server that enables users to access Strava fitness data, including user activities, activity details, segments, and leaderboards through a structured API interface.
    Last updated -
    3
    4
    MIT License
    • Apple

View all related MCP servers

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rbctmz/mcp-server-strava'

If you have feedback or need assistance with the MCP directory API, please join our Discord server