Skip to main content
Glama

Garmin MCP

Статус проекта (2026-08-23): реализация personal-tunnel; локальные дымовые тесты проходят. Не включайте доступ для друзей или публичный MCP-вход. Реальные учётные данные Garmin остаются заблокированными, пока оператор явно не одобрит отдельный публичный HTTPS-туннель link-web и не выполнит чек-лист живого тестирования из PERSONAL_TUNNEL_RUNBOOK.md.

Многопользовательский MCP-сервер ресурсов с доступом только на чтение, который оборачивает cyberjunky/python-garminconnect. Он предоставляет аутентифицированные данные Garmin, не принимая идентификатор пользователя в качестве аргумента инструмента.

Модель безопасности

Приведённые ниже пункты описывают исходный замысел. Они пока не все подтверждены текущей реализацией; известные недоработки и требуемые приёмочные тесты отслеживаются в DESIGN_DRAFT.md.

  • MCP bearer-токены проверяются отдельно от аутентификации Garmin. Production OIDC проверяет подпись, эмитента, аудиторию, срок действия, требуемые области и использует проверенное утверждение sub.

  • Адрес электронной почты Garmin, пароль и MFA-коды существуют только во время запроса. Они не сохраняются и не логируются. Журналирование доступа Uvicorn отключено.

  • Сохраняется только сериализованный JSON сеанса python-garminconnect, зашифрованный с помощью AES-256-GCM и аутентифицированный относительно владеющего принципала, чтобы шифротекст нельзя было перенести между пользователями.

  • MFA-клиенты являются локальными для процесса, одноразовыми, привязанными к владельцу и истекают через пять минут.

  • URL-адреса подключения размещают своё подписанное одноразовое состояние во фрагменте. Внешний JavaScript очищает фрагмент и переносит состояние в тело POST-запроса, не позволяя ему попадать в журналы доступа HTTP и прокси.

  • Отключение удаляет локальные зашифрованные токены. Он не отзывает токен, уже выпущенный Garmin; при подозрении на компрометацию отзовите доступ в настройках безопасности учётной записи Garmin.

Related MCP server: garmin-mcp

Режим персонального туннеля ChatGPT

В персональном варианте намеренно используются два слушателя:

  • SERVER_ROLE=mcp на порту loopback 3000. Только OpenAI Secure MCP Tunnel может получить доступ к этому порту.

  • SERVER_ROLE=link-web на порту loopback 3001. Отдельный HTTPS-туннель может открывать только этот слушатель, чтобы телефон мог вводить учётные данные Garmin, не открывая MCP-endpoint.

AUTH_MODE=tunnel имеет один настроенный TUNNEL_PRINCIPAL_ID; это не многопользовательский режим. Туннель OpenAI является границей аутентификации, и сервер отклоняет комбинированный режим или привязку не к loopback, если изоляция контейнера явно не включена. Полная настройка описана в PERSONAL_TUNNEL_RUNBOOK.md.

Локальный запуск

Требуются Python 3.12+, PostgreSQL 17 и uv.

cp .env.example .env
# Fill secrets, then for local-only bearer authentication set AUTH_MODE=development.
uv sync --all-extras
psql "$DATABASE_URL" -f migrations/001_initial.sql
uv run garmin-mcp

Или выполните docker compose up --build после создания .env. Compose публикует оба порта приложения только на 127.0.0.1 и не публикует PostgreSQL. MCP-endpoint находится по адресу /mcp; endpoint проверки здоровья — /healthz. В режиме разработки само значение bearer является локальным идентификатором пользователя. Никогда не открывайте режим разработки за пределы loopback.

Инструменты MCP

  • get_connection_status

  • connect_garmin — возвращает одноразовый URL для браузера со сроком действия десять минут

  • get_profile

  • disconnect_garminer

Текущий инструмент данных Garmin работает только на чтение. disconnect_garmin изменяет только локальное состояние подключения, удаляя сохранённый сеанс. Учётные данные аккаунта и остальные вводятся только на странице связывания в браузере и никогда не передаются как аргументы инструментов MCP. Инструменты для здоровья/активности ещё не реализованы.

Проверка

uv run ruff check .
uv run mypy src
uv run pytest
uv build
uv run pip-audit

Не помещайте реальные учётные данные Garmin в CI. Любой буфущее живой тест должен использовать выделенный аккаунт и явный маркер интеграционного теста.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Connects MCP clients to Garmin Connect data, enabling queries about activities, sleep, heart rate, body battery, and training status.
    1
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Exposes Garmin Connect health and activity data (steps, sleep, heart rate, etc.) via MCP tools, with built-in login and MFA support.
    -
  • A
    license
    B
    quality
    B
    maintenance
    Enables retrieval of Garmin Connect data such as activities, sleep, heart rate, and body battery levels using unofficial API through MCP tools.
    4
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Provides read-only access to your Garmin Connect health data, including sleep, HRV, body battery, stress, training readiness, and activities, through an MCP server.
    14
    -