oci ghcr.io/pranciskus/garmin-workouts-mcp:0.1.2stdioupdated 6mo ago
garmin-workouts-mcp is a standalone MCP server for Garmin Connect workouts.
Was kannst du mit Garmin Workouts MCP machen?
Garmin Workouts MCP
garmin-workouts-mcp is a standalone MCP server for Garmin Connect workouts.
It is intended as a focused extension for workflows that need a bit more structure around Garmin workout payloads, especially strength training.
This project is packaged as a stdio MCP server and can be published as an OCI image for MCP registries and Glama deployment. It is not a standalone public HTTP MCP endpoint.
Additions
- Supports Garmin strength workout steps with
repsend conditions. - Supports exercise metadata via explicit Garmin enums or friendly aliases.
- Adds
preview_workout_payloadso payloads can be inspected before upload. - Adds
validate_workoutfor early schema and mapping errors. - Adds
resolve_supported_strength_exercisefor quick mapping checks. - Adds
get_workout_input_schemafor machine-readable client integration. - Includes
walkingas a supported sport type, which is also reflected in the prompt/schema. - Keeps the familiar list/get/delete/schedule/calendar/activity tools.
Environment
Garmin-backed tools authenticate lazily when they are called:
- Authentication path:
GARMIN_EMAILandGARMIN_PASSWORD
The server can start without credentials. Tools that do not talk to Garmin, such as payload preview and schema inspection, still work without secrets.
Workout Input
The upload and preview tools accept a JSON object shaped like this:
{
"name": "Upper Day",
"type": "strength",
"steps": [
{
"stepType": "warmup",
"endConditionType": "lap.button",
"stepDescription": "General warm-up"
},
{
"stepType": "interval",
"exercise": "incline db press",
"endConditionType": "reps",
"stepReps": 8,
"stepDescription": "8-10 reps"
},
{
"stepType": "rest",
"endConditionType": "time",
"stepDuration": 120
}
]
}
For strength exercises, either pass a friendly alias:
{ "exercise": "t bar row" }
or explicit Garmin enums:
{
"exercise": {
"category": "ROW",
"exerciseName": "T_BAR_ROW"
}
}
You can also inspect the accepted structure programmatically through get_workout_input_schema, or resolve likely Garmin strength mappings with resolve_supported_strength_exercise.
Development
Run tests in Docker Compose:
docker compose run --rm tests
Build the runtime image:
docker build -t garmin-workouts-mcp:local .
Smoke test the stdio server startup without Garmin credentials:
python - <<'PY'
import subprocess
proc = subprocess.Popen(
["bash", "-lc", "tail -f /dev/null | docker run --rm -i garmin-workouts-mcp:local"]
)
try:
proc.wait(timeout=5)
print(f"container exited early with code {proc.returncode}")
finally:
if proc.poll() is None:
proc.terminate()
proc.wait()
print("container stayed up for 5 seconds")
PY
Publishing
The intended OCI image location is:
ghcr.io/pranciskus/garmin-workouts-mcp
Registry metadata lives in server.json. The OCI image carries the required label:
io.modelcontextprotocol.server.name=io.github.pranciskus/garmin-workouts-mcp
Glama ownership metadata lives in glama.json. It declares the GitHub maintainer account that can claim and manage the Glama listing.
Installation
Garmin Workouts MCP zu deinem Client hinzufügen. Wähl den, den du nutzt.
claude mcp add ghcr-io-pranciskus-garmin-workouts-mcp-0 -- docker run -i --rm ghcr.io/pranciskus/garmin-workouts-mcp:0.1.2codex mcp add ghcr-io-pranciskus-garmin-workouts-mcp-0 -- docker run -i --rm ghcr.io/pranciskus/garmin-workouts-mcp:0.1.2amp mcp add ghcr-io-pranciskus-garmin-workouts-mcp-0 -- docker run -i --rm ghcr.io/pranciskus/garmin-workouts-mcp:0.1.2{
"mcpServers": {
"ghcr-io-pranciskus-garmin-workouts-mcp-0": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/pranciskus/garmin-workouts-mcp:0.1.2"
]
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"ghcr-io-pranciskus-garmin-workouts-mcp-0": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/pranciskus/garmin-workouts-mcp:0.1.2"
]
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
code --add-mcp '{"name":"ghcr-io-pranciskus-garmin-workouts-mcp-0","command":"docker","args":["run","-i","--rm","ghcr.io/pranciskus/garmin-workouts-mcp:0.1.2"]}'Or add the block manually to `.vscode/mcp.json` under `servers`.
{
"mcpServers": {
"ghcr-io-pranciskus-garmin-workouts-mcp-0": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/pranciskus/garmin-workouts-mcp:0.1.2"
]
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
{
"mcpServers": {
"ghcr-io-pranciskus-garmin-workouts-mcp-0": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/pranciskus/garmin-workouts-mcp:0.1.2"
]
}
}
}Add to `cline_mcp_settings.json` via the MCP Servers panel.
{
"mcpServers": {
"ghcr-io-pranciskus-garmin-workouts-mcp-0": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/pranciskus/garmin-workouts-mcp:0.1.2"
]
}
}
}Add to `~/.gemini/settings.json`.
{
"mcpServers": {
"ghcr-io-pranciskus-garmin-workouts-mcp-0": {
"type": "local",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/pranciskus/garmin-workouts-mcp:0.1.2"
],
"tools": [
"*"
]
}
}
}Add to `~/.copilot/mcp-config.json`, or run `/mcp add` inside the CLI.
{
"context_servers": {
"ghcr-io-pranciskus-garmin-workouts-mcp-0": {
"command": {
"path": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/pranciskus/garmin-workouts-mcp:0.1.2"
]
}
}
}
}Add to your Zed `settings.json`.
docker run -i --rm ghcr.io/pranciskus/garmin-workouts-mcp:0.1.2Run `goose configure`, choose **Add Extension → Command-line Extension**, and paste this command.
Score
39 / 100
Unvollständig
- Dokumentation22/25
- Pflege13/25
- Vertrauen6/20
- Funktionsumfang0/15
- Installation12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 176 days ago
- Has a release history
- Repository is not archived
- No licence detected
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 0 tool(s) documented
- Provides prompt templates
- Provides resources
- 12 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint — no local install
Versionsverlauf
| Versionen | Veröffentlicht |
|---|---|
| 0.1.2Aktuell | 8. März 2026 |
| 0.1.0 | 8. März 2026 |