Hevy MCP (Remote)

io.github.rwestergrenPublished by GitHub account rwestergrenv0.1.6Updated Oct 24, 2026

Hosted/gateway-ready Hevy fitness MCP: workouts, routines, templates.

Overview

AI-generated overview

MCP server for the Hevy fitness app that lets an assistant read, create and update workouts, routines, exercise templates, folders and webhook subscriptions.

What you can do
Fetch, create and update workouts, and read workout counts and workout events. List, read, create and update workout routines. Browse and search exercise templates, with in-memory caching. List and create routine folders. Create, view and delete webhook subscriptions for workout events.
When to use it
Use it when you want an assistant to work with a Hevy training log: reviewing or logging workouts, managing routines and folders, or setting up webhook subscriptions for workout events. It is aimed at Hevy PRO users and, in its packaged form, at operators hosting it behind an MCP gateway.
Requirements
A Hevy API key in the HEVY_API_KEY environment variable (requires Hevy PRO). The packaged form is an OCI image run with Docker that serves MCP streamable-HTTP on /mcp with health on /healthz; the upstream npm package needs Node.js 24 or higher and npm 10 or higher.
Before you install
The server needs the HEVY_API_KEY secret, which grants access to the user's Hevy account. It can create and update workouts, routines and folders, and create or delete webhook subscriptions, so changes reach the real account. The README states Sentry monitoring is built in, with PII collection disabled by default.

Installation

In SourceWeft

  1. Open Hevy MCP (Remote) in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

hevy-mcp-remote: Hosted / gateway-ready MCP for Hevy Fitness

[License: MIT] [Build Docker image] [ghcr.io]

Fork notice. This is an independently-maintained fork of chrisdoc/hevy-mcp, repackaged for multi-tenant MCP gateways. It ships the same Hevy tools wrapped in supergateway as an OCI image that speaks MCP streamable-HTTP over HTTP, instead of stdio. Use the upstream hevy-mcp npm package for local/stdio use in Claude Desktop, Cursor, etc.

A Model Context Protocol (MCP) server for the Hevy fitness tracking app, packaged as a supergateway-wrapped OCI image for hosting behind an MCP gateway. Exposes MCP streamable-HTTP on /mcp and health on /healthz; reads HEVY_API_KEY from the container environment.


📋 Table of Contents


🚀 Features

  • Workout Management: Fetch, create, and update workouts.
  • Routine Management: Access and manage workout routines.
  • Exercise Templates: Browse available exercise templates with in-memory caching.
  • Folder Organization: Manage routine folders.
  • Webhook Subscriptions: Create, view, and delete webhook subscriptions for workout events.

🏁 Quick Start

Pick the workflow that fits your setup:

ScenarioCommandRequirements
One-off stdio runHEVY_API_KEY=sk_live... npx -y hevy-mcpNode.js ≥ 24, Hevy API key
Local developmentnpm install && npm run build && npm start.env with HEVY_API_KEY

🛠️ Prerequisites

  • Node.js: v24 or higher (strongly recommended to use the exact version pinned in .nvmrc).
  • npm: v10 or higher.
  • Hevy API key: Required for all operations (available with Hevy PRO).

📦 Installation

Run via npx (Recommended)

You can launch the server directly without cloning:

bash
HEVY_API_KEY=your_hevy_api_key_here npx -y hevy-mcp

Manual Installation

bash
# Clone the repositorygit clone https://github.com/chrisdoc/hevy-mcp.gitcd hevy-mcp
# Install dependenciesnpm install
# Create .env and add your keyscp .env.sample .env# Edit .env and add your HEVY_API_KEY

🔗 Integration

Claude Desktop Configuration

To use this server with Claude Desktop, add the following to your claude_desktop_config.json:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json

json
{	"mcpServers": {		"hevy-mcp": {			"command": "npx",			"args": ["-y", "hevy-mcp"],			"env": {				"HEVY_API_KEY": "sk_live_your_key_here"			}		}	}}

Cursor Configuration

Add this server under "mcpServers" in ~/.cursor/mcp.json:

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

✨ Why hevy-mcp?

  • 🚀 High Performance: Built with the Oxc toolchain (oxlint/oxfmt) for near-instant linting and formatting.
  • 🛡️ Type Safety: Fully type-safe implementation using Zod and Kubb-generated API clients.
  • 📉 Observability: Built-in Sentry monitoring for error tracking and performance profiling.
  • ⚡ Optimized: Includes in-memory caching for exercise templates to reduce API latency.

⚙️ Configuration

Supply your Hevy API key via:

  1. Environment Variable: HEVY_API_KEY (in .env or system environment).
  2. CLI Argument: --hevy-api-key=your_key (after -- in npm scripts).
env
# Example .envHEVY_API_KEY=your_hevy_api_key_here

📡 Sentry Monitoring

hevy-mcp includes Sentry monitoring to observe errors and usage in production. It initializes @sentry/node with tracing enabled and PII collection disabled by default.


🐳 Running behind an MCP gateway (supergateway contract)

The MCP server itself speaks stdio only. For multi-tenant gateway deployments (e.g. mcp-gateway-poc), this repo ships a Dockerfile that wraps the stdio binary with supergateway so a single container exposes MCP streamable-HTTP.

The image follows the same contract every gateway-hosted MCP uses:

  • MCP streamable-HTTP on 0.0.0.0:$PORT at /mcp
  • Health endpoint at /healthz
  • Stateful sessions (Mcp-Session-Id honored)
  • HEVY_API_KEY is read from the container environment and passed to the spawned stdio child

Images are published to ghcr.io/rwestergren/hevy-mcp from main and from any manually cut GitHub release. Build locally with:

bash
docker build -t hevy-mcp:local .docker run --rm -e HEVY_API_KEY=sk_live_... -p 8080:8080 hevy-mcp:localcurl http://localhost:8080/healthz

End users running hevy-mcp directly should use the stdio/npx flow above; the Docker image is aimed at gateway operators, not individual clients.


🛠️ Available MCP Tools

CategoryTools
Workoutsget-workouts, get-workout, create-workout, update-workout, get-workout-count, get-workout-events
Routinesget-routines, get-routine-by-id, create-routine, update-routine
Templatesget-exercise-templates, get-exercise-template, search-exercise-templates
Foldersget-routine-folders, get-routine-folder, create-routine-folder
Webhooksget-webhook-subscription, create-webhook-subscription, delete-webhook-subscription

👨‍💻 Development & Contributing

Quick Commands

  • Build: npm run build
  • Lint/Format: npm run check (uses oxlint/oxfmt)
  • Unit Tests: npx vitest run --exclude tests/integration/**
  • Full Test Suite: npm test (requires HEVY_API_KEY)

For a detailed senior engineer guide, please refer to AGENTS.md.

API Client Generation

The API client is automatically generated from the OpenAPI spec using Kubb:

bash
npm run build:client

📄 License & Acknowledgements


Contributions are welcome! Please open an issue or PR for any major changes.

Source: README.md at commit 6f0f6b3

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.6LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts