Hevy MCP Pro
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LOG_LEVEL | No | Log level: error, warn, info, debug | info |
| HEVY_API_KEY | Yes | Your Hevy API key (required, get from hevy.com/settings?p=developer) | |
| HEVY_CACHE_TTL_MS | No | Exercise template cache TTL (default 1h) | 3600000 |
| HEVY_ANALYTICS_MAX_PAGES | No | Soft cap for analytics pagination (50 pages = 500 workouts) | 50 |
| HEVY_RATE_LIMIT_CAPACITY | No | Token bucket capacity (max burst) | 10 |
| HEVY_RATE_LIMIT_REFILL_PER_SEC | No | Token refill rate (requests/sec) | 10 |
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 |
|---|---|
| list_workoutsB | List workouts in reverse-chronological order. Hevy enforces a max pageSize of 10. |
| get_workoutA | Fetch a single workout by its ID, including all exercises and logged sets. |
| get_workout_countA | Get the total number of workouts logged for the authenticated account. |
| get_workout_eventsA | List workout sync events (created/updated/deleted) since a given ISO 8601 timestamp. Useful for incremental sync. Hevy enforces a max pageSize of 10. |
| create_workoutA | Create a new workout. The workout body is strictly validated: title, start_time/end_time (ISO 8601), and at least one exercise with at least one set are required. |
| update_workoutA | Replace an existing workout by ID. The full workout body must be supplied — this is a full replacement, not a patch. |
| list_routinesB | List saved routines (workout templates). Hevy enforces a max pageSize of 10. |
| get_routineA | Fetch a single routine by its ID, including all planned exercises and sets. |
| create_routineA | Create a new routine. Routines may optionally live inside a folder via folder_id. Note: the Hevy mobile app does not render rep_range (it uses an undocumented input_modifier field). |
| update_routineA | Replace an existing routine by ID. Note: the API does NOT accept folder_id on update — folder moves happen via the mobile app only. |
| list_exercise_templatesA | List exercise templates (built-in and custom). Hevy enforces a max pageSize of 10. For fuzzy name search prefer search_exercise_templates. |
| get_exercise_templateA | Fetch a single exercise template by its ID. |
| get_exercise_historyA | Fetch per-set history for a single exercise template across all workouts. Optionally bounded by startDate/endDate (ISO 8601). Much cheaper than paginating /v1/workouts when you only care about one exercise. |
| create_exercise_templateB | Create a custom exercise template. Requires title, exercise_type, equipment_category, and muscle_group; other_muscles is optional. |
| search_exercise_templatesA | Fuzzy-search exercise templates by name with an optional muscle-group filter. Runs locally against a cached copy of all templates — much faster and cheaper than paginating /v1/exercise_templates. Returns top matches sorted by score. |
| list_routine_foldersC | List routine folders. Hevy enforces a max pageSize of 10. |
| get_routine_folderA | Fetch a single routine folder by its numeric ID. |
| create_routine_folderA | Create a new routine folder with the given title. All other fields (id, index, timestamps) are assigned by the server. |
| get_user_infoA | Fetch the authenticated user's profile (id, name, public profile URL). |
| get_exercise_progressionA | Return a chronological time series of the best set per session for one exercise template. Uses /v1/exercise_history (single API call). Each point includes weight, reps, volume, and Epley-estimated 1RM. Optional |
| get_personal_recordsA | Return heaviest-weight, best-set (weight * reps), and top estimated 1RM PRs. If exerciseTemplateId is provided, uses /v1/exercise_history (single call). Otherwise paginates recent workouts and returns a per-exercise map. May include a |
| get_volume_summaryA | Total training volume (weight_kg * reps, nulls => 0) grouped by exercise, muscle_group, or week. Paginates recent workouts since |
| get_workout_frequencyA | Per-week workout counts with streak and longest-gap statistics over |
| detect_stagnationA | Flag exercises whose peak estimated 1RM occurred earlier in the window (i.e. recent sessions are below peak). Defaults: weeksBack=8, minSessions=3. Returns a list sorted by percent below peak, descending. May include a |
| duplicate_workoutA | Duplicate an existing workout. The new workout starts at |
| routine_from_workoutA | Create a new routine from an existing workout. Copies exercises and sets (dropping RPE, which routines do not support) and places the routine in the given folder, if any. |
| compare_workoutsA | Compare two workouts side-by-side. Returns per-workout summaries, top-level deltas (volume, sets, exercise count), and a per-exercise diff sorted alphabetically by exercise title. |
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/cbotworks/mcp-hevy-pro'
If you have feedback or need assistance with the MCP directory API, please join our Discord server