by chrisdoc
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.
# Add to your Claude Code skills
git clone https://github.com/chrisdoc/hevy-mcpGuides for using mcp servers skills like hevy-mcp.
Last scanned: 5/30/2026
{
"issues": [
{
"type": "npm-audit",
"message": "@kubb/cli: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@kubb/core: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@kubb/oas: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@kubb/plugin-client: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@kubb/plugin-faker: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@kubb/plugin-oas: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@kubb/plugin-ts: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@kubb/plugin-zod: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "@kubb/react-fabric: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "brace-expansion: brace-expansion: Zero-step sequence causes process hang and memory exhaustion",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "express-rate-limit: Vulnerability found",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "ip-address: ip-address has XSS in Address6 HTML-emitting methods",
"severity": "medium"
},
{
"type": "npm-audit",
"message": "picomatch: Picomatch: Method Injection in POSIX Character Classes causes incorrect Glob Matching",
"severity": "high"
},
{
"type": "npm-audit",
"message": "ws: ws: Uninitialized memory disclosure",
"severity": "medium"
}
],
"status": "WARNING",
"scannedAt": "2026-05-30T15:20:52.259Z",
"npmAuditRan": true,
"pipAuditRan": true
}hevy-mcp is an open-source mcp servers skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by chrisdoc. 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. It has 326 GitHub stars.
hevy-mcp returned warnings in SkillsLLM's automated security scan. It has no critical vulnerabilities, but review the flagged issues in the Security Report section before adding it to your workflow.
Clone the repository with "git clone https://github.com/chrisdoc/hevy-mcp" and add it to your Claude Code skills directory (see the Installation section above).
hevy-mcp is primarily written in TypeScript. It is open-source under chrisdoc on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other MCP Servers skills you can browse and compare side by side. Open the MCP Servers category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh hevy-mcp against similar tools.
No comments yet. Be the first to share your thoughts!
Top skills in this category by stars
Requires a passing catalog security scan. Resolve the flagged issues and resubmit to enable featuring.
hevy-mcp connects MCP-compatible assistants such as Claude Desktop and Cursor
to the Hevy fitness API. Ask about workout history,
analyze progress, browse routines and exercises, or create and update Hevy data
without leaving your assistant.
A Hevy API key, available with Hevy PRO, is required.
Use local stdio when your MCP client can launch a command. Hosted Streamable HTTP setup is documented below but is temporarily unavailable.
The npm package and official container are stdio-only MCP executables. Your client starts the process and communicates through standard input/output; this is not an interactive terminal command or an HTTP service.
Requires Node.js 20 or newer, as declared by the package metadata.
Claude Desktop (claude_desktop_config.json) and Cursor (~/.cursor/mcp.json)
both accept an mcpServers entry like this:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json{
"mcpServers": {
"hevy": {
"command": "npx",
"args": ["-y", "hevy-mcp"],
"env": {
"HEVY_API_KEY": "your-hevy-api-key"
}
}
}
}
Requires Bun. Use the same client configuration with a Bun launcher:
{
"mcpServers": {
"hevy": {
"command": "bunx",
"args": ["hevy-mcp@latest"],
"env": {
"HEVY_API_KEY": "your-hevy-api-key"
}
}
}
}
Official images support linux/amd64 and linux/arm64. Keep stdin open with
-i because the container runs the same stdio 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.
You can also add the local npm server to supported clients with
add-mcp:
npx add-mcp hevy-mcp --env "HEVY_API_KEY=your-hevy-api-key"
[!WARNING]
https://hevy.chrisdoc.dev/mcpis currently intercepted by an interactive Cloudflare challenge, so non-browser MCP clients cannot connect. Use local stdio until the route is restored.
When available, the hosted endpoint does not require Node.js, Bun, or Docker:
https://hevy.chrisdoc.dev/mcp
Configure a remote MCP server in your client and send your Hevy API key as a
fixed authorization header. Exact configuration keys vary by client; clients
that use url and headers commonly accept this shape:
{
"mcpServers": {
"hevy": {
"url": "https://hevy.chrisdoc.dev/mcp",
"headers": {
"Authorization": "Bearer your-hevy-api-key"
}
}
}
}
The hosted transport is stateless Streamable HTTP at POST /mcp. The bearer
value is a custom Hevy API credential, not OAuth. The endpoint does not expose a
legacy SSE or GET event stream, and GET and DELETE requests return 405.
Clients that require OAuth discovery, dynamic registration, token refresh, or a
legacy SSE transport are not compatible unless they can send the fixed custom
header above.
Restart or reconnect your MCP client after saving the configuration, then try:
The assistant should ask for approval before mutation tools when the client supports tool confirmations.
These server-provided prompts coordinate multiple tools for common workflows:
| Prompt | Arguments | Workflow |
|---|---|---|
analyze-workout-progress |
Optional weeks from 1-12; default is 4 |
Paginates through recent workouts and body measurements, then analyzes frequency, volume, variety, consistency, and measurement trends from retrieved evidence. |
create-workout-from-routine |
Required routineId and UTC startTime |
Loads a routine, asks for actual completed-set data and an end time, then creates a workout without inventing results or copying unsupported routine-only data. |
[!IMPORTANT] With MCP SDK v1.29.0, invoking
analyze-workout-progresswith its defaultweeksvalue requires clients to sendarguments: {}. Omitting the entireargumentsobject is rejected by that SDK version before the default is applied.
hevy-mcp registers 23 tools:
| Category | Tool | Description |
|---|---|---|
| Workouts | get-workouts |
List workouts from newest to oldest with exercise and timing details. |
| Workouts | get-workout |
Get complete details for one workout by ID. |
| Workouts | get-workout-count |
Return the account's total workout count. |
| Workouts | get-workout-events |
List workout update and delete events since a timestamp. |
| Workouts | create-workout |
Create a completed workout in Hevy. |
| Workouts | update-workout |
Replace an existing workout by ID. |
| Routines | get-routines |
List custom and default workout routines. |
| Routines | get-routine |
Get one routine and its exercise configuration by ID. |
| Routines | create-routine |
Create a reusable workout routine. |
| Routines | update-routine |
Replace an existing routine's content. |
| Routine folders | get-routine-folders |
List default and custom routine folders. |
| Routine folders | get-routine-folder |
Get one routine folder's metadata by ID. |
| Routine folders | create-routine-folder |
Create a routine folder. |
| Exercise templates/history | get-exercise-templates |
List exercise templates with equipment and muscle metadata. |
| Exercise templates/history | get-exercise-template |
Get complete metadata for one exercise template by ID. |
| Exercise templates/history | search-exercise-templates |
Search the full exercise catalog by title substring. |
| Exercise templates/history | create-exercise-template |
Create a custom exercise template. |
| Exercise templates/history | get-exercise-history |
Get past performed sets for one exercise template. |
| Body measurements | get-body-measurements |
List dated body measurements. |
| Body measurements | get-body-measurement |
Get the body measurement entry for one date. |
| Body measurements | create-body-measurement |
Create a dated body measurement. |
| Body measurements | update-body-measurement |
Update the body measurement for an existing date. |
| Account | get-user-info |
Return the user's ID, display name, and public profile URL. |
The Hevy API currently exposes no delete endpoints for workouts, routines, routine folders, exercise templates, or body measurements, so there are no corresponding delete tools.
| Name | URI | Description |
|---|---|---|
user-profile |
hevy://user |
Authenticated Hevy user profile. |
workout-count |
hevy://workout-count |
Total number of workouts in the account. |
exercise-templates |
hevy://exercise-templates |
Full formatted exercise template catalog. |
routine-folders |
`hevy://routi |