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. Любой буфущее живой тест должен использовать выделенный аккаунт и явный маркер интеграционного теста.

F
license - not found
Not graded
quality - not tested
C
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
    Not graded
    quality
    C
    maintenance
    Connects Garmin Connect data to MCP-compatible clients, providing access to fitness activities, health metrics, and training plans. It supports advanced features like headless 2FA and automated MFA retrieval to enable seamless health data interaction through natural language.
    1
    MIT
  • 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.
    MIT
  • F
    license
    Not graded
    quality
    B
    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

View all related MCP servers

Related MCP Connectors

  • Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.

  • Mastodon MCP — public Mastodon data via mastodon.social (no auth required)

  • Wise (https://wise.com) MCP, multi-currency account access via Personal Token + SCA key. Reads profi

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/balabeir/garmin-mcp'

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