Skip to main content
Glama
elkno

GymTimer MCP Server

by elkno

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
GYMTIMER_CONFIG_DIRNoWhere tokens and your environment choice are stored.~/.config/gymtimer
GYMTIMER_CONTAINER_IDNoThe CloudKit container to talk to.iCloud.com.elkno.gymtimer.gymtimer
GYMTIMER_CK_ENVIRONMENTNoWhich CloudKit environment to read. Defaults to production. Falls back to ~/.config/gymtimer/environment before this default.production
GYMTIMER_CK_API_TOKEN_PATHNoPath to the API token file.<config dir>/ck-api-token
GYMTIMER_CK_WEB_AUTH_TOKEN_PATHNoPath to your web auth token file.<config dir>/ck-web-auth-token

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_workout_historyA

Returns completed workout sessions (with every exercise and set) from the last N days, newest first. Use this to see what the user actually did recently. Each session includes difficultyRating (1-5, how hard the user said the workout felt right after finishing it, 5 being extremely hard) when available - use it alongside volume/reps trends to judge whether intensity or volume should change.

get_exercise_historyA

Returns every logged set for one specific exercise over time (most recent first), so you can see progression (reps/weight trend) for that movement.

analyze_training_volumeA

Aggregates sets/reps/volume (reps x weight) over the last N days, grouped either by muscle group or by exercise. Use this to spot over/under-trained muscle groups before proposing a workout.

get_recovery_statusA

Returns days since each muscle group was last trained, plus sets trained this week, so you can judge whether a muscle group is ready to train again.

get_exercise_libraryA

Returns the user's exercise library (name, muscle groups, equipment, category, movement pattern, whether it has a custom photo), optionally filtered. Use this to know what exercises/equipment are available when proposing a workout. Note: category and movementPattern are null when the exercise has no stored value, and in practice are unreliable even when set (this app's exercises are largely left at the defaults "compound"/"push", so a hinge or isometric movement may still report "push"). Judge movement patterns from the exercise name and muscleGroups instead of trusting these two fields.

get_training_preferencesA

Returns the user's full profile: training preferences (goal, experience level, available equipment, days per week, session length, injuries/limitations) PLUS body/personal info (height, weight, age, biological sex, body type, fat distribution, activity level) and food preferences (dietary restrictions/allergies, cuisine/food notes, nutrition goal, daily calorie/macro targets). Always check this before generating a workout AND before generating or adapting a nutrition plan (see save_nutrition_plan).

create_exerciseA

Adds a new exercise to the user's library, optionally with a photo. Note: the new exercise's category/movement pattern aren't set by this tool (a known limitation) - it'll show up on the user's devices with default values (compound/push) until edited from the app.

update_exerciseA

Updates an existing exercise's name, muscle groups, equipment, and/or photo (fuzzy-matched by name, or exact by id). Category and movement pattern can't be changed by this tool (a known limitation) - edit those from the app.

delete_exerciseA

Deletes an exercise from the user's library (fuzzy-matched by name, or exact by id).

get_workout_templatesA

Returns the user's saved workout templates (training session blueprints) with their full ordered exercise lists - target sets/reps/rest plus tempo, intensity, suggested weight and superset grouping for every slot. Each slot comes back in exactly the shape save_workout_template/update_workout_template accept, so you can read a template, change part of it, and write it back without losing anything. Use this before update_workout_template - that tool replaces the whole exercise list, so you need the current one first.

save_workout_templateA

Creates a NEW workout template (a reusable training session blueprint) with an ordered list of exercises, each with target sets/reps/rest and optional tempo/cadence, intensity (RIR/RPE), suggested working weight, and superset grouping. Exercises must already exist in the library (see get_exercise_library, or create_exercise first). To change an existing template instead, use update_workout_template - creating a duplicate and deleting the old one loses its link to past workouts.

update_workout_templateA

Edits an existing workout template in place - its name, estimated duration, and/or its exercises - keeping the template itself, so its link to past workouts in history (and to any periodization cycle) survives. This is the tool for requests like "swap the first three exercises of my chest day for cable variations" or "add a set to every exercise". IMPORTANT: exercises REPLACES the entire exercise list, so call get_workout_templates first and send the full list back with your changes applied; omit exercises to change only the name/duration. Prefer this over delete_workout_template + save_workout_template.

update_workout_template_nameA

Renames an existing workout template in place (fuzzy-matched by name, or exact by id). Doesn't touch its exercises.

delete_workout_templateA

Deletes a workout template and its exercise slots (fuzzy-matched by name, or exact by id). Does not delete workout history/sessions that already used it.

save_periodization_planA

Creates a periodization cycle (a named training block, e.g. a hypertrophy or strength block with a start/end date) and optionally links existing workout templates to it. Note: the cycle's training phase isn't set by this tool (a known limitation) - edit that from the app.

get_nutrition_planA

Returns the single active nutrition plan - the week's days and meals with full recipe details (ingredients, instructions, calories/macros) - or null if none has been generated yet.

save_nutrition_planA

Creates the week's nutrition plan. IMPORTANT: there is always exactly one active plan - calling this REPLACES whatever plan currently exists (deleting it and its days/meals) rather than creating a second one. Use this to generate/regenerate the whole week; for smaller tweaks to specific meals or days, prefer update_nutrition_meal / update_nutrition_day / update_nutrition_plan instead so the rest of the week isn't thrown away. Before calling this, check get_training_preferences (body stats + food preferences/restrictions) and ideally get_workout_history/get_recovery_status so the plan reflects the user's actual training and goals.

update_nutrition_planA

Adapts plan-level metadata (name, notes, start date, and/or the generation prompt) on the active nutrition plan in place, without touching its days or meals.

update_nutrition_dayA

Adapts one day of the active nutrition plan: rename/re-note it, and/or replace its whole meal list - without touching other days. Use update_nutrition_meal instead for a single-meal tweak (e.g. just swapping one recipe).

update_nutrition_mealA

Adapts a single meal's recipe, ingredients, instructions, macros, and/or time within the active nutrition plan, without regenerating the rest of the day or week. The main tool for requests like "swap Tuesday's lunch for something else" or "make Wednesday's dinner higher protein".

delete_nutrition_planA

Deletes the active nutrition plan and all its days/meals.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/elkno/gymtimer-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server