Garmin MCP Server
Connects to Garmin Connect to list recent activities, get detailed activity information, access health metrics (steps, heart rate, sleep), and view body composition data.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Garmin MCP ServerShow me my recent activities"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Garmin MCP Server
This Model Context Protocol (MCP) server connects to Garmin Connect and exposes your fitness and health data to Claude and other MCP-compatible clients.
Features
List recent activities
Get detailed activity information
Access health metrics (steps, heart rate, sleep)
View body composition data
Related MCP server: Garmin Connect MCP Server
Setup
Local Development
Install the required packages on a new environment:
uv syncRemote Deployment (Railway)
Want to host this MCP server remotely and access it from AI assistants like Poke? See:
SETUP_GUIDE.md - Quick start guide
RAILWAY_DEPLOYMENT.md - Detailed deployment instructions
Quick deploy: Run
./deploy_to_railway.sh(requires Railway CLI)
Running the Server
Configuration
Your Garmin Connect credentials are read from environment variables:
GARMIN_EMAIL: Your Garmin Connect email addressGARMIN_EMAIL_FILE: Path to a file containing your Garmin Connect email addressGARMIN_PASSWORD: Your Garmin Connect passwordGARMIN_PASSWORD_FILE: Path to a file containing your Garmin Connect password
File-based secrets are useful in certain environments, such as inside a Docker container. Note that you cannot set both GARMIN_EMAIL and GARMIN_EMAIL_FILE, similarly you cannot set both GARMIN_PASSWORD and GARMIN_PASSWORD_FILE.
With Claude Desktop
Create a configuration in Claude Desktop:
Edit your Claude Desktop configuration file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Add this server configuration:
{
"mcpServers": {
"garmin": {
"command": "uvx",
"args": [
"--python",
"3.12",
"--from",
"git+https://github.com/Taxuspt/garmin_mcp",
"garmin-mcp"
],
"env": {
"GARMIN_EMAIL": "YOUR_GARMIN_EMAIL",
"GARMIN_PASSWORD": "YOUR_GARMIN_PASSWORD"
}
}
}
}Replace the path with the absolute path to your server file.
Restart Claude Desktop
With MCP Inspector
For testing, you can use the MCP Inspector from the project root:
npx @modelcontextprotocol/inspector uv run garmin-mcpUsage Examples
Once connected in Claude, you can ask questions like:
"Show me my recent activities"
"What was my sleep like last night?"
"How many steps did I take yesterday?"
"Show me the details of my latest run"
Security Note
Troubleshooting
If you encounter login issues:
Verify your credentials are correct
Check if Garmin Connect requires additional verification
Ensure the garminconnect package is up to date
For other issues, check the Claude Desktop logs at:
macOS:
~/Library/Logs/Claude/mcp-server-garmin.logWindows:
%APPDATA%\Claude\logs\mcp-server-garmin.log
Garming Connect one-time code
If you have one-time codes enabled in your account, you need to login at the command line first to set the token in the interactive cli.
The app expects either the env var GARMIN_EMAIL or GARMIN_EMAIL_FILE. You can store these in files with the following command.
echo "your_email@example.com" > ~/.garmin_email
echo "your_password" > ~/.garmin_password
chmod 600 ~/.garmin_email ~/.garmin_passwordThen you can manually run the login script.
GARMIN_EMAIL_FILE=~/.garmin_email GARMIN_PASSWORD_FILE=~/.garmin_password uvx --python 3.12 --from git+https://github.com/Taxuspt/garmin_mcp garmin-mcpYou will likely see
Garmin Connect MFA required. Please check your email/phone for the code.
Enter MFA code: XXXXXX
Oauth tokens stored in '~/.garminconnect' directory for future use. (first method)
Oauth tokens encoded as base64 string and saved to '~/.garminconnect_base64' file for future use. (second method)After setting the token at the cli, you can use the following in Claude, without the env vars because the Oauth tokens have been set.
"garmin": {
"command": "uvx",
"args": [
"--python",
"3.12",
"--from",
"git+https://github.com/Taxuspt/garmin_mcp",
"garmin-mcp"
]
}This server cannot be deployed
Maintenance
Related MCP Connectors
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
Pace is a remote MCP server that exposes wearable and fitness data to Claude via the Model Context Protocol. It connects to Garmin, Oura, Whoop, Polar, Fitbit and 20+ devices and provides 15 tools for querying sleep, activity, recovery, and training data. Hosted on Google Cloud Run, OAuth 2.1 authentication, Streamable HTTP transport. Instructions: First you need to create an account at: https://pacetraining.co and connect your wearables. After that you can connect the remote Server via Custom Connector in Claude and OAuth 2.1 Flow startet.
MCP server for Withings health data — sleep, activity, heart, and body metrics.
- SomviaOAuthapp.somvia
Private Apple Health metrics and workout detail for ChatGPT, Claude, and any MCP client.
Related MCP Servers
- AlicenseBqualityAmaintenanceConnects to Garmin Connect and exposes your fitness and health data (activities, sleep, heart rate, steps, body composition) to Claude and other MCP-compatible clients.1481,126MIT
- AlicenseAqualityBmaintenanceA Model Context Protocol (MCP) server for Garmin Connect integration. Access your activities, health data, training metrics, and more through Claude and other LLMs.2262MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that gives Claude access to your Garmin Connect fitness and health data, including steps, sleep, activities, heart rate, and more.1MIT
- AlicenseAqualityBmaintenanceA read-only MCP server that gives Claude Desktop access to your Garmin Connect data — daily health metrics, sleep, activities, training status, and body composition.6MIT