Garmin
STDIOMCP server connecting to Garmin Connect for fitness and health data access
MCP server connecting to Garmin Connect for fitness and health data access
This Model Context Protocol (MCP) server connects to Garmin Connect and exposes your fitness and health data to Claude and other MCP-compatible clients.
uv sync
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 passwordFile-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.
Edit your Claude Desktop configuration file:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsonAdd 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.
For testing, you can use the MCP Inspector from the project root:
npx @modelcontextprotocol/inspector uv run garmin-mcp
Once connected in Claude, you can ask questions like:
If you encounter login issues:
For other issues, check the Claude Desktop logs at:
~/Library/Logs/Claude/mcp-server-garmin.log%APPDATA%\Claude\logs\mcp-server-garmin.logIf 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 "[email protected]" > ~/.garmin_email echo "your_password" > ~/.garmin_password chmod 600 ~/.garmin_email ~/.garmin_password
Then 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-mcp
You 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" ] }