Garmin (MissingMCP.com)
Your watch has the answers.
Что умеет
- Get Activities By Date: Get activities between specified dates with pagination support. For accounts with large activity histories, broad date ranges can return thousands of activities in a single res
- Get Activities Fordate: Get activities for a specific date Args: date: Date in YYYY-MM-DD format
- Get Activity: Get detailed information for a single activity. Returns a comprehensive summary including timing, distance, heart rate, elevation, training effect, and an event_type field. Common event_
Какие данные видит
Нужен ли аккаунт
Не нужен: сервер работает без входа
Your watch has the answers. Everything your watch knows — training, sleep, recovery, health — in a conversation. Ask questions, spot trends, and let Claude plan workouts that land right back on your wrist. 135 tools for activities, sleep, HRV, training readiness and workouts. Free, open source.
Как подключить
Как подключить Garmin (MissingMCP.com) к Claude
Адрес сервера, который нужно вставить в настройках Claude:
https://garmin-missing-mcp.run.tools
- Откройте Claude (сайт claude.ai или приложение для компьютера).
- Перейдите в Настройки → Коннекторы (в английском интерфейсе: Settings → Connectors).
- Нажмите Добавить пользовательский коннектор (Add custom connector).
- Вставьте адрес сервера, скопированный ниже, в поле URL удалённого MCP-сервера и нажмите Добавить.
- В чате нажмите + → Коннекторы и включите новый коннектор.
Пользовательские коннекторы доступны на тарифах Free, Pro, Max, Team и Enterprise. На Free можно добавить только один. В Team и Enterprise коннектор сначала добавляет владелец организации в Настройки организации → Коннекторы.
Авторизация
После нажатия Добавить откроется окно входа в сервис. Войдите под своим аккаунтом и подтвердите доступ. Пароль Claude не видит.
Как подключить Garmin (MissingMCP.com) к ChatGPT
Адрес сервера, который нужно вставить в настройках ChatGPT:
https://garmin-missing-mcp.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 откроет окно входа в сервис. Войдите и подтвердите доступ.
Как подключить Garmin (MissingMCP.com) к Cursor
Адрес сервера, который нужно вставить в настройках Cursor:
https://garmin-missing-mcp.run.tools
Быстрый способ: нажмите кнопку Открыть в Cursor ниже, Cursor сам предложит добавить сервер.
Вручную:
- В Cursor откройте Settings → Cursor Settings → MCP и нажмите Add new global MCP server.
- Вставьте JSON, скопированный ниже, в открывшийся файл
~/.cursor/mcp.json(для одного проекта:.cursor/mcp.jsonв корне проекта). - Сохраните файл. Сервер появится в списке MCP; при необходимости пройдите авторизацию по кнопке рядом с ним.
Авторизация
Если сервис требует вход, рядом с сервером в списке MCP появится кнопка авторизации.
Список инструментов сервера (60)
Технические названия из tools/list. Нужны только разработчикам.
| get_activities_by_date | Get activities between specified dates with pagination support. For accounts with large activity histories, broad date ranges can return thousands of activities in a single response. Use page and page_size to retrieve activities in manageable chunks and avoid "result too large" errors. Activities are ordered newest-first. Pagination: when has_more is true the response includes next_page — pass that value as page on the next call to retrieve the following page. Repeat until has_more is false. Note: total_count for a date range is not available from the Garmin API without fetching all results. Use has_more / next_page to walk pages. Each activity includes an event_type field with values such as: - "race" — explicitly tagged as a race by the user - "training" — explicitly tagged as a training activity - "uncategorized" — no event type set; common for Peloton imports and untagged outdoor runs. Distinct from "training": filter for races with event_type == "race" rather than excluding "training", since many non-race activities appear as "uncategorized" not "training" - field omitted — activity pre-dates event type support in the API Args: start_date: Start date in YYYY-MM-DD format end_date: End date in YYYY-MM-DD format activity_type: Optional activity type filter (e.g., cycling, running, swimming) page: Zero-based page number (default 0) page_size: Number of activities per page, max 200 (default 100) |
| get_activities_fordate | Get activities for a specific date Args: date: Date in YYYY-MM-DD format |
| get_activity | Get detailed information for a single activity. Returns a comprehensive summary including timing, distance, heart rate, elevation, training effect, and an event_type field. Common event_type values: "race", "training", "uncategorized" (no event type set by the user). The field is omitted for very old activities that pre-date event type support in the Garmin API. Args: activity_id: ID of the activity to retrieve |
| set_activity_name | Set or update the name of an activity. Args: activity_id: ID of the activity to update activity_name: New activity name |
| set_activity_type | Change the activity type (sport) of an activity. Useful for reclassifying a mislabelled activity, e.g. flipping a run logged as 'trail_running' to 'running', or a 'treadmill_running' walk to 'treadmill_walking'. Call get_activity_types to see all valid type keys. Args: activity_id: ID of the activity to update type_key: Target activity type key (e.g. 'running', 'trail_running', 'treadmill_running', 'cycling', 'lap_swimming') |
| set_activity_description | Set or update the free-text description (notes) of an activity. This is the notes field shown on the activity page — useful for recording how a session felt, kit used, conditions, niggles, etc. Pass an empty string to clear an existing description. Args: activity_id: ID of the activity to update description: New description text (empty string clears it) |
| set_activity_event_type | Set the event type of an activity. Event type categorises the activity's purpose. Valid keys: race, recreation, specialEvent, training, transportation, touring, geocaching, fitness, uncategorized. Args: activity_id: ID of the activity to update event_type: Target event type key (e.g. 'race', 'training') |
| set_perceived_effort | Set the perceived effort (RPE) for an activity. Mirrors Garmin Connect's 'Perceived Effort' rating on a 0-10 scale, where 0 clears the rating. Internally Garmin stores this multiplied by 10 (so RPE 7 is stored as 70); this tool handles the conversion. Args: activity_id: ID of the activity to update rpe: Perceived effort from 0 to 10 (0 clears the rating) |
| set_activity_feel | Set how an activity felt ('How did you feel?'). Mirrors Garmin Connect's 5-point feel rating, stored as one of: 0 = very tired / poor 25 = tired 50 = normal 75 = good 100 = strong Higher is better. Args: activity_id: ID of the activity to update feel: One of 0, 25, 50, 75, 100 |
| get_activity_splits | Get splits for an activity Args: activity_id: ID of the activity to retrieve splits for |
| get_activity_typed_splits | Get typed splits for an activity Args: activity_id: ID of the activity to retrieve typed splits for |
| get_activity_split_summaries | Get split summaries for an activity Args: activity_id: ID of the activity to retrieve split summaries for |
| get_activity_weather | Get weather data for an activity Args: activity_id: ID of the activity to retrieve weather data for |
| get_activity_hr_in_timezones | Get heart rate data in different time zones for an activity Args: activity_id: ID of the activity to retrieve heart rate time zone data for |
| get_activity_power_in_timezones | Get power distribution across training zones for an activity. Returns time spent in each power zone with watt thresholds and duration. Requires a power meter. Zones are based on the athlete's FTP configured in Garmin Connect. Args: activity_id: ID of the activity to retrieve power zone data for |
| get_activity_gear | Get gear data used for an activity Args: activity_id: ID of the activity to retrieve gear data for |
| get_activity_exercise_sets | Get exercise sets for strength training activities Args: activity_id: ID of the activity to retrieve exercise sets for |
| count_activities | Get total count of activities in the user's Garmin account Returns the total number of activities recorded. |
| get_activities | Get activities with pagination support. Retrieves a paginated list of activities ordered newest-first. Use this for browsing through large activity lists when you do not need to filter by date range, or as a complement to get_activities_by_date. Each activity includes an event_type field. Common values: "race", "training", "uncategorized" (no event type set by the user — common for Peloton imports and untagged runs). Filter for races with event_type == "race" rather than excluding "training", as many non-race activities appear as "uncategorized" rather than "training". Args: start: Starting index (default 0) limit: Maximum number of activities to return (default 20, max 100) |
| create_manual_activity | Log a manual activity in Garmin Connect — useful for activities done without a watch. The type_key must match a Garmin activity type. Use get_activity_types to see the full list. Common values: yoga, strength_training, meditation, indoor_cycling, pilates, bouldering, fitness_equipment. Args: type_key: Activity type key (e.g. "yoga", "strength_training") date: Date of the activity in YYYY-MM-DD format duration_minutes: Duration of the activity in minutes start_time: Start time as HH:MM (24-hour, default 09:00) activity_name: Optional title; defaults to the type_key if not provided distance_km: Distance in kilometres (default 0.0 for non-distance activities) time_zone: IANA time zone for the activity (default UTC) |
| get_activity_types | Get all available activity types Returns a list of all activity types supported by Garmin Connect, useful for filtering activities by type. |
| get_stats | Get daily activity stats with curated essential metrics Returns a summary of daily health and activity data including steps, calories, heart rate, stress, body battery, and sleep metrics. Args: date: Date in YYYY-MM-DD format |
| get_user_summary | Get user summary data (compatible with garminconnect-ha) Args: date: Date in YYYY-MM-DD format |
| get_body_composition | Get body composition data for a single date or date range Args: start_date: Date in YYYY-MM-DD format or start date if end_date provided end_date: Optional end date in YYYY-MM-DD format for date range |
| get_stats_and_body | Get stats and body composition data Args: date: Date in YYYY-MM-DD format |
| get_steps_data | Get detailed steps data with 15-minute intervals Note: This returns full interval data (~14KB). For a compact summary, use get_stats() which includes total_steps. Args: date: Date in YYYY-MM-DD format |
| get_daily_steps | Get steps data for a date range Args: start_date: Start date in YYYY-MM-DD format end_date: End date in YYYY-MM-DD format |
| get_training_readiness | Get training readiness data with curated metrics Returns training readiness score and contributing factors. Args: date: Date in YYYY-MM-DD format |
| get_body_battery | Get body battery data with events Args: start_date: Start date in YYYY-MM-DD format end_date: End date in YYYY-MM-DD format |
| get_body_battery_events | Get body battery events data Args: date: Date in YYYY-MM-DD format |
| get_blood_pressure | Get blood pressure data Args: start_date: Start date in YYYY-MM-DD format end_date: End date in YYYY-MM-DD format |
| get_floors | Get floors climbed data Args: date: Date in YYYY-MM-DD format |
| get_rhr_day | Get resting heart rate data Args: date: Date in YYYY-MM-DD format |
| get_heart_rates | Get full heart rate time-series data Note: This returns detailed 2-minute interval data (~25KB). For a compact summary, use get_heart_rates_summary(). Args: date: Date in YYYY-MM-DD format |
| get_heart_rates_summary | Get heart rate summary with essential metrics (lightweight version) Returns a compact summary (~500 bytes) instead of full time-series data (~25KB). Ideal for daily health checkups and LLM integrations. Args: date: Date in YYYY-MM-DD format |
| get_hydration_data | Get hydration data Args: date: Date in YYYY-MM-DD format |
| get_sleep_data | Get full sleep data with all details Note: This returns detailed sleep data (~50KB). For a compact summary, use get_sleep_summary(). Args: date: Date in YYYY-MM-DD format |
| get_sleep_summary | Get sleep summary with only essential metrics (lightweight version) This endpoint returns a compact summary of sleep data (~350 bytes) instead of the full granular data (~50KB). Ideal for daily health checkups and LLM integrations where the full time-series data would overwhelm the context window. Args: date: Date in YYYY-MM-DD format |
| get_stress_data | Get full stress time-series data Note: This returns detailed interval data (~35KB) including body battery. For a compact summary, use get_stress_summary(). Args: date: Date in YYYY-MM-DD format |
| get_stress_summary | Get stress summary with essential metrics (lightweight version) Returns a compact summary (~400 bytes) instead of full time-series data (~35KB). Ideal for daily health checkups and LLM integrations. Args: date: Date in YYYY-MM-DD format |
| get_respiration_data | Get full respiration time-series data Note: This returns detailed interval data (~20KB). For a compact summary, use get_respiration_summary(). Args: date: Date in YYYY-MM-DD format |
| get_respiration_summary | Get respiration summary with essential metrics (lightweight version) Returns a compact summary (~300 bytes) instead of full time-series data (~20KB). Args: date: Date in YYYY-MM-DD format |
| get_spo2_data | Get SpO2 (blood oxygen) data Args: date: Date in YYYY-MM-DD format |
| get_all_day_stress | Get all-day stress data Args: date: Date in YYYY-MM-DD format |
| get_all_day_events | Get daily wellness events data Args: date: Date in YYYY-MM-DD format |
| get_lifestyle_logging_data | Get lifestyle logging data for a specific date Returns lifestyle logging data which allows users to track behaviors and their impact on health metrics. Args: date: Date in YYYY-MM-DD format |
| get_weekly_steps | Get weekly step data aggregates Returns weekly step totals for the specified number of weeks ending at end_date. Args: end_date: End date in YYYY-MM-DD format weeks: Number of weeks to fetch (default 4, max 52) |
| get_weekly_stress | Get weekly stress data aggregates Returns weekly stress values for the specified number of weeks ending at end_date. Args: end_date: End date in YYYY-MM-DD format weeks: Number of weeks to fetch (default 4, max 52) |
| get_weekly_intensity_minutes | Get weekly intensity minutes data aggregates Returns weekly intensity minutes (moderate and vigorous) for the specified number of weeks ending at end_date. Args: end_date: End date in YYYY-MM-DD format weeks: Number of weeks to fetch (default 4, max 52) |
| get_morning_training_readiness | Get morning training readiness score Returns the morning training readiness assessment, which evaluates recovery status and readiness to train based on overnight metrics. Args: date: Date in YYYY-MM-DD format |
| get_full_name | Get user's full name from profile |
| get_unit_system | Get user's preferred unit system from profile |
| get_user_profile | Get user profile information |
| get_userprofile_settings | Get user profile settings |
| get_devices | Get all Garmin devices associated with the user account |
| get_device_last_used | Get information about the last used Garmin device |
| get_device_settings | Get settings for a specific Garmin device Returns device configuration including time/date format, units, activity tracking settings, and alarm information. Args: device_id: Device ID (optional; defaults to the most recently used device when omitted; can be obtained from get_devices or get_device_last_used) |
| get_primary_training_device | Get information about the primary training device Returns details about the device designated as primary for training metrics, along with other wearable devices on the account. |
| get_device_solar_data | Get solar data for a specific device Returns solar charging data for devices with solar panels (e.g., Instinct Solar, Fenix Solar). Only applicable to solar-capable devices. Args: device_id: Device ID (can be obtained from get_devices) date: Date in YYYY-MM-DD format |
| get_device_alarms | Get alarms from all Garmin devices Returns all configured alarms with their schedules, sounds, and enabled status. |