garmin-mcp
Персональный Garmin MCP
Локальный MCP-сервер для создания и планирования структурированных тренировок в Garmin Connect через неофициальные конечные точки Garmin.
Это экспериментальный личный проект. Garmin может изменить конечные точки, ограничить частоту запросов или отозвать сессию без предупреждения. Не открывайте доступ к серверу из интернета без добавления отдельной аутентификации.
Возможности
проверяет сохранённую сессию Garmin;
предпросматривает JSON Garmin без внесения изменений;
создаёт тренировки и при необходимости добавляет их в календарь;
выводит список библиотеки тренировок и календаря;
читает завершённые активности, компактные сводки и метрики кругов/отрезков;
читает доступные данные о сне, HRV, Body Battery, Training Readiness и Training Status;
удаляет тренировки и убирает тренировки из календаря;
поддерживает бег, велосипед, ходьбу и пешие прогулки;
поддерживает шаги по времени, расстоянию и
lap button;поддерживает повторение интервалов;
поддерживает целевые показатели темпа, пульса, мощности и каденса;
требует
confirm=trueдля каждого изменения.
Related MCP server: garmin-mcp
Установка
Docker Compose — рекомендуется
Для локального использования требуется Docker с поддержкой Compose. Соберите образ из корня репозитория:
docker compose buildПри сборке зависимости Python устанавливаются с помощью uv строго из uv.lock.
Выполните интерактивный вход один раз. Пароль и код MFA вводятся непосредственно в контейнере и не сохраняются. Токены OAuth сохраняются в приватном именованном томе garmin-mcp_garmin_tokens:
docker compose --profile login run --rm garmin-loginЗапустите MCP-сервер:
docker compose up -d garmin-mcp
docker compose psКонечная точка доступна по адресу http://127.0.0.1:8000/mcp. Чтобы использовать другой локальный порт:
GARMIN_MCP_PORT=8765 docker compose up -d garmin-mcpПросмотр журналов или остановка сервера:
docker compose logs -f garmin-mcp
docker compose downdocker compose down сохраняет токены Garmin. Выполнение docker compose down -v удаляет том и его токены.
Локальная установка без Docker
Требуются Python 3.12+ и uv.
cd /path/to/garmin-mcp
uv sync --extra devОдноразовый вход
uv run garmin-mcp-loginСкрипт в интерактивном режиме запрашивает адрес электронной почты, пароль и код MFA при необходимости. Пароль не сохраняется. Токены OAuth сохраняются в .garmin-tokens/garmin_tokens.json с ограниченными правами доступа. Каталог уже включён в .gitignore.
Чтобы сохранить токены в другом месте:
export GARMIN_TOKEN_DIR=/safe/private/path/garmin-tokens
uv run garmin-mcp-loginЛокальный MCP через stdio
export GARMIN_TOKEN_DIR=/safe/private/path/garmin-tokens
uv run garmin-mcpПример конфигурации MCP-клиента:
{
"mcpServers": {
"garmin": {
"command": "/absolute/path/to/garmin-mcp/.venv/bin/garmin-mcp",
"env": {
"GARMIN_TOKEN_DIR": "/safe/private/path/garmin-tokens"
}
}
}
}Потоковый HTTP для ChatGPT
export GARMIN_MCP_TRANSPORT=streamable-http
export GARMIN_MCP_HOST=127.0.0.1
export GARMIN_MCP_PORT=8000
export GARMIN_TOKEN_DIR=/safe/private/path/garmin-tokens
uv run garmin-mcpКонечная точка: http://127.0.0.1:8000/mcp.
ChatGPT должен иметь возможность доступа к конечной точке по HTTPS. Для личного тестирования можно использовать защищённый туннель. Не открывайте этот MVP напрямую в интернет: он намеренно не включает отдельный сервер ресурсов OAuth для доступа к самому MCP-серверу.
Пример аргумента preview_workout
{
"workout": {
"name": "6 x 800",
"sport": "running",
"description": "Controlled intervals",
"blocks": [
{
"steps": [
{
"step_type": "warmup",
"duration_type": "time",
"duration_value": 900
}
]
},
{
"repeat": 6,
"steps": [
{
"step_type": "interval",
"duration_type": "distance",
"duration_value": 800,
"target_type": "pace_seconds_per_km",
"target_low": 250,
"target_high": 260
},
{
"step_type": "recovery",
"duration_type": "time",
"duration_value": 120
}
]
},
{
"steps": [
{
"step_type": "cooldown",
"duration_type": "time",
"duration_value": 600
}
]
}
]
}
}Значения темпа указываются в секундах на километр: 250 = 4:10/км и 260 = 4:20/км. Сервер преобразует их в значения м/с, используемые Garmin Connect.
После предпросмотра вызовите create_workout с тем же объектом, датой в формате YYYY-MM-DD и confirm=true.
Контекст тренировок только для чтения
Сервер предоставляет компактные инструменты только для чтения для адаптации будущих планов к выполненной работе:
list_activitiesвыводит список активностей в заданном диапазоне дат (включительно) с необязательным фильтром по типу активности Garmin;get_activity_summaryвозвращает метрики планирования для одной активности;get_activity_splitsвозвращает компактные метрики кругов и интервалов;get_recovery_statusобъединяет доступные данные о сне, HRV, Body Battery, Training Readiness и Training Status за одну дату.
Ответы об активностях намеренно не содержат GPS-координаты и данные владельца. Метрики восстановления зависят от устройства Garmin, учётной записи и даты. Отсутствующий источник возвращается как недоступный и не приводит к сбою всего запроса на восстановление.
Проверки
uv run --extra dev pytest
uv run --extra dev ruff check .Модульные тесты не связываются с Garmin и не требуют учётных данных.
Важные ограничения
Это не официальный API тренировок Garmin.
При частых входах могут возвращаться ответы HTTP 429; используйте сохранённые токены повторно.
Токены предоставляют доступ к Garmin Connect и должны быть защищены как пароль.
Если создание прошло успешно, но планирование не удалось, инструмент возвращает
created_not_scheduledиworkout_id; созданная тренировка остаётся в библиотеке.Перед регулярным использованием протестируйте одну простую тренировку в Garmin Connect и на конкретной модели часов.
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
- AlicenseDqualityCmaintenanceGarmin Workouts MCP is a standalone MCP server for Garmin Connect workouts. It is intended as a focused extension for workflows that need a bit more structure around Garmin workout payloads, especially strength training.151MIT
- AlicenseNot gradedqualityCmaintenancePersonal MCP server for interacting with your Garmin Connect data. Exposes 62 tools across 11 domains including activities, health, training, and workouts.1MIT
- AlicenseBqualityCmaintenanceExposes personal Garmin Connect data to MCP-capable clients like Claude and Gemini. Enables querying daily stats, heart rate, sleep, activities, and managing workouts.16MIT
- AlicenseAqualityBmaintenanceMCP server for reading and querying Garmin Connect data, including activities, strength history, recovery, trends, and optionally creating workouts.12MIT
Related MCP Connectors
List, fetch, create, edit (replace), delete and schedule structured workouts on Garmin Connect (runn
MCP server for Withings health data — sleep, activity, heart, and body metrics.
Wger MCP — wraps wger Workout Manager REST API (free, no auth for read)
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/aapiskotin/garmin-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server