Skip to main content
Glama
rbctmz

mcp-server-strava

by rbctmz

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

CI Codecov Python License: MIT Ruff

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

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

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

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

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

  • Rate limiting для API запросов

Related MCP server: Strava MCP Server

📋 Требования

⚙️ Установка

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

Install Server
A
license - permissive license
C
quality
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    B
    quality
    F
    maintenance
    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
    22
    MIT
  • A
    license
    -
    quality
    D
    maintenance
    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
    6
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Integrates with the Strava API to allow AI assistants to access fitness data including athlete profiles, activity history, and segment statistics. It enables users to query detailed performance metrics and explore geographic segment data through natural language commands.
    Last updated
    8
    108
    MIT

View all related MCP servers

Related MCP Connectors

  • A Model Context Protocol (MCP) application for automated GitHub PR analysis and issue management.…

  • List, fetch, create, edit (replace), delete and schedule structured workouts on Garmin Connect (runn

  • AI soigneur for cyclists: Strava ride to an Ien-Vitse-validated nutrition plan + orderable box.

View all MCP Connectors

Latest Blog Posts

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