leo-running-coach
Coach Leo is an AI running coach that syncs your real training data from Strava, remembers every conversation, tracks your body signals and shoes, and adapts…
Что умеет
- Get Coaching Briefing: MUST be called at the start of EVERY conversation before any other tool. You are Leo, a personal AI running coach. This briefing provides the runner's complete coaching context:
- Manage Athlete: Manage the runner's profile and running character. Use when the runner shares personal info, asks about their profile, or during weekly reviews. Actions: - get_profile: Full runner pro
- Manage Activities: Access and annotate the runner's training activities. Use when the runner mentions a workout, asks about training history, or wants to record feedback. Actions: - query: Search acti
Какие данные видит
Нужен ли аккаунт
Не нужен: сервер работает без входа
Coach Leo is an AI running coach that syncs your real training data from Strava, remembers every conversation, tracks your body signals and shoes, and adapts your training to who you actually are as a runner. It assigns you a running character based on your real data. Every recommendation draws from a curated knowledge base of 65+ peer-reviewed papers.
Как подключить
Как подключить leo-running-coach к Claude
Адрес сервера, который нужно вставить в настройках Claude:
https://leo--running-coach.run.tools
- Откройте Claude (сайт claude.ai или приложение для компьютера).
- Перейдите в Настройки → Коннекторы (в английском интерфейсе: Settings → Connectors).
- Нажмите Добавить пользовательский коннектор (Add custom connector).
- Вставьте адрес сервера, скопированный ниже, в поле URL удалённого MCP-сервера и нажмите Добавить.
- В чате нажмите + → Коннекторы и включите новый коннектор.
Пользовательские коннекторы доступны на тарифах Free, Pro, Max, Team и Enterprise. На Free можно добавить только один. В Team и Enterprise коннектор сначала добавляет владелец организации в Настройки организации → Коннекторы.
Авторизация
После нажатия Добавить откроется окно входа в сервис. Войдите под своим аккаунтом и подтвердите доступ. Пароль Claude не видит.
Как подключить leo-running-coach к ChatGPT
Адрес сервера, который нужно вставить в настройках ChatGPT:
https://leo--running-coach.run.tools
- Откройте ChatGPT в браузере (chatgpt.com). Нужен тариф Plus, Pro, Business, Enterprise или Edu.
- Один раз включите режим разработчика: Настройки → Приложения → Дополнительные настройки → Режим разработчика (Settings → Apps → Advanced settings → Developer mode).
- Откройте Настройки → Коннекторы и нажмите Создать (Create).
- Заполните форму: Название (любое), Описание (одна фраза, что делает сервис), URL MCP-сервера (скопируйте ниже).
- В поле Аутентификация выберите OAuth, если сервис требует вход, иначе Нет. Нажмите Создать.
- В новом чате откройте + → Приложения/Коннекторы и включите коннектор.
Название раздела у OpenAI менялось (Connectors → Apps/Plugins). Если пункт называется иначе, ищите «режим разработчика» в настройках. В рабочих пространствах Business/Enterprise администратор должен разрешить пользовательские коннекторы.
Авторизация
При первом использовании ChatGPT откроет окно входа в сервис. Войдите и подтвердите доступ.
Как подключить leo-running-coach к Cursor
Адрес сервера, который нужно вставить в настройках Cursor:
https://leo--running-coach.run.tools
Быстрый способ: нажмите кнопку Открыть в Cursor ниже, Cursor сам предложит добавить сервер.
Вручную:
- В Cursor откройте Settings → Cursor Settings → MCP и нажмите Add new global MCP server.
- Вставьте JSON, скопированный ниже, в открывшийся файл
~/.cursor/mcp.json(для одного проекта:.cursor/mcp.jsonв корне проекта). - Сохраните файл. Сервер появится в списке MCP; при необходимости пройдите авторизацию по кнопке рядом с ним.
Авторизация
Если сервис требует вход, рядом с сервером в списке MCP появится кнопка авторизации.
Список инструментов сервера (12)
Технические названия из tools/list. Нужны только разработчикам.
| get_coaching_briefing | MUST be called at the start of EVERY conversation before any other tool. You are Leo, a personal AI running coach. This briefing provides the runner's complete coaching context: profile, latest activity, today's session, training load trends, target race, active alerts, readiness, recent coaching decisions, and character status. The response includes coaching_identity with Leo's principles — follow them. If needs_onboarding is true, call get_skill_workflow("onboarding") immediately. Never ask the runner questions that the briefing already answers. The briefing already includes recent_activities (last 10 across all sport types). Do NOT call activity(action="query") redundantly after the briefing. If the runner asks about their training, race prep, or weekly review, call training(action="get_plan") and race(action="list") for full context. Never base your analysis on just 2-3 days of data — always look at the bigger picture. |
| manage_athlete | Manage the runner's profile and running character. Use when the runner shares personal info, asks about their profile, or during weekly reviews. Actions: - get_profile: Full runner profile (body metrics, running form, shoes, preferences, setback history). - update_profile: Update profile fields. data: {field: value} for name, age, weight_kg, height_cm, resting_hr, max_hr, vo2max_estimate, foot_type, arch_type, preferred_terrain, preferred_distance, weekly_availability, cross_training_sports, equipment_available, coaching_preferences. coaching_preferences: JSON object controlling coaching behavior. Merge with existing values (don't overwrite). See instructions for full field reference. - get_character: Get running character data. Returns "Snow Leopard Cub" if not yet eligible (requires 7+ days since signup AND 5+ activities). - recalculate_character: Recompute character from real activity data. Blocked if not eligible. Must call during every weekly review when eligible. |
| manage_activities | Access and annotate the runner's training activities. Use when the runner mentions a workout, asks about training history, or wants to record feedback. Actions: - query: Search activity history with filters. data: {date_from?, date_to?, sport_type? (run/trail_run/ride/mountain_bike/nordic_ski), training_impact? (primary/cross_aerobic/cross_muscular/cross_recovery), limit?} TIP: Always query at least 10-15 activities (limit=15) to get a meaningful training picture. A single week is never enough context — look at 2-4 weeks. The runner may do cross-training (cycling, skiing, hiking) that matters for load. - get_detail: Full activity details including metrics and GPX summary. data: {activity_id} Call this on the most recent or most relevant activity to give specific feedback. - record_feedback: Record post-workout subjective feedback. data: {activity_id, perceived_effort (1-10), sensations?, notes?, shoe_id?} This is the most valuable subjective data -- always collect after discussing a workout. - update: Update activity fields directly. data: {activity_id, shoe_id?, notes?, name?, weather?, perceived_effort?, sensations?} Use this to correct activity data (e.g. link a shoe) without requiring full feedback. |
| manage_training | Manage training plans and sessions. Actions: - get_plan: Active plan with sessions (past 7 days + next 14 days). data: {include_past_days?} - create_plan: Create a NEW plan. If active plan exists, returns confirmation with plan details — call again with force=true to replace (old plan archived, completed sessions preserved). Use when: race change, plan doesn't fit, major restructuring needed. For small tweaks, prefer add/remove/update_session. data: {plan_name, objective, start_date, end_date, force?, sessions: [{scheduled_date, session_type, title, description, target_duration_min}]} - add_session: Add a single session to the active plan. data: {scheduled_date, session_type, title, description, target_duration_min} - remove_session: Cancel a planned session (cannot remove completed). data: {session_id} - update_session: Modify a session — reschedule, change type, link an activity, mark completed/skipped. When get_plan shows a 'missed' session with a match_candidate, use this to link the activity (set completion_status=completed and completed_activity_id). data: {session_id, scheduled_date?, completion_status? (planned/completed/skipped/modified), completed_activity_id?, was_adapted?, adaptation_reason?, adaptation_type?, session_type?, title?, description?, target_duration_min?, target_intensity?} |
| track_body_signals | Track athletic body signals and daily readiness for training optimization. Use when the runner reports discomfort, tightness, unusual sensations during training, or wants to log daily readiness. Actions: - record_observation: Log physical feedback from training: tightness, soreness, asymmetry. data: {body_area, description, severity (info/watch/warning/alert), observation_type?, activity_id?, terrain_context?, ai_interpretation?, scientific_references?, recommended_actions?} Always record even minor observations -- pattern detection over time helps prevent overtraining. - update_observation: Update status/severity of an existing observation. Use to resolve observations that are no longer relevant, or adjust severity as situation evolves. data: {observation_id, status? (active/monitoring/resolved/chronic), severity? (info/watch/warning/alert), description?, ai_interpretation?, follow_up_date?, recommended_actions?} - record_physical_setback: Record a confirmed physical setback. data: {body_area, start_date, severity (minor/moderate/severe), description, setback_type?, probable_cause?, recovery_action?} - update_physical_setback: Update an existing setback's status or add resolution info. data: {setback_id, status? (active/recovering/resolved), severity?, resolved_date?, recovery_action?, modified_training?, lessons_learned?} - record_readiness: Daily readiness check-in (scores 1-10, 10=excellent). data: {date, sleep_hours?, sleep_quality?, energy_level?, mood?, stress_level?, muscle_soreness?, resting_hr?, notes?} |
| manage_shoes | Manage the runner's shoe collection, inspections, and wear tracking. Use when the runner discusses shoes, asks about shoe condition, or shares shoe photos. Actions: - add: New shoe. data: {name, brand, model, category (trail/road/mixed), estimated_lifetime_km?, purchase_date?, strava_gear_id?, initial_km?} initial_km: km already run in this shoe (ask the runner if they know). The system will auto-match with Strava gear by name if strava_gear_id is not provided. - update: Modify shoe. data: {shoe_id, ...fields to change} - retire: End of life. data: {shoe_id} - inspect: Record wear inspection. data: {shoe_id, zone (outsole/midsole_lateral/ midsole_medial/upper/heel/insole), visual_score (1-10, 10=new), observations, ai_analysis?, estimated_remaining_life_pct?, total_km_at_inspection?} - stats: Shoe statistics (km, inspections, remaining life). data: {shoe_id} - link: Auto-link shoes to activities via Strava gear IDs. No data needed. |
| manage_races | Manage the runner's races from discovery to post-race report. When a runner mentions a race by name, USE YOUR WEB SEARCH capabilities to automatically find race details (date, location, distance, D+, terrain, GPX, number of runners) before asking them to provide info manually. Load get_skill_workflow("race-planning") for the full race lifecycle workflow. Actions: - list: Get races. data: {status? (planned/completed/dns/dnf)} - add: Register a race. data: {name, date, distance_km, elevation_gain_m, goal_type?, goal_details?, terrain_type?, max_participants?, registration_url?, course_url?, race_role? (objectif/préparatoire/découverte), parent_race_id?} - update: Modify race. data: {race_id, ...fields to change} - report: Record results. data: {race_id, result_time_seconds, result_notes?, race_report?} |
| search_knowledge | Access and enrich the scientific knowledge base. CRITICAL: you MUST search this knowledge base BEFORE making any training recommendation, interpreting body signals, or advising on overtraining prevention. Never recommend without evidence from the knowledge base. Actions: - search: Hybrid semantic + full-text search. data: {query, category?, tier?, top_k?} Categories: training_methodology, overtraining_prevention, trail_specific, running_form, nutrition_recovery, psychology, cross_training. ALWAYS search before training recommendations. Cite sources naturally. - list_sources: List documents. data: {category?, tier? (T1/T2/personalized)} - ingest: Add document with chunking + embedding. data: {title, content, author, year, category, tier?, tags?, relevance_note?, doi?, isbn?} - record_gap: Log missing topic when search returns no relevant results. data: {topic, query_trigger?, context?, category?, priority?} - list_gaps: Get gaps. data: {status? (open/researching/resolved/dismissed), category?} - resolve_gap: Mark resolved. data: {gap_id, resolution_doc_ids?, resolution_note?} |
| coaching_memory | Persistent coaching memory across sessions. ALWAYS log meaningful coaching exchanges (decisions, plan adaptations, setback advice). ALWAYS search history before giving advice to avoid repeating yourself or contradicting past decisions. Actions: - log_conversation: Save coaching exchange. data: {topic, summary, decisions?, actions?, tags?} Topics: onboarding, plan_adaptation, sensation_analysis, overtraining_prevention, weekly_review, race_prep. Call after every meaningful coaching exchange. - search_history: Search past coaching, activities, observations. data: {query, scope? (coaching/activities/observations/all), date_from?, date_to?} Search before repeating advice already given. |
| estimate_vo2max | Estimate VO2max using 3 scientific methods (ACSM Running Equation, Jack Daniels VDOT, HR-Pace regression). Analyzes last 12 weeks of running activities automatically. Detects real max HR from activities if not set in profile. |
| analyze_gpx | Parse and analyze a GPX file: elevation profile, segments (climb/descent/flat), terrain diversity score. |
| get_skill_workflow | Load a detailed coaching workflow by its ID. Call this when you detect a coaching scenario that matches one of the Available Coaching Workflows listed below. The returned workflow contains step-by-step instructions, the exact tool call sequence, and knowledge base queries to execute. ALWAYS load the relevant workflow BEFORE responding to a complex coaching scenario. This ensures consistent, science-backed coaching across all sessions. Available skill IDs and their triggers: - onboarding: new runner, empty profile, first conversation - post-activity-analysis: runner finished a workout, wants to debrief - body-signal-analysis: runner reports discomfort, tightness, unusual feelings - overtraining-monitor: recurring discomfort, load spikes, overtraining risk questions - weekly-review: "bilan de la semaine", weekly summary, how was my week - adaptive-training-plan: create/adapt plan, prepare for race - race-planning: mentions a race, wants to find races, reports results - deep-research: knowledge enrichment, deep research session - gpx-pattern-analysis: shares GPX file, analyze a route - shoe-wear-analysis: shares shoe photos, asks about shoe condition - character-reveal: first character reveal (only when eligible) |