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 installed
Maintenance
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
- AlicenseNot gradedqualityCmaintenanceConnects 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.1MIT
- AlicenseNot gradedqualityBmaintenanceConnects MCP clients to Garmin Connect data, enabling queries about activities, sleep, heart rate, body battery, and training status.MIT
- FlicenseNot gradedqualityBmaintenanceExposes 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
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
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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