loading…
Search for a command to run...
loading…
Enables Claude Desktop to access and analyze Garmin wearable health data including sleep, HRV, Body Battery, and activity metrics. Users can query their health
Enables Claude Desktop to access and analyze Garmin wearable health data including sleep, HRV, Body Battery, and activity metrics. Users can query their health trends, track recovery, and generate interactive HTML dashboards using natural language.
Access your Garmin Connect health data directly in Claude Desktop and Claude Code CLI
An MCP (Model Context Protocol) server that provides Claude with access to your Garmin wearable health data including sleep, recovery, HRV, workouts, and more.
# 1. Clone this repository
git clone https://github.com/eversonl/garmin-health-mcp-server.git
cd garmin-health-mcp-server
# 2. Install Node.js dependencies
npm install
# 3. Install Python dependencies
pip3 install garminconnect fitparse gpxpy
# Or on managed systems:
pip3 install --user garminconnect fitparse gpxpy
# 4. Create .env file with your Garmin credentials
cp .env.example .env
# Edit .env and add your GARMIN_EMAIL and GARMIN_PASSWORD
# 5. Authenticate with Garmin Connect
npm run auth
Edit your Claude Desktop configuration file:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.jsonAdd this MCP server configuration:
{
"mcpServers": {
"garmin-health": {
"command": "node",
"args": ["/absolute/path/to/garmin-health-mcp-server/index.js"],
"env": {
"GARMIN_EMAIL": "[email protected]",
"GARMIN_PASSWORD": "your-password"
}
}
}
}
Important: Replace /absolute/path/to/garmin-health-mcp-server/ with the actual full path where you cloned this repo.
Completely quit and restart Claude Desktop for the MCP server to load.
For Claude Code CLI users, this repository includes a .mcp.json configuration file that enables automatic MCP server loading.
Set environment variables with your Garmin credentials:
# Windows PowerShell
setx GARMIN_EMAIL "[email protected]"
setx GARMIN_PASSWORD "your-password"
# Linux/macOS
export GARMIN_EMAIL="[email protected]"
export GARMIN_PASSWORD="your-password"
Authenticate with Garmin:
npm run auth
Start Claude Code from any directory:
claude
Verify the MCP server is loaded:
/mcp
You should see garmin-health listed as connected.
Start querying your health data:
"How did I sleep last night?"
"What's my body battery level today?"
📘 For detailed Claude Code setup instructions, see CLAUDE_CODE_SETUP.md.
Note: The .mcp.json file uses environment variable expansion for security. Update the args path if you installed the server in a different location.
Once configured, ask Claude questions like:
"How did I sleep last night?"
"What's my Body Battery looking like this week?"
"Show me my activities from the past month"
"Is my HRV improving?"
"Generate a health dashboard for the last 30 days"
Claude will use the MCP tools to fetch your Garmin data and provide insights.
The server exposes these tools to Claude:
| Tool | Description |
|---|---|
get_sleep_data |
Sleep hours, stages, quality scores |
get_body_battery |
Recovery metric (0-100) |
get_hrv_data |
Heart rate variability trends |
get_heart_rate |
Resting, max, min heart rate |
get_activities |
Workout/exercise data |
get_stress_levels |
All-day stress tracking |
get_summary |
Combined health overview |
get_user_profile |
Account and device info |
generate_chart |
Create interactive HTML visualizations |
claude_desktop_config.json is absolute (starts with / or C:\)index.js exists at that pathnpm install in the repo directorynpm run auth to refresh tokens.env file or environment variablesnode --versionpython3 -c "import garminconnect"get_summary tool instead of calling multiple individual tools.env and claude_desktop_config.json# Run the server directly (for testing)
npm start
# Test authentication
npm run auth
# Run tests
npm test
MIT © EversonL
Built with:
If you find this MCP server useful, consider supporting its development:
Questions or issues? Open an issue on GitHub!
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"garmin-health-mcp-server": {
"command": "npx",
"args": []
}
}
}