garmin-mcp
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_statusconnect_garmin— возвращает одноразовый URL для браузера со сроком действия десять минутget_profiledisconnect_garminer
Текущий инструмент данных Garmin работает только на чтение. disconnect_garmin изменяет только локальное состояние подключения,
удаляя сохранённый сеанс. Учётные данные аккаунта и остальные вводятся только на странице связывания в браузере и
никогда не передаются как аргументы инструментов MCP. Инструменты для здоровья/активности ещё не реализованы.
Проверка
uv run ruff check .
uv run mypy src
uv run pytest
uv build
uv run pip-auditНе помещайте реальные учётные данные Garmin в CI. Любой буфущее живой тест должен использовать выделенный аккаунт и явный маркер интеграционного теста.
This server cannot be deployed
Maintenance
Related MCP Connectors
Remote MCP server for training, nutrition, wellness, and performance data with OAuth 2.0.
Read-only access to InfluSense influencer discovery, ratings, watchlists, and reports via MCP.
Unofficial Garmin Connect access: sleep, HRV, training, activities, workouts and weight.
11Hosted MCP server with managed OAuth for 15+ toolkits: Google Workspace, Fitbit, Oura, Kalshi, etc.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceConnects MCP clients to Garmin Connect data, enabling queries about activities, sleep, heart rate, body battery, and training status.1MIT
- FlicenseNot gradedqualityDmaintenanceExposes Garmin Connect health and activity data (steps, sleep, heart rate, etc.) via MCP tools, with built-in login and MFA support.-
- AlicenseBqualityBmaintenanceEnables retrieval of Garmin Connect data such as activities, sleep, heart rate, and body battery levels using unofficial API through MCP tools.4MIT
- FlicenseAqualityCmaintenanceProvides read-only access to your Garmin Connect health data, including sleep, HRV, body battery, stress, training readiness, and activities, through an MCP server.14-