npm @almostjacked/hevy-mcpstreamable-httpMITupdated 1mo ago
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).
What can you do with Hevy (unofficial)?
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/mcp
You'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-mcp
Self-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?developer
Add 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.
Install
Add Hevy (unofficial) to your client. Pick the one you use.
{
"servers": {
"hevy-mcp": {
"type": "http",
"url": "https://hevy-coach.ajwallacemusic.workers.dev/mcp"
}
}
}Add to `.vscode/mcp.json` in your workspace.
claude mcp add hevy-mcp -- npx -y @almostjacked/hevy-mcpcodex mcp add hevy-mcp -- npx -y @almostjacked/hevy-mcpamp mcp add hevy-mcp -- npx -y @almostjacked/hevy-mcp{
"mcpServers": {
"hevy-mcp": {
"command": "npx",
"args": [
"-y",
"@almostjacked/hevy-mcp"
]
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"hevy-mcp": {
"command": "npx",
"args": [
"-y",
"@almostjacked/hevy-mcp"
]
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
{
"mcpServers": {
"hevy-mcp": {
"command": "npx",
"args": [
"-y",
"@almostjacked/hevy-mcp"
]
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
{
"mcpServers": {
"hevy-mcp": {
"command": "npx",
"args": [
"-y",
"@almostjacked/hevy-mcp"
]
}
}
}Add to `cline_mcp_settings.json` via the MCP Servers panel.
{
"mcpServers": {
"hevy-mcp": {
"command": "npx",
"args": [
"-y",
"@almostjacked/hevy-mcp"
]
}
}
}Add to `~/.gemini/settings.json`.
{
"mcpServers": {
"hevy-mcp": {
"type": "local",
"command": "npx",
"args": [
"-y",
"@almostjacked/hevy-mcp"
],
"tools": [
"*"
]
}
}
}Add to `~/.copilot/mcp-config.json`, or run `/mcp add` inside the CLI.
{
"context_servers": {
"hevy-mcp": {
"command": {
"path": "npx",
"args": [
"-y",
"@almostjacked/hevy-mcp"
]
}
}
}
}Add to your Zed `settings.json`.
npx -y @almostjacked/hevy-mcpRun `goose configure`, choose **Add Extension → Command-line Extension**, and paste this command.
12 tools
Hevy (unofficial) exposes 12 tools to a connected agent.
- 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
Score
80 / 100
Excellent
- Documentation25/25
- Maintenance16/25
- Trust16/20
- Capability8/15
- Install experience15/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 39 days ago
- Has a release history
- Repository is not archived
- Licensed MIT
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 12 tool(s) documented
- Provides prompt templates
- Provides resources
- 18 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint — no local install
Version history
| Versions | Published |
|---|---|
| 0.1.0Latest | Jul 23, 2026 |