GymTimer MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GYMTIMER_CONFIG_DIR | No | Where tokens and your environment choice are stored. | ~/.config/gymtimer |
| GYMTIMER_CONTAINER_ID | No | The CloudKit container to talk to. | iCloud.com.elkno.gymtimer.gymtimer |
| GYMTIMER_CK_ENVIRONMENT | No | Which CloudKit environment to read. Defaults to production. Falls back to ~/.config/gymtimer/environment before this default. | production |
| GYMTIMER_CK_API_TOKEN_PATH | No | Path to the API token file. | <config dir>/ck-api-token |
| GYMTIMER_CK_WEB_AUTH_TOKEN_PATH | No | Path 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
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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: |
| 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: |
| 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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