hevy-mcp
Provides tools for interacting with the Hevy Workout Tracker API, allowing management of workouts, routines, exercises, and user information.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@hevy-mcp show my last 5 workouts"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Hevy MCP Server
This is a Model Context Protocol (MCP) server that provides an interface to the Hevy Workout Tracker API. It allows AI agents and other MCP clients to interact with your Hevy data, including workouts, routines, exercises, and user information.
Prerequisites
Node.js (v18 or higher recommended)
NPM
A Hevy Pro account.
A Hevy API Key. You can obtain your key by visiting the Hevy web app developer settings.
Related MCP server: hevy-mcp-server
Installation
Navigate to the project directory:
cd hevy-mcpInstall dependencies:
npm installBuild the project:
npm run build
Configuration
The server requires a Hevy API key to function. This key must be provided as an environment variable HEVY_API_KEY.
Environment Variables
Variable | Description | Required |
| Your personal Hevy API Key. | Yes |
Usage
Running the Server
To start the server directly:
export HEVY_API_KEY=your_api_key_here
npm startUsing with an MCP Client (e.g., Claude Desktop, Gemini)
Add the server configuration to your MCP client's configuration file (e.g., claude_desktop_config.json or similar).
Example Configuration:
{
"mcpServers": {
"hevy": {
"command": "node",
"args": [
"/absolute/path/to/hevy-mcp-server/dist/index.js"
],
"env": {
"HEVY_API_KEY": "your_api_key_here"
}
}
}
}Note: Replace /absolute/path/to/... with the actual full path to the dist/index.js file on your system.
Available Tools
This server exposes the following tools to MCP clients:
Workouts
get_workouts: Get a paginated list of workouts.get_single_workout: Get complete details of a single workout by UUID.get_workout_count: Get the total number of workouts.create_workout: Create a new workout.update_workout: Update an existing workout.delete_workout: Delete a workout by UUID.get_workout_events: Retrieve workout events (updates/deletes) since a specific date.
Routines
get_routines: Get a paginated list of routines.get_single_routine: Get details of a single routine by UUID.create_routine: Create a new routine.update_routine: Update an existing routine.delete_routine: Delete a routine by UUID.
Routine Folders
get_routine_folders: Get a paginated list of routine folders.get_single_routine_folder: Get details of a routine folder.create_routine_folder: Create a new routine folder.update_routine_folder: Update a routine folder's title.delete_routine_folder: Delete a routine folder.
Exercises
get_exercise_templates: Get a paginated list of exercise templates (built-in and custom).get_single_exercise_template: Get details of a specific exercise template.create_exercise_template: Create a new custom exercise template.delete_exercise_template: Delete a custom exercise template.get_exercise_history: Get history for a specific exercise template.
User
get_user_info: Get information about the authenticated user.
Development
Build:
npm run build- Compiles TypeScript to JavaScript in thedistfolder.Start:
npm start- Runs the compiled server fromdist/index.js.
Available Tools
23 toolscreate_exercise_templateC
Create a new custom exercise template
Inputs: exercise (required).
create_routineC
Create a new routine
Inputs: routine (required).
create_routine_folderB
Create a new routine folder
Inputs: title (required).
create_workoutC
Create a new workout
Inputs: workout (required).
delete_exercise_templateA
Delete a custom exercise template by its id
Inputs: exerciseTemplateId (required).
delete_routineB
Delete a routine by its routineId
Inputs: routineId (required).
delete_routine_folderB
Delete a routine folder by its folderId
Inputs: folderId (required).
delete_workoutA
Delete a workout by its workoutId
Inputs: workoutId (required).
get_exercise_historyB
Get exercise history for a specific exercise template
Inputs: exerciseTemplateId (required), end_date, start_date.
get_exercise_templatesA
Get a paginated list of exercise templates
Inputs: page, pageSize.
get_routine_foldersC
Get a paginated list of routine folders
Inputs: page, pageSize.
get_routinesC
Get a paginated list of routines
Inputs: page, pageSize.
get_single_exercise_templateB
Get a single exercise template by id
Inputs: exerciseTemplateId (required).
get_single_routineB
Get a routine by its Id
Inputs: routineId (required).
get_single_routine_folderB
Get a single routine folder by id
Inputs: folderId (required).
get_single_workoutA
Get a single workout’s complete details by the workoutId
Inputs: workoutId (required).
get_user_infoC
Get user info
Inputs: no named parameters.
get_workout_countA
Get the total number of workouts on the account
Inputs: no named parameters.
get_workout_eventsB
Retrieve a paged list of workout events (updates or deletes) since a given date
Inputs: page, since, pageSize.
get_workoutsA
Get a paginated list of workouts
Inputs: page, pageSize.
update_routineC
Update an existing routine
Inputs: routine (required), routineId (required).
update_routine_folderC
Update an existing routine folder
Inputs: title (required), folderId (required).
update_workoutC
Update an existing workout
Inputs: workout (required), workoutId (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 23 tools
Each tool clearly targets a distinct resource and action, such as workouts, routines, routine folders, and exercise templates. List/detail operations are separated with explicit singular naming (e.g., get_workouts vs get_single_workout), and no two tools appear to serve the same purpose.
All tool names use snake_case and follow a verb_noun pattern (get_, create_, update_, delete_). Minor deviations exist with get_single_workout instead of get_workout and get_workout_count as a compound noun, but overall the naming is predictable and consistent.
With 23 tools, the server feels slightly heavy, but the count is justified by covering four distinct resource types (workouts, routines, routine folders, exercise templates), each with appropriate CRUD operations. A few utilities like get_workout_count and get_workout_events add value without bloating the set excessively.
The server covers most core workflows: full CRUD for workouts, routines, and routine folders, plus listing, retrieving, creating, and deleting exercise templates. However, there is no update_exercise_template, which is a notable gap since creating and deleting without updating forces a delete/recreate pattern for adjustments.
Maintenance
Related MCP Connectors
Create Hevy routines and analyze your training from chat. Unofficial; BYO Hevy PRO API key.
Your Garmin, Oura, WHOOP, Hevy and 35 more fitness apps, queryable from your own AI.
Your strength-training data for any AI assistant: workouts, progress, muscle volume, routines.
Agent-first strength-training platform across iOS, Web & MCP: read & write workouts, PRs & plans.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables interaction with the Hevy fitness tracking platform through their API. Supports managing workouts, routines, exercise templates, and webhook subscriptions for comprehensive fitness data management.20 npmISC
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to interact with the Hevy fitness tracking API for logging workouts, managing routines, and tracking fitness progress.15 npm34MIT
- AlicenseNot gradedqualityDmaintenanceExposes the Hevy workout API to Claude, enabling users to manage workouts, routines, exercise templates, body measurements, and user info via natural language.2,615 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with the Hevy fitness tracking API, allowing users to log workouts, manage routines, browse exercises, and track fitness progress through natural language.15 npmMIT