SkillAgentSearch skills...

hevy-mcp

Manage your Hevy workouts, routines, folders, and exercise templates. Create and update sessions faster, organize plans, and search exercises to build workouts quickly. Stay synced with changes so your training log is always up to date.

Install / Use

claude mcp add chrisdoc -- npx -y github:chrisdoc/hevy-mcp

If the server publishes to npm under a different name, use that package instead — check the repo README.

About this skill
🔌

MCP Server

Model Context Protocol server

Quality Score

91/100

Supported Platforms

Claude Code
Claude Desktop
OpenAI Codex

Tags

Hevy MCP Server

<div align="center">

Talk to your Hevy workout data from Claude, Cursor, Codex, and other MCP clients.

npm version npm downloads Build and Test Codecov GitHub stars Hosted on Cloudflare License: MIT MCP Toplist

Connect to the hosted MCP · Use the Hevy CLI · Watch the 18-second demo · Explore all 22 tools

</div>

Hevy CLI

Prefer the terminal? The separate @chrisdoc/hevy-cli package reads workouts, routines, exercises, and body measurements directly from the Hevy API, and can create or update those resources with explicit confirmation. Deletion is not supported.

npm install -g @chrisdoc/hevy-cli
export HEVY_API_KEY=your-hevy-api-key

hevy workouts list --page-size 10
hevy summary --weeks 4

Add --json to any command for scripts and pipelines. The CLI is a standalone Hevy API client, not an MCP wrapper. See packages/cli/README.md for the full command reference, pagination behavior, and exit codes.

hevy-mcp is an open-source Model Context Protocol (MCP) server for the Hevy fitness and workout tracking app. It lets AI assistants read, analyze, create, and update your Hevy workouts, routines, exercise templates, and body measurements through authenticated Hevy API requests.

The repository is organized as a private workspace with explicit runtime boundaries: @hevy-mcp/hevy-client owns the web-safe Hevy client, @hevy-mcp/core owns MCP tools and server construction, hevy-mcp is the published Node.js stdio adapter, and @hevy-mcp/worker is the private Cloudflare HTTP/OAuth adapter. Only the Node workspace is publishable.

A Hevy API key, available with Hevy PRO, is required.

See it in action

Hevy MCP demo showing an AI assistant analyzing six weeks of Hevy training data

<p align="center"><sub>Click the preview to play the full-quality 18-second demo.</sub></p>

In the demo, the assistant retrieves real Hevy data and answers a multi-part training question with evidence from the user's workout history.

What can you do with it?

  • Analyze training progress: summarize 1-12 weeks of workouts and body measurements in one tool call.
  • Ask questions in plain language: find recent sessions, frequently trained exercises, consistency gaps, routine details, or exercise history.
  • Plan and log training: create or update workouts, routines, routine folders, custom exercises, and body measurements.
  • Search without huge responses: discover routines and exercise templates with compact, AI-friendly results.
  • Connect from your preferred MCP client: use the hosted Streamable HTTP endpoint or run locally with Codex, Claude Desktop, Cursor, and other clients.
  • Start without installing anything: connect directly to the production Cloudflare Worker—no Node.js, package download, or Docker container required.
  • Keep local control when you want it: run the same server with npx, bunx, or the official Docker image.

Try asking:

Analyze my training over the last six weeks. Show workouts per week, my most frequently trained exercises, any obvious gaps or inconsistencies, and cite the workout evidence you used.

Find my push-day routine and show its exercises and sets.

Compare my recent body measurements with my training consistency.

Create a completed workout from my saved routine. Ask me for any missing set results before writing it to Hevy.

Quick start

1. Get your Hevy API key

Create an API key in Hevy, then keep it somewhere secure. API access currently requires a Hevy PRO subscription.

2. Connect hevy-mcp to your client

The hosted Cloudflare endpoint is the fastest way to start. It runs remotely, so your client does not need Node.js, Bun, Docker, or a local server process.

Connect to the hosted endpoint

Production URL:

https://mcp.hevy-mcp.dev/mcp

The endpoint uses Streamable HTTP. Send your Hevy API key as a bearer token on every request.

Codex

Codex CLI, the Codex desktop app, and the IDE extension share the same MCP configuration. Make your Hevy API key available in the environment that starts Codex, then add the hosted server:

export HEVY_API_KEY=your-hevy-api-key
codex mcp add hevy \
  --url https://mcp.hevy-mcp.dev/mcp \
  --bearer-token-env-var HEVY_API_KEY

Codex stores the environment variable name, not the key itself, in its MCP configuration. Restart Codex or begin a new session, then run codex mcp list to verify the server is configured.

Other Streamable HTTP clients

Clients that accept a remote MCP URL and fixed headers commonly use this shape:

{
	"mcpServers": {
		"hevy": {
			"url": "https://mcp.hevy-mcp.dev/mcp",
			"headers": {
				"Authorization": "Bearer your-hevy-api-key"
			}
		}
	}
}

Exact configuration keys vary by client. The hosted server requires support for Streamable HTTP and a fixed Authorization header.

[!IMPORTANT] Treat the bearer value like a password. The Worker validates it with Hevy for each request, does not store it, and forwards it to Hevy only as the required api-key header.

Run locally instead

Choose local stdio if you prefer to run the server on your own machine or your client cannot attach a fixed authorization header to remote MCP requests.

Codex
codex mcp add hevy \
  --env HEVY_API_KEY=your-hevy-api-key \
  -- npx -y hevy-mcp
Claude Desktop or Cursor

Add this mcpServers entry to your client configuration:

{
	"mcpServers": {
		"hevy": {
			"command": "npx",
			"args": ["-y", "hevy-mcp"],
			"env": {
				"HEVY_API_KEY": "your-hevy-api-key"
			}
		}
	}
}
Google Antigravity

There are two ways to configure the Hevy MCP server for Google Antigravity (agy):

Option A: Automatic Plugin Installation (Recommended)

This utilizes the built-in plugin system:

  1. Install the plugin:

    agy plugin install https://github.com/chrisdoc/hevy-mcp
    
  2. Provide the HEVY_API_KEY in your host shell environment so the CLI child process can inherit it:

    • Persistent: Save the environment variable HEVY_API_KEY in your system/shell configurations:
      • macOS / Linux: Add it to your shell profile configurations (e.g., ~/.zshrc or ~/.bashrc):
        export HEVY_API_KEY="your-actual-api-key"
        
      • Windows: Add it to your User or System Environment Variables. In PowerShell, you can run:
        [Environment]::SetEnvironmentVariable("HEVY_API_KEY", "your-actual-api-key", "User")
        
    • Temporary (Session-only): If you do not want to persist the key, export it in your active terminal session before running agy:
      export HEVY_API_KEY="your-actual-api-key"
      
Option B: Manual Configuration (No Plugin)

If you prefer configuring it statically via the global configuration file:

  1. Open your global MCP configuration file:

    • Location: ~/.gemini/config/mcp_config.json
  2. Add the hevy configuration block under the mcpServers key. Make sure to merge this entry with any existing servers you have configured rather than replacing the entire file contents:

    {
    	"mcpServers": {
    		"hevy": {
    			"command": "npx",
    			"args": ["-y", "hevy-mcp"],
    			"env": {
    				"HEVY_API_KEY": "your-actual-api-key"
    			}
    		}
    	}
    }
    

Common local configuration locations:

  • Claude Desktop on macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Claude Desktop on Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Cursor: ~/.cursor/mcp.json

Restart or reconnect the client after saving the file.

Any stdio MCP client

Configure your client to launch this command with HEVY_API_KEY in the child process environment:

npx -y hevy-mcp

npx requires Node.js 20 or newer. Restart or reconnect your client after saving its configuration.

<details> <summary><strong>Use bunx instead</strong></summary>

Requires Bun:

{
	"mcpServers": {
		"hevy": {
			"command": "bunx",
			"args": ["hevy-mcp@latest"],
			"env": {
				"HEVY_API_KEY": "your-hevy-api-key"
			}
		}
	}
}
</details> <details> <summary><strong>Use Docker instead</strong></summary>

Official images support linux/amd64 and linux/arm64. Keep stdin open with -i because the container runs the stdio MCP server:

export HEVY_API_KEY=your-hevy-api-key
docker run -i --rm -e HEVY_API_KEY ghcr.io/chrisdoc/hevy-mcp:latest

For an MCP client, store the key in a protected environment file and configure the client to launch Docker:

{
	"mcpServers": {
		"hevy": {
			"command": "docker",
			"args": [
				"run",
				"-i",
				"--rm",
				"--env-file",
				"/absolute/path/to/hevy-mcp.env",
				"ghcr.io/chrisdoc/hevy-mcp:latest"
			]
		}
	}
}

Pin an exact image tag such as ghcr.io/chrisdoc/hevy-mcp:X.Y.Z when you need reproducible upgrades.

</details>

You can also add the npm server to supported clients with add-mcp:

npx add-mcp hevy-mcp --env "HEVY_API_KEY=your-hevy-api-key"

3. Ask your first question

Try one of these after restarting or reconnecting your MCP client:

  • “Give me a training summary for the last four weeks.”
  • “What routines do I have saved on Hevy?”
  • “Show my three most recent workouts.”
  • “Find exercise templates containing squat.”
  • “Which Hevy account is connected?”

Your assistant should ask for approval before mutation tools when the client supports tool confirmations.

How it works

Hosted:  Your AI assistant  →  Streamable HTTP  →  Cloudflare Worker  →  Hevy API
Local:   Your AI assistant  →  MCP over stdio   →  local hevy-mcp     →  Hevy API

The hosted endpoint creates a fresh MCP server and Hevy client for each request. It validates the supplied key with Hevy, keeps no shared user session, and does not persist the key. The local server follows the same tool contract but runs on your machine and receives the key through its child-process environment.

In either mode, read tools retrieve data; mutation tools create or replace data only when your assistant calls them.

Guided prompts

These server-provided MCP prompts coordinate common multi-step workflows:

| Prompt | Arguments | Workflow | | ----------------------------- | ------------------------------------------

Truncated for display — read the full file on GitHub.

Related Skills

View on GitHub
GitHub Stars481
CategoryDevelopment
Updated17h ago
Forks88

Languages

TypeScript

Security Score

100/100

Audited on Sep 21, 2026

No findings