garmin-connect-mcp
An MCP server that provides access to Garmin Connect fitness, health, and training data through 61 specialized tools. It enables users to query activities, sleep metrics, and performance stats directly within AI clients like Claude or Cursor.
README
garmin-connect-mcp
MCP server for Garmin Connect. Access your fitness, health, and training data from Claude Code, Claude Desktop, Cursor, Windsurf, or any MCP client.
61 tools across 7 categories: activities, daily health, trends, sleep, body composition, performance/training, and profile/devices.
API endpoints and authentication flow based on python-garminconnect by cyberjunky.
Requirements
- Node.js 20+
- A Garmin Connect account (email and password)
Installation
Claude Code
claude mcp add garmin -e GARMIN_EMAIL=you@email.com -e GARMIN_PASSWORD=yourpass -- npx -y @nicolasvegam/garmin-connect-mcp
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"garmin": {
"command": "npx",
"args": ["-y", "@nicolasvegam/garmin-connect-mcp"],
"env": {
"GARMIN_EMAIL": "you@email.com",
"GARMIN_PASSWORD": "yourpass"
}
}
}
}
Cursor
Add to .cursor/mcp.json in your project root:
{
"mcpServers": {
"garmin": {
"command": "npx",
"args": ["-y", "@nicolasvegam/garmin-connect-mcp"],
"env": {
"GARMIN_EMAIL": "you@email.com",
"GARMIN_PASSWORD": "yourpass"
}
}
}
}
Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"garmin": {
"command": "npx",
"args": ["-y", "@nicolasvegam/garmin-connect-mcp"],
"env": {
"GARMIN_EMAIL": "you@email.com",
"GARMIN_PASSWORD": "yourpass"
}
}
}
}
Any MCP Client
Run the server with environment variables:
GARMIN_EMAIL=you@email.com GARMIN_PASSWORD=yourpass npx -y @nicolasvegam/garmin-connect-mcp
The server communicates over stdio using the Model Context Protocol.
Available Tools
Activities (12 tools)
| Tool | Description |
|---|---|
get_activities |
List recent activities with pagination |
get_activities_by_date |
Search activities within a date range |
get_last_activity |
Get the most recent activity |
count_activities |
Get total number of activities |
get_activity |
Summary data for a specific activity |
get_activity_details |
Detailed metrics: HR, pace, elevation time series |
get_activity_splits |
Per-km or per-mile split data |
get_activity_weather |
Weather conditions during activity |
get_activity_hr_zones |
Time in each heart rate zone |
get_activity_exercise_sets |
Strength training sets (reps, weight) |
get_activity_types |
All available activity types |
get_progress_summary |
Fitness stats over a date range by activity type |
Daily Health (14 tools)
| Tool | Description |
|---|---|
get_daily_summary |
Full daily summary (steps, calories, distance, etc.) |
get_steps |
Step count for a date |
get_steps_chart |
Intraday step data throughout the day |
get_heart_rate |
Heart rate data (resting, max, zones, time series) |
get_resting_heart_rate |
Resting heart rate for a date |
get_stress |
Stress levels and time series |
get_body_battery |
Body Battery energy levels (date range) |
get_body_battery_events |
Battery charge/drain events for a day |
get_respiration |
Breathing rate data |
get_spo2 |
Blood oxygen saturation |
get_intensity_minutes |
Moderate/vigorous intensity minutes |
get_floors |
Floors climbed chart data |
get_hydration |
Daily hydration/water intake |
get_daily_events |
Daily wellness events |
Trends (4 tools)
| Tool | Description |
|---|---|
get_daily_steps_range |
Daily step counts over a date range |
get_weekly_steps |
Weekly step aggregates |
get_weekly_stress |
Weekly stress aggregates |
get_weekly_intensity_minutes |
Weekly intensity minutes |
Sleep (2 tools)
| Tool | Description |
|---|---|
get_sleep_data |
Sleep stages, score, bed/wake times |
get_sleep_data_raw |
Raw sleep data with HR and SpO2 |
Body Composition (5 tools)
| Tool | Description |
|---|---|
get_body_composition |
Weight, BMI, body fat %, muscle mass (date range) |
get_latest_weight |
Most recent weight entry |
get_daily_weigh_ins |
All weigh-ins for a date |
get_weigh_ins |
Weigh-in records over a date range |
get_blood_pressure |
Blood pressure readings (date range) |
Performance & Training (11 tools)
| Tool | Description |
|---|---|
get_vo2max |
VO2 Max estimate (running/cycling) |
get_training_readiness |
Training Readiness score |
get_training_status |
Training status and load |
get_hrv |
Heart Rate Variability |
get_endurance_score |
Endurance fitness score |
get_hill_score |
Climbing performance score |
get_race_predictions |
5K/10K/half/full marathon predictions |
get_fitness_age |
Estimated fitness age |
get_personal_records |
All personal records |
get_lactate_threshold |
Lactate threshold HR and pace |
get_cycling_ftp |
Functional Threshold Power (cycling) |
Profile & Devices (13 tools)
| Tool | Description |
|---|---|
get_user_profile |
User social profile and preferences |
get_user_settings |
User settings, measurement system, sleep schedule |
get_devices |
Registered Garmin devices |
get_device_settings |
Settings for a specific device |
get_device_last_used |
Last used device info |
get_primary_training_device |
Primary training device |
get_device_solar_data |
Solar charging data |
get_gear |
All tracked gear/equipment |
get_gear_stats |
Usage stats for a gear item |
get_goals |
Active goals and progress |
get_earned_badges |
Earned badges and achievements |
get_workouts |
Saved workouts |
get_workout |
Specific workout by ID |
Authentication
Uses Garmin Connect credentials (email/password) via environment variables. OAuth tokens are cached in ~/.garmin-mcp/ to avoid re-authentication on each request.
MFA (Multi-Factor Authentication)
If your Garmin account has MFA enabled (required for devices with ECG capabilities), you need to run the interactive setup once before using the MCP server:
GARMIN_EMAIL='you@email.com' GARMIN_PASSWORD='yourpass' npx -y @nicolasvegam/garmin-connect-mcp setup
This will:
- Log in to Garmin Connect
- Prompt you for the MFA code sent to your email or authenticator app
- Save OAuth tokens to
~/.garmin-mcp/
After setup, the MCP server will use the saved tokens automatically — no MFA prompt needed until the tokens expire. When they do, simply run the setup command again.
Development
git clone https://github.com/Nicolasvegam/garmin-connect-mcp.git
cd garmin-connect-mcp
npm install
npm run build
To test locally:
GARMIN_EMAIL=you@email.com GARMIN_PASSWORD=yourpass npm start
Credits
- API endpoints and authentication flow based on
python-garminconnectby cyberjunky
License
MIT
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。