hevy-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HEVY_API_KEY | Yes | Your Hevy API key (required for all operations, available with Hevy PRO) |
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-workoutsA | Get a paginated list of workouts. Returns workout details including title, description, start/end times, and exercises performed. Results are ordered from newest to oldest. |
| get-workoutA | Get complete details of a specific workout by ID. Returns all workout information including title, description, start/end times, and detailed exercise data. |
| get-workout-countA | Get the total number of workouts on the account. Useful for pagination or statistics. |
| get-workout-eventsA | Retrieve a paged list of workout events (updates or deletes) since a given date. Events are ordered from newest to oldest. The intention is to allow clients to keep their local cache of workouts up to date without having to fetch the entire list of workouts. |
| create-workoutA | Create a new workout in your Hevy account. Requires title, start/end times, and at least one exercise with sets. Returns the complete workout details upon successful creation including the newly assigned workout ID. |
| update-workoutA | Update an existing workout by ID. You can modify the title, description, start/end times, privacy setting, and exercise data. Returns the updated workout with all changes applied. |
| get-routinesA | Get a paginated list of your workout routines, including custom and default routines. Useful for browsing or searching your available routines. |
| get-routineA | Get a routine by its ID using the direct endpoint. Returns all details for the specified routine. |
| create-routineA | Create a new workout routine in your Hevy account. Requires a title and at least one exercise with sets. Optionally assign to a folder. Returns the full routine details including the new routine ID. |
| update-routineA | Update an existing routine by ID. You can modify the title, notes, and exercise configurations. Returns the updated routine with all changes applied. |
| get-exercise-templatesA | Get a paginated list of exercise templates (default and custom) with details like name, category, equipment, and muscle groups. Useful for browsing or searching available exercises. |
| get-exercise-templateA | Get complete details of a specific exercise template by its ID, including name, category, equipment, muscle groups, and notes. |
| get-exercise-historyA | Get past sets for a specific exercise template, optionally filtered by start and end dates. |
| create-exercise-templateB | Create a custom exercise template with title, type, equipment, and muscle groups. |
| search-exercise-templatesA | Search exercise templates by name with optional muscle group filter. Fetches all templates from the Hevy API on first call and caches them in memory for subsequent searches. Use refresh:true to force a re-fetch. |
| get-routine-foldersA | Get a paginated list of your routine folders, including both default and custom folders. Useful for organizing and browsing your workout routines. |
| get-routine-folderA | Get complete details of a specific routine folder by its ID, including name, creation date, and associated routines. |
| create-routine-folderA | Create a new routine folder in your Hevy account. Requires a name for the folder. Returns the full folder details including the new folder ID. |
| get-body-measurementsA | Get a paginated list of body measurements for the authenticated user. Returns measurements including weight, body fat, and various circumference measurements. |
| get-body-measurementA | Get a single body measurement by date. Returns all measurement fields for the specified date. |
| create-body-measurementA | Create a body measurement entry for a given date. All measurement fields are optional. Returns 409 if an entry already exists for that date — use update-body-measurement instead. |
| update-body-measurementA | Update an existing body measurement entry for a given date. All fields are overwritten — omitted fields are set to null. Returns 404 if no entry exists for the date. |
| get-webhook-subscriptionA | Get the current webhook subscription for this account. Returns the webhook URL and auth token if a subscription exists. |
| create-webhook-subscriptionA | Create a new webhook subscription for this account. The webhook will receive POST requests when workouts are created. Your endpoint must respond with 200 OK within 5 seconds. |
| delete-webhook-subscriptionA | Delete the current webhook subscription for this account. This will stop all webhook notifications. |
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 25 tools
Every tool targets a distinct resource and action, with clear list-vs-single patterns (e.g., get-workouts vs get-workout, get-routine-folders vs get-routine-folder). No two tools have overlapping purposes, and the descriptions make each tool's role unambiguous.
All tool names follow a consistent verb-noun pattern using lowercase with hyphens (e.g., get-workout, create-routine, update-body-measurement). The naming is uniform across all resources (workouts, routines, exercises, body measurements, webhooks), making it predictable and easy to navigate.
With 25 tools, the count is at the high boundary but justified by the breadth of the domain: workouts, routines, exercise templates, body measurements, and webhooks each need their own CRUD or query operations. Every tool serves a distinct purpose, so the count feels appropriate rather than bloated.
The toolset covers create, read, and update for most resources, but notably lacks delete operations for workouts, routines, routine folders, exercise templates, and body measurements. This creates dead ends (e.g., an agent cannot remove a workout or a routine), and some resources like exercise templates have no update capability. The gaps are significant enough to hinder common workflows.