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:
- 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.
- 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: 0and 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
- Bulk import historical workouts dated older than your existing logged sessions.
- Keep or log workouts from the last seven days.
- Call
get-training-summarywithweeks: 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
- Read a completed workout with
get-workout. - Call
update-workoutwith only a newdescription. - The MCP reads the current workout and builds a full PUT payload, but it includes
is_privateo
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
- Build the candidate Docker image and drive its installed server over real MCP stdio.
- Exercise initialize, inventory, representative successful and error tool calls, and close.
- Keep MCP JSON-RPC as the only stdout output and verify diagnostic output remai
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
- Hard dependencies: None.
- Optional reuse: TS-04 schema categorization and TS-06 lane names may be reused, but redaction normalization and regression fixtures
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
- Hard dependencies: TS-06 for stable lane names and reproducible report composition.
- Optional/independent inputs: TS-03 and TS-05 are
Read the thread · 2026-07-10 · closed · outside contributor · 2 comments
The remaining reports are on the project's issue tracker.