hevy-mcp
hevy-mcp
Unofficial MCP server for Hevy. Design training programs in chat; your AI creates the routines directly in your Hevy account and analyzes your logged training. Requires a Hevy PRO API key (hevy.com/settings?developer).
Use it
Hosted (easiest — claude.ai web, mobile, desktop)
Add a custom connector in claude.ai → Settings → Connectors:
https://hevy-coach.ajwallacemusic.workers.dev/mcpYou'll be prompted for your Hevy API key; it's stored encrypted in your own OAuth grant and sent only to api.hevyapp.com.
Claude Desktop one-click
Download hevy-mcp.mcpb,
double-click, paste your key when prompted.
Local (Claude Code / Cursor / any stdio client)
claude mcp add hevy -e HEVY_API_KEY=<key> -- npx -y @almostjacked/hevy-mcpSelf-host (free, your own infra)
The published package ships the worker — no clone needed:
mkdir hevy-worker && cd hevy-worker && npm init -y
npm install @almostjacked/hevy-mcp wrangler
cat > wrangler.jsonc <<'EOF'
{
"name": "hevy-mcp",
"main": "node_modules/@almostjacked/hevy-mcp/dist/worker.js",
"compatibility_date": "2026-07-01",
"compatibility_flags": ["nodejs_compat"]
}
EOF
npx wrangler deploy
npx wrangler secret put AUTH_TOKEN # any long random string — becomes your Bearer token
npx wrangler secret put HEVY_API_KEY # from hevy.com/settings?developerAdd your worker URL (https://hevy-mcp.<your-subdomain>.workers.dev/mcp) to clients
that support custom headers — e.g. Claude Code:
claude mcp add --transport http hevy-selfhost <url> --header "Authorization: Bearer <token>".
claude.ai custom connectors don't support custom auth headers; for claude.ai use the
hosted instance above, or front your worker with Cloudflare Access.
Tools
Tool | Description |
search_exercises | Search the user's Hevy exercise library by name (fuzzy). Returns template id, exact title, type, muscle group and equipment. |
list_routine_folders | List the user's routine folders (id + title). Check this before creating a folder — reuse an existing one when the name matches. |
create_routine_folder | Create a routine folder, or return the existing folder if one with this exact title already exists (never duplicates). |
list_routines | List the user's existing routines (id, title, folder_id, exercise_count). Use to avoid creating duplicates. |
create_routine | create a routine (lb-first: weight_lb snaps to 2.5/5 lb increments; RPE folded into notes; supersets; duration/distance targets supported) |
get_workouts | Get the user's most recent logged workouts, newest first, as compact summaries: title, date, duration, and per-exercise set count + top set. Use get_workout for full set-by-set detail of one workout. |
get_workout | Get one logged workout with every set (weights in kg). Use the id from get_workouts. |
get_workout_count | Total number of workouts the user has ever logged in Hevy. |
get_exercise_history | past sets + estimated 1RM in lb for one exercise (full history, optional date range) |
get_routine | Get one routine in full (all exercises and sets). Always call this before update_routine so you can send back the complete routine. |
update_routine | Replace an existing routine. WARNING: this overwrites the routine — Hevy replaces its exercises with exactly what you send, so first call get_routine and include every exercise you want to keep. Folder cannot be changed here; duration/distance/custom-metric set targets round-trip safely. |
get_training_summary | weekly sessions/volume (lb), sets per muscle group, top-lift 1RM trend |
Privacy Policy
Your Hevy API key and training data pass through only to api.hevyapp.com. The stdio/.mcpb versions run entirely on your machine. The hosted instance stores nothing but your encrypted OAuth grant; disconnecting revokes it. Nothing is logged or shared with third parties.
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/almostjacked/hevy-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server