Skip to main content
Glama
VReippainen

hevy-mcp-server

by VReippainen

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 tools
get-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 }

ParametersJSON Schema
NameRequiredDescriptionDefault
exerciseIdsYesIDs of the exercises to retrieve progress for
limitNoNumber of latest workouts to retrieve
startDateNoOptional: ISO date string to filter workouts after this date
endDateNoOptional: ISO date string to filter workouts before this date

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 }

ParametersJSON Schema
NameRequiredDescriptionDefault
searchTermNoOptional: Search term to filter exercises by name
excludeUnusedNoIf true, exclude exercises with zero frequency (never done)
startDateNoOptional: ISO date string to filter workouts after this date
endDateNoOptional: ISO date string to filter workouts before this date

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 }

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of workouts to retrieve
startDateNoOptional: ISO date string to filter workouts after this date
endDateNoOptional: ISO date string to filter workouts before this date

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

  1. 4 tool updatesv1.0.2
    • First observedget-exercise-progress-by-ids
    • First observedget-exercises
    • First observedget-routines
    • First observedget-workouts

TDQS

A3.8/5.0
Disambiguation5/5

Each tool targets a distinct data type (exercises, exercise progress, routines, workouts) with no overlap in purpose or output.

Naming Consistency5/5

All tools follow a consistent get-<noun> pattern with hyphens, using descriptive plural nouns.

Tool Count5/5

Four tools cover the core read-only operations for a fitness tracking server without being too few or too many.

Completeness2/5

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

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Access your Hevy workout data through natural language. Query workout history, exercise details, routines, and track progress.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to read, analyze, create, and update Hevy workout data, including workouts, routines, exercises, and body measurements, through the Model Context Protocol.
    6,107
    MIT

Latest Blog Posts

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