hevy-mcp-server
Integrates with Hevy API to access workout history, exercise progress, personal records, and routines.
Click on "Install 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-servershow my last 5 workouts with total volume"
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
A TypeScript Node.js server that connects your Hevy workout data to Language Models via Model Context Protocol (MCP). The server fetches data from the Hevy API and provides tools for accessing your workout history, exercise progress, and personal records.
What is MCP?
Model Context Protocol (MCP) is a standard that allows LLMs like Claude to integrate with external data sources and tools. This MCP server enables AI assistants to access and analyze your Hevy workout data.
Related MCP server: hevy-mcp
Available Tools
This MCP server provides the following tools:
get-workouts: Get workouts between start and end dates. Returns workouts in descending order of date with duration and volume stats. Max 10 workouts.
get-exercise-progress-by-ids: Track progress for specific exercises over time, filtered by date range. Returns also records per reps.
get-exercises: Get comprehensive exercise data sorted by frequency of use, with optional filtering by name and date range. Returns also actual and estimated 1RM.
get-routines: Retrieve your saved workout routines
Workout Prompt Builder
The server includes a smart workout prompt builder that:
Analyzes your most frequently used exercises and their estimated 1RMs
Lists your saved workout routines with detailed exercise information
Helps AI assistants create personalized workout recommendations based on your history
Resource Documentation
The server provides comprehensive documentation of all available tools and their parameters through a dedicated resource endpoint. This documentation includes:
Detailed parameter descriptions
Valid parameter ranges and defaults
Example usage scenarios
Obtaining Your Hevy API Key
To get your Hevy API key, visit the Hevy API Documentation and follow the authentication instructions. You'll need to sign up for API access through the Hevy developer portal.
Adding to Cursor
To add this MCP server to Cursor, update your ~/.cursor/mcp.json file with the following configuration:
"hevy-mcp-server": {
"command": "npx",
"args": ["-y", "@vreippainen/hevy-mcp-server", "--stdio"],
"env": {
"HEVY_API_KEY": "your-api-key-here"
}
}Replace your-api-key-here with your actual Hevy API key.
Technical Documentation
For detailed technical information about installation, configuration, running the server, API endpoints, service methods, and project structure, see TECHNICAL.md.
Release Process
This project uses semantic-release for automated versioning and package publishing. We follow the Conventional Commits specification for commit messages.
Available Tools
4 toolsget-exercise-progress-by-idsA
Get progress history for specific exercises between start and end dates. Returns exercise data including weights, reps, and sets for each workout. Results are ordered by date descending. Useful for tracking progress over time for particular exercises.
Example: { "exerciseIds": ["bench-press-123", "squat-456"], // Required: Array of exercise IDs "limit": 5, // Optional: Number of workouts (0-10, default: 10) "startDate": "2024-01-01T00:00:00Z", // Optional: Filter after this date "endDate": "2024-03-20T23:59:59Z" // Optional: Filter before this date }
| Name | Required | Description | Default |
|---|---|---|---|
| exerciseIds | Yes | IDs of the exercises to retrieve progress for | |
| limit | No | Number of latest workouts to retrieve | |
| startDate | No | Optional: ISO date string to filter workouts after this date | |
| endDate | No | Optional: ISO date string to filter workouts before this date |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses ordering and return fields, but does not clarify if the 'limit' parameter applies per exercise or total, leaving ambiguity. No mention of pagination, rate limits, or auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short paragraphs with key information front-loaded and a helpful example. No superfluous text, though it could be slightly more compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with no output schema or annotations, the description explains the core functionality and return fields. However, it lacks details on pagination, behavior when no results, and limit interpretation, leaving some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, baseline 3. The description adds an example with concrete parameter formats and clarifies optionality, but does not resolve ambiguity about limit scope. The added value is marginal beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves progress history for specific exercises with date range filtering, returns weights/reps/sets, and orders by date descending. It is distinct from siblings like get-exercises (list exercises) and get-workouts (workout summaries).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description notes the tool is useful for tracking progress over time for particular exercises. While it doesn't explicitly state when not to use or alternatives, the sibling context and clear purpose allow the agent to infer appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-exercisesA
Get comprehensive exercise data including frequency of use, categorization, and metadata. Results are sorted by usage frequency. Supports filtering by name search and date range.
Example: { "searchTerm": "bench press", // Optional: Filter exercises by name "excludeUnused": true, // Optional: Skip never-performed exercises (default: true) "startDate": "2024-01-01T00:00:00Z", // Optional: Consider usage after this date "endDate": "2024-03-20T23:59:59Z" // Optional: Consider usage before this date }
| Name | Required | Description | Default |
|---|---|---|---|
| searchTerm | No | Optional: Search term to filter exercises by name | |
| excludeUnused | No | If true, exclude exercises with zero frequency (never done) | |
| startDate | No | Optional: ISO date string to filter workouts after this date | |
| endDate | No | Optional: ISO date string to filter workouts before this date |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states results are sorted by usage frequency and includes frequency, categorization, metadata. This discloses basic behavior but does not confirm read-only nature or handle potential pitfalls (e.g., performance for large date ranges).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two sentences plus an example), front-loaded with the purpose, and every part adds value. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately indicates the return type (frequency, categorization, metadata) and sorting. For a simple list tool with four optional parameters, it is sufficiently complete. Could mention that results are a list of exercises.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds significant value with a JSON example containing comments that clarify parameter usage (e.g., excludeUnused default, date format). This exceeds what the schema alone provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'exercises', listing the data aspects (frequency, categorization, metadata) and note on sorting by usage frequency. However, it does not explicitly differentiate from sibling tools like get-exercise-progress-by-ids.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the description and parameter example (searching and filtering exercises). No explicit when-to-use or when-not-to-use guidance is provided, nor mention of alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-routinesB
Get user's saved workout routines. Returns all custom and preset routines with their full exercise details, including sets, reps, and rest periods.
Example: {} // No parameters required
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the burden of behavioral disclosure. It only states the tool returns all routines with details, lacking depth on auth, rate limits, or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a single sentence and an example, which is slightly extra but not wasteful. It is front-loaded and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately covers the tool's purpose given its simplicity (no parameters, no output schema), but could mention that it returns routines for the authenticated user or any pagination behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so schema coverage is 100%. The description adds value by stating no parameters are required and providing an example, meeting the baseline for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool gets user's saved workout routines, clearly specifying the verb and resource. It implies distinction from siblings like 'get-workouts' but does not explicitly differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing routines but provides no explicit guidance on when to use this tool versus alternatives, nor any conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-workoutsA
Get workouts between start and end dates. Returns all workouts if no dates are provided. Returns workouts in descending order of date and limits the number of workouts returned. Max 10 workouts.
Example: { "limit": 5, // Optional: Number of workouts (1-10, default: 10) "startDate": "2024-01-01T00:00:00Z", // Optional: Filter workouts after this date "endDate": "2024-03-20T23:59:59Z" // Optional: Filter workouts before this date }
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of workouts to retrieve | |
| startDate | No | Optional: ISO date string to filter workouts after this date | |
| endDate | No | Optional: ISO date string to filter workouts before this date |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses ordering (descending by date), limit (max 10), and default behavior (returns all if no dates). No annotations exist, so description carries full burden. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise, with only essential information. Front-loaded with core purpose, followed by behavioral details and a helpful example. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description implies it returns a list of workouts. Provides enough context for a list-retrieval tool. Sibling tools are distinct, so no confusion.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds an example that clarifies date format and default limit, providing practical context beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Get workouts between start and end dates' with verb and resource. Distinguishes from siblings like get-exercises by focusing specifically on workouts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Describes when to use (for workouts between dates) but lacks explicit when-not-to-use or alternatives. Usage is implied rather than explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
4 tool updates
v1.0.2- First observed
get-exercise-progress-by-ids - First observed
get-exercises - First observed
get-routines - First observed
get-workouts
TDQS
Each tool targets a distinct data type (exercises, exercise progress, routines, workouts) with no overlap in purpose or output.
All tools follow a consistent get-<noun> pattern with hyphens, using descriptive plural nouns.
Four tools cover the core read-only operations for a fitness tracking server without being too few or too many.
Only read operations are provided; there are no tools to create or update workouts, exercises, or routines, which are typical for a workout app.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Create Hevy routines and analyze your training from chat. Unofficial; BYO Hevy PRO API key.
Connect ChatGPT or Claude to your Gym Plus account to log and review workouts with AI coaching.
Log workouts and meals by telling your AI. 873 exercises, muscle diagrams, food lookup.
- freddyOAuthcoach.freddy
Connect your wearables, rings and training apps, then ask your AI about your own health data.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceEnables AI assistants to interact with the Hevy fitness tracking API for logging workouts, managing routines, and tracking fitness progress.1732MIT
- FlicenseNot gradedqualityDmaintenanceAccess your Hevy workout data through natural language. Query workout history, exercise details, routines, and track progress.-
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to read, analyze, create, and update Hevy workout data, including workouts, routines, exercises, and body measurements, through the Model Context Protocol.6,107MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to access Garmin Connect fitness and health data, including activities, heart rate, sleep, and device information.MIT
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/VReippainen/hevy-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server