Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"garmin-workouts-mcp": {
"args": [
"garth"
],
"command": "uvx"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
An MCP server that allows you to create, list, and manage Garmin Connect workouts using natural language descriptions through MCP-compatible clients.
Run this in your terminal to verify the server starts. Then let us know if it worked — your result helps other developers.
uvx 'garth' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
Checked garth against OSV.dev.
Be the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in health
MCP server providing seamless access to FHIR APIs for AI tools and healthcare applications
MCP server for the ClinicalTrials.gov v2 API. Search trials, retrieve study details and results, and match patients to eligible trials.
Manage your Hevy workouts, routines, folders, and exercise templates. Create and update sessions faster, organize plans, and search exercises to build workouts quickly. Stay synced with changes so your training log is always up to date.
MCP server for Oura Ring API v2 (sleep, activity, readiness, heart rate, workouts).
MCP Security Weekly
Get CVE alerts and security updates for Garmin Workouts Mcp and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
An MCP server that allows you to create, list, and manage Garmin Connect workouts using natural language descriptions through MCP-compatible clients.
uvx garmin-workouts-mcp
Add to your MCP client configuration:
{
"mcpServers": {
"garmin-workouts": {
"command": "uvx",
"args": ["garmin-workouts-mcp"],
"env": { # See Authentication section for details
"GARMIN_EMAIL": "your_email@example.com",
"GARMIN_PASSWORD": "your_password"
}
}
}
}
The Garmin Workouts MCP Server authenticates with Garmin Connect using garth [https://github.com/matin/garth]. There are two primary ways to provide your Garmin credentials:
You can set your Garmin Connect email and password as environment variables before starting the MCP server.
GARMIN_EMAIL: Your Garmin Connect email address.GARMIN_PASSWORD: Your Garmin Connect password.Example:
export GARMIN_EMAIL="your_email@example.com"
export GARMIN_PASSWORD="your_password"
uvx garmin-workouts-mcp
garthAlternatively, you can log in to Garmin Connect once using the garth library directly and save your authentication tokens to a directory, which the MCP server will then use for subsequent sessions. This method is useful if you prefer not to store your credentials as environment variables or as part of your MCP client configuration.
To log in out-of-band:
Install garth:
pip install garth
Run the following Python script in your terminal:
import garth
from getpass import getpass
email = input("Enter email address: ")
password = getpass("Enter password: ")
# If there's MFA, you'll be prompted during the login
garth.login(email, password)
garth.save("~/.garth")
Follow the prompts to enter your Garmin Connect email and password. Upon successful login, garth will save your authentication tokens to ~/.garth.
The MCP server will automatically look for these saved tokens. If you wish to store them in a custom location, you can set the GARTH_HOME environment variable.
This server provides the following MCP tools that can be used through any MCP-compatible client:
Use the generate_workout_data_prompt tool to create a prompt for an LLM to generate structured workout data:
generate_workout_data_prompt("10 min warmup, 5x(1km at 4:30 pace, 2min recovery), 10 min cooldown")
Use the upload_workout tool to upload structured workout data to Garmin Connect:
upload_workout(workout_data_json)
Use the schedule_workout tool to schedule a workout on a specific date:
schedule_workout("workout_id_here", "2024-01-15")
Use the delete_workout tool to remove a workout from Garmin Connect:
delete_workout("workout_id_here")