HevyMCP is an AI-powered Model Context Protocol (MCP) server for the Hevy fitness app. It lets you log workouts, search exercises, manage routines, and more—using natural language, a web interface, or AI assistants like Claude and ChatGPT.
- Natural language workout logging ("bench press 3x8 at 135 lbs")
- Smart exercise matching (fuzzy, NLP, user preferences)
- Routine & folder management
- Webhook subscriptions
- Modern web interface (demo & real mode)
- MCP server for AI assistants
Experience HevyMCP instantly with our Smithery playground:
npx -y @smithery/cli install hevymcp --client claudeOr visit: Smithery MCP Registry and search for "hevymcp"
pip install -r requirements.txt# Create .env file
echo "HEVY_API_KEY=your_hevy_api_key_here" > .envpython -m uvicorn app.main:app --reload --port 8000- Visit: http://localhost:8000
For demo mode (no API key needed, sample data only):
export DEMO_MODE=true
python -m uvicorn app.main:app --reload --port 8000- Try workout logging, search, and muscle group browsing instantly.
- Demo mode: For public demo site only. No API key needed, safe for public use, sample data only.
- Real mode: For local install. Enter your API key for real logging (local only, never sent to third parties). Do NOT use demo mode locally.
GET /mcp/routines— List all routinesPOST /mcp/routines— Create a new routineGET /mcp/routines/{routine_id}— Get routine by IDPUT /mcp/routines/{routine_id}— Update a routine
GET /mcp/routine-folders— List all foldersPOST /mcp/routine-folders— Create a new folderGET /mcp/routine-folders/{folder_id}— Get folder by ID
GET /mcp/webhooks— List all webhook subscriptionsPOST /mcp/webhooks— Create a webhookDELETE /mcp/webhooks/{webhook_id}— Delete a webhook
POST /mcp/workout— Log a workout (NLP)GET /mcp/workouts— List recent workoutsGET /mcp/exercises/search?query=bench— Search exercisesGET /mcp/exercises/muscle-groups— List muscle groups
- log_workout — Log workouts using natural language ("bench press 3x8 at 135 lbs")
- get_workout_history — List recent workouts with pagination
- get_workout_count — Get total workout statistics
- get_workout_events — Get workout update/delete events
- search_exercises — Search for exercises by name with fuzzy matching
- get_muscle_groups — List all available muscle groups
- get_exercises_by_muscle_group — Get exercises filtered by muscle group
- update_exercise_template — Modify existing exercise templates
- delete_exercise_template — Remove exercise templates
- list_routines — List all workout routines with pagination
- create_routine — Create new workout routines
- get_routine — Get specific routine by ID
- update_routine — Modify existing routines
- delete_routine — Remove routines
- list_routine_folders — List all routine folders
- create_routine_folder — Create organization folders
- get_routine_folder — Get folder details by ID
- update_routine_folder — Modify folder properties
- delete_routine_folder — Remove folders
- list_webhooks — List all webhook subscriptions
- create_webhook — Create real-time event subscriptions
- delete_webhook — Remove webhook subscriptions
app/integrations/hevy_api.py— Hevy API client (add new endpoints here)app/endpoints/— FastAPI endpoints (add new routes here)app/mcp_server.py— MCP tool definitions and handlersapp/web_interface.py— Web UI logic (demo & real mode)
- Demo mode: No API key needed, no data saved, safe for public demos.
- Real mode: API key is only used locally, never sent to third parties.
- Never enter your real API key on a public/shared server!
- Fork this repo and clone it.
- Create a virtual environment:
python -m venv venv source venv/bin/activate - Install dependencies:
pip install -r requirements.txt
- Add new endpoints/tools:
- Add to
hevy_api.py(API client) - Add to
endpoints/(FastAPI) - Add to
mcp_server.py(MCP tools)
- Add to
- Open a pull request!
- Open an issue or discussion on GitHub.
- PRs and feedback welcome!