Pod

Yes, this is on purpose. Pod is built for agents, so the default page is plain HTML.
Human? View the normal website.
Agent? You probably prefer /mcp/hevy-mcp-server/issues.md or /mcp/hevy-mcp-server/issues.json, or Pod over MCP.

Reported issues for Hevy MCP Server

Pod holds 22 of 47 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to Hevy MCP Server.

Most discussed

Unable to connect to remote MCP using Claude desktop

What happened: Adding the hosted endpoint as a Claude.ai custom connector fails with "Invalid authorization request." The /authorize page (where you paste the Hevy API key) never loads — the failure happens during OAuth discovery or dynamic client registration before that step.

No OAuth Client ID or Secret was entered in Advanced settings (left blank, expecting DCR to handle it).

Expected: Claude.ai should complete discovery via /.well-known/, register dynamically via /register, then r

Read the thread · 2026-08-07 · closed · external user · 5 comments

wrangler config hardcodes account-specific values (KV ids, custom domain, otel destinations)

Summary

wrangler.jsonc and wrangler.preview.jsonc on main hardcode values that only exist in the maintainer's Cloudflare account, so wrangler deploy from a clean clone or fork does not work without editing them first.

Values that are account-specific

wrangler.jsonc:

"routes": [{ "pattern": "mcp.hevy-mcp.dev", "custom_domain": true }],
"observability": {
	"traces": { "destinations": ["otel"] },
	"logs":   { "destinations": ["otel-logs"] },
},
"kv_namespaces": [{ "bi

[Read the thread](https://github.com/chrisdoc/hevy-mcp/issues/777) · 2026-07-28 · closed · outside contributor · 5 comments

### test: reuse production output schemas in live canaries

## Objective

Eliminate duplicate live-test output contracts.

## Scope

Export/import production output schemas, validate `structuredContent`, retain text compatibility assertions, add named sanitized fixtures beginning with workout events, and categorize live canaries.

## Dependencies

- **Hard dependencies:** None.
- **Optional reuse:** TS-02 response helpers may be reused, but production-schema reuse and sanitized live fixtures must be independently mergeable.

## Acceptance criteria

- [ ]

[Read the thread](https://github.com/chrisdoc/hevy-mcp/issues/608) · 2026-07-10 · closed · outside contributor · 4 comments

### Review production dependency audit findings

## Summary

While setting up `hevy-mcp@1.25.3` from a fresh local install, `npm audit --omit=dev` reports production-scope vulnerabilities. This does not necessarily mean the stdio MCP server is directly exploitable in normal local use, but it does make the published runtime dependency surface look broader than expected for a stdio-only MCP server.

The main concern is that generator/tooling-oriented packages appear in the production dependency tree, which pulls in transitive packages currently 

[Read the thread](https://github.com/chrisdoc/hevy-mcp/issues/355) · 2026-06-19 · closed · external user · 5 comments

### Suggestion: Streamline MCP output to minimize token overhead

Hi! Thanks for the great MCP.

I have a suggestion regarding the returned data format. Right now, the responses are delivered as raw JSON strings. For many LLM use cases, these JSON keys and structures consume unnecessary tokens without adding much semantic value.

It would be great to have the option to receive data in a more compact, context-friendly format (like structured text or simplified Markdown). This would help keep the context window clean and reduce costs/latency.

What do you think 

[Read the thread](https://github.com/chrisdoc/hevy-mcp/issues/271) · 2026-02-25 · closed · external user · 6 comments

### MCP tool nullifies reps when repRange is provided, making routine reps invisible in app

## Problem

When creating or updating routines via the MCP tool with both `reps` and `repRange` set on a set, the tool explicitly nullifies `reps` before sending the request to the Hevy API. This makes it impossible to have reps display correctly in the Hevy app's routine view and workout view.

## Root Cause

In `src/tools/routines.ts`, the set construction logic enforces mutual exclusivity:

```typescript
reps: repRange ? null : (set.reps ?? null),
rep_range: repRange,

When repRange is

Read the thread · 2026-02-23 · closed · external user · 5 comments

Add date filtering parameters to get-routines endpoint

Currently, the get-routines tool only supports pagination parameters (page and pageSize), but doesn't allow filtering by date ranges. This results in retrieving all routines even when only recently updated ones are needed. Consequently, the context windows is exceed

Super useful MCP, thanks again

Read the thread · 2025-10-23 · closed · external user · 5 comments

Support rep range in "create" and "update" workouts

Hi, first of all this is so cool, thanks for making it.

It would be good if the MCP server could support "rep range" rather than just the static reps figure. It appears in the hevy API docs that this is a supported field https://api.hevyapp.com/docs/#/Routines/post_v1_routines

Read the thread · 2025-09-02 · closed · external user · 6 comments

Most recent

Thank you — works great with Claude Desktop

Hello. Used hevy-mcp today via Claude Desktop's custom connector to design and inject a full workout routine into Hevy end to end. Folder creation, exercise matching, tempo notes in the set notes, all of it worked smoothly. Appreciate you building and maintaining this. If you ever set up a way to support the project (sponsors, tip jar, etc.) let me know, happy to contribute.

Read the thread · 2026-08-27 · closed · external user · 1 comment

Worker: per-request API key re-validation doubles Hevy API traffic and turns transient Hevy errors into unlogged 502s

Problem

In packages/worker/src/worker.ts, every POST /mcp calls validateHevyApiKey (via getUserInfo) before the request is served. Two consequences:

  1. Every MCP call costs two Hevy API calls — the validation probe plus the actual tool call — doubling pressure on Hevy's rate limits for busy clients.
  2. Any validation failure that is not 401/403 becomes an opaque 502 ("Unable to validate the Hevy API key"). The validation client is constructed with maxGetRetries: 0 and no `

Read the thread · 2026-08-26 · closed · outside contributor · 2 comments

get-training-summary returns zero workouts after a bulk import; workout list is not ordered by start time

Summary

get-training-summary reports no activity for periods where workouts exist. It assumes the workout list arrives in start-time order. The records come back in creation order, and a bulk import pushes those two orderings apart.

Steps to reproduce

  1. Bulk import historical workouts dated older than your existing logged sessions.
  2. Keep or log workouts from the last seven days.
  3. Call get-training-summary with weeks: 1.

Expected

A summary covering the sessions in that

Read the thread · 2026-08-21 · closed · external user · 3 comments

update-workout fails when Hevy requires undocumented is_private

Summary

update-workout can fail with an opaque transient-error message when the caller changes only metadata such as description. The upstream Hevy API returns HTTP 500 if is_private is omitted, even though the public OpenAPI schema does not mark the field as required.

Reproduction

  1. Read a completed workout with get-workout.
  2. Call update-workout with only a new description.
  3. The MCP reads the current workout and builds a full PUT payload, but it includes is_private o

Read the thread · 2026-08-20 · closed · outside contributor · 3 comments

Can't connect to Hevy MCP no tool available

Since today Claude no longer can connect to the hevy mcp server.

It shows this error: https://mcp.hevy-mcp.dev/mcp Connection issue Couldn’t connect to the server. Check that the URL points to a valid MCP server.

And this pop up in Claude: Your account was authorized, but hevy returned an error when connecting. You can try again, or check that the server is working. If this persists, share this reference with support: “ofid_34dfdc9982960e42”

Read the thread · 2026-08-18 · closed · external user · 2 comments

Hosted Worker: OAuth authorization succeeds but MCP connection then errors (Claude.ai custom connector)

Environment: Claude.ai custom connector, hosted endpoint https://mcp.hevy-mcp.dev/mcp

Symptom: Adding the connector in Claude.ai (Settings → Connectors) and completing the OAuth flow succeeds — Claude.ai confirms the account was authorized — but the connector then fails with:

"Your account was authorized, but Hevy MCP (Chrisdoc) returned an error when connecting. You can try again, or check that the server is working."

Claude.ai support reference: ofid_5815305cb4941bb7

**What I

Read the thread · 2026-08-16 · closed · external user · 3 comments

get-routine fails 100% of the time on 5.0.x, rest_seconds typed as z.string() but the Hevy API returns a number

(summary by Claude)

Summary

Since upgrading to 5.0.x, every get-routine call fails with the generic fallback error:

[get-routine] Error: The request failed unexpectedly. Please try again.

The cause is an output-schema type mismatch: formattedRoutineExerciseSchema declares rest_seconds as z.string(), but the Hevy API returns it as a number. The strict output validation added in 5.0.0 turns that mismatch into a hard tool failure.

get-routine is the only tool t

Read the thread · 2026-08-01 · closed · external user · 2 comments

ci: OTel export job fails on every fork run (personal collector + missing token, if: always())

Problem

The otel-cicd-action job in .github/workflows/build-and-test.yml exports the workflow trace to your personal collector:

otel-cicd-action:
  if: always()
  name: OpenTelemetry Export Trace
  ...
  with:
    otlpEndpoint: "https://otel.chrisdoc.dev/v1/traces"
    otlpHeaders: "Authorization=Bearer ${{ secrets.OTEL_COLLECTOR_TOKEN }}"

On any fork or mirror, OTEL_COLLECTOR_TOKEN doesn't exist, so the header renders as Authorization=Bearer and the export fails — and

Read the thread · 2026-07-30 · closed · outside contributor · 3 comments

docs: clarify Google Antigravity setup options in README.md

Description

The current Google Antigravity setup instructions in the README.md tell users to run agy plugin install and then configure their API key by manually setting up the complete server block in the global ~/.gemini/config/mcp_config.json file.

However, having to manually write the full mcpServers configuration block (with command, args, and env) defeats the purpose of installing it as a plugin.

Proposed Changes

We should update the README.md to clearly define t

Read the thread · 2026-07-25 · closed · outside contributor · 1 comment

docs: add Google Antigravity setup instructions

Description

Currently, the README.md includes detailed instructions for connecting to the Hevy MCP server using Codex, Claude Desktop, and Cursor. However, there are no specific setup instructions for Google Antigravity (both antigravity-cli and the Antigravity IDE), which has first-class support for Model Context Protocol (MCP).

I would like to suggest adding support for Google Antigravity setup in the repository.


The Goal: One-Line Installation

Instead of r

Read the thread · 2026-07-24 · closed · outside contributor · 1 comment

Connect via ChatGPT Web

I'm trying to connect https://hevy.chrisdoc.dev/mcp as a custom MCP server in ChatGPT Web.

ChatGPT discovers the server successfully, but OAuth fails during dynamic client registration with:

Dynamic client registration failed: registration endpoint returned 403

Is the hosted server intended to support ChatGPT's MCP implementation, or only Codex/Claude?

Read the thread · 2026-07-22 · closed · external user · 2 comments

test: add image-level MCP stdio boundary coverage

Objective

Implement the named TS-05-Docker-stdio follow-up from #609 by running the built Docker image over real MCP stdio against an isolated loopback fixture, with no live Hevy secret available.

Acceptance criteria

Read the thread · 2026-07-11 · closed · outside contributor · 0 comments

test: add nightly diagnostics redaction regression coverage

Objective

Make live failures actionable without leaking credentials or user/upstream payload detail.

Scope

Add structured category results, environment/version metadata, classification, concise schema paths, Axios/MCP error normalization, forbidden-value redaction tests, and artifact retention guidance.

Dependencies

Read the thread · 2026-07-10 · closed · outside contributor · 2 comments

ci: establish explicit coverage denominator and ratchet

Objective

Make coverage percentages represent all intended repository-owned production source, then prevent regression.

Scope

Add an explicit include/exclude policy; merge or flag unit/MCP/stdio reports; record the merged-main baseline; configure project and patch policy; enumerate stronger expectations for risk-heavy modules.

Dependencies

Read the thread · 2026-07-10 · closed · outside contributor · 2 comments

The remaining reports are on the project's issue tracker.