egym-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| EGYM_EMAIL | Yes | Your EGYM Fitness login email | |
| EGYM_LOCALE | No | Language of exercise names and API answers | en-GB |
| EGYM_BASE_URL | No | Your gym's Netpulse address, if finding it fails | |
| EGYM_PASSWORD | Yes | Your EGYM Fitness login password | |
| EGYM_MCP_DATA_DIR | No | Folder for .env, notes, catalogue and coach files | ~/.egym-mcp |
| EGYM_MCP_COACH_DIR | No | Markdown files returned by get_coach_context | <data>/coach |
| EGYM_MCP_NOTES_FILE | No | Training notes | <data>/training_notes.md |
| EGYM_MCP_CATALOG_FILE | No | Cached exercise catalogue, fetched on first use and after 90 days | <data>/exercise_catalog.json |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_recent_workoutsA | Completed workouts of the last |
| get_workoutsA | Completed workouts between start_date and end_date (ISO format YYYY-MM-DD, both included). |
| get_strength_statusB | Current EGYM maximum strength per machine/exercise (activityId for get_strength_history). |
| get_strength_historyB | EGYM strength measurements over |
| get_bio_ageA | Current bio age with its parts (muscle, metabolism, cardio, flexibility), including flexibility measurements. |
| get_bio_age_historyA | Bio age per month or year (period: 'month' | 'year'; shift: periods back, 0 = current). |
| get_body_compositionA | Latest body metrics (weight, body fat, muscle mass, BIA values and so on). |
| get_body_metric_historyB | History of single body metrics, e.g. types=['WEIGHT_KG','BODY_FAT_PERCENTS'] (names from get_body_composition). |
| get_muscle_imbalancesB | EGYM's analysis of muscle imbalances (agonist/antagonist, left/right). |
| get_activity_levelC | Activity level, points and weekly goal. |
| search_exercisesA | Searches EGYM's exercise catalogue (~1200 exercises) for the exact name an exercise has in the app. All words in |
| get_available_plansA | Training plans in the app with planId: the user's own (USER_TRAINING_PLAN), from trainers and gym templates. own_only=True returns only the user's own plans. Sets here can show the values last trained; get_plan returns the stored ones. |
| get_planB | Details of a plan (any type) with all exercises and sets. |
| save_planA | Creates an own training plan in the EGYM app or replaces an existing one (plan_id). exercises: list in training order, each {"activityId": , "sets": [...]}. Every set is its own entry, with the fields: numberOfReps (int), weight (kg, per dumbbell for two dumbbells; required for strength exercises unless body-weight based), recoveryTime (rest in s), duration (s, for timed sets such as cardio or stretching), optionally distance (m), speed, incline, heartRate, sideMode ('BOTH'|'LEFT'|'RIGHT'), trainingMethod (EGYM machines), setType (added if missing). Example: {"activityId": 95, "sets": [{"numberOfReps": 8, "weight": 22, "recoveryTime": 120}]} Replacing overwrites the whole plan; only replace plans the user has agreed to change. |
| delete_planA | Permanently deletes an own training plan (USER_TRAINING_PLAN only). Only after the user has confirmed. |
| get_coach_contextA | Coaching context from the user's Markdown files in the coach folder: role, planning rules, athlete profile. Call this first before planning or reviewing training, unless these files are already loaded. |
| read_training_notesC | Training notes: runs, how the user felt, mobility impressions, free-weight loads that are not in EGYM. |
| add_training_noteB | Adds an entry to the training notes (date: YYYY-MM-DD, today by default). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 18 tools
Most tools target clearly distinct resources (workouts, strength, bio age, body composition, plans, notes). A few near-pairs exist — get_recent_workouts vs get_workouts, get_available_plans vs get_plan, get_body_composition vs get_body_metric_history — but descriptions explicitly delineate the boundaries (relative days vs date range, last-trained vs stored values, summary vs single-metric history).
Every tool follows a consistent verb_noun snake_case pattern (get_*, search_exercises, save_plan, delete_plan, read_training_notes, add_training_note). No mixed conventions or camelCase deviations in tool names.
18 tools is slightly above the ideal range but each covers a distinct slice of the fitness domain (workouts, strength, body metrics, plans, notes, coaching). Nothing appears redundant or padded, so the count is reasonable though on the heavier side.
Strong read coverage across all major domains plus plan lifecycle (list/get/save/delete) and notes (read/add). Minor gaps: training notes can only be added, not edited or deleted, and there is no workout logging or exercise-detail lookup beyond the catalogue search, but agents can work around these.