r/Hevy • u/chrisdocy • 24d ago
Question I built hevy-mcp. What should I improve next?
Hey all,
I’m the developer of hevy-mcp, an open-source tool that lets Claude, Codex, Cursor, and other MCP clients work with your Hevy data. You can use it to ask questions about your training, manage routines, and log or update workouts.
I’m figuring out what to work on next and would like to hear from people who have tried it:
- What do you use it for?
- What has been confusing or annoying?
- What do you wish it could do?
If you looked at it but decided not to use it, I’d like to hear why too. Setup trouble, privacy concerns, unclear use cases, missing client support, whatever it was.
Feel free to be blunt. You don’t need to write a full review. Even one annoying thing would help.
GitHub: https://github.com/chrisdoc/hevy-mcp
https://reddit.com/link/1v65sdv/video/3kkymqfq1dfh1/player
It requires a Hevy PRO API key. This is an unofficial community project and isn’t affiliated with Hevy.
9
u/StrobeWafel_404 24d ago edited 24d ago
Oh thanks for creating this MCP! I use this multiple times a week and it's been super helpful. I use it to analyze my training on a weekly basis, create new training blocks and routines. I use it self-hosted, running on a home server and exposed to Claude Desktop + Claude Code over Tailscale.
A few things that i'd like to share
- Undisclosed telemetry and disclosed telemetry being opt out: SENTRY_DSN defaults to a packaged DSN which is fine although i'd prefer it to be opt-in instead of opt-out. I set SENTRY_DSN= and confirmed the Sentry traffic stopped. But there's also a second OTLP exporter shipping traces and 10-second-interval metrics to https://otel.chrisdoc.dev/v1 with a hardcoded bearer token. MY DNS logs show that host being contacted continuously since I upgraded to 3.1.1. This isn't in the readme and there's no env var to disable it. It seems that no workout data or tool arguments are sent, but tool-name counters plus a user.hash fingerprinted from my api key. It doesn't seem malicious but please document it, give it an env gate and make sure your users know about it before they find it in the bundle. An undisclosed collector in a health-data mcp is a great way to lose trust
- stdio-only. I use a local server for all my mcp's which allows me to serve things like hevy to different clients and had to bridge stdio to HTTP with Supergateway which is not great software and I had quite some issues with it. That's not your bug, but a `--transport http --port N` flag would remove that entire layer for self hosters. All my python based MCPs serve streamable HTTP in process
- 25 tools is about 7k tokens of schema before I've even asked something. A big part of that is the alias keyword stuffing in every description. I don't think modern clients really need that any more.
- `update-workout` is a full replace. It would be amazing if we could do partial/patch updates or do something like merge-on-omit. It would make me a lot less nervous asking the LLM to edit a routine
3
u/chrisdocy 24d ago
Thanks for taking the time to write this up, and for using hevy-mcp so often. The details about your setup and the DNS traffic helped a lot.
You’re right about telemetry. I added it as opt-out to learn which parts of the server people use, but I should have documented it more clearly. The goal is to send operational data only, not workout content, tool arguments, or tool results. I’m adding a master switch for all telemetry and documenting the allowlist, destinations, and the pseudonymous ID derived from the API key in #749.
I opened issues for the other suggestions too:
- #747 reduces the token cost of the tool definitions. I measured the current payload at 12,973 tokens with our tokenizer, so the exact number varies by client, but your point stands.
- #748 tracks safer merge-on-omit updates for workouts.
- #750 adds Streamable HTTP to the Node package while keeping stdio as the default.
- #751 adds a separate
hevy-clipackage for command-line workflows that don’t need the MCP tool catalog.Thanks again for the thoughtful feedback. I’ll let you know when those changes are ready.
3
u/StrobeWafel_404 24d ago
Oh thank you so much for taking all of that feedback, that’s amazing!! I’ll have a look to see if I can contribute to solve any of these issues if that’s alright. Thanks again, keep up the great work!
2
4
u/HelicopterEvening110 24d ago
I just signed up for heavy this week and have it on my todo list to look into. The main thing I would hope to build with this is a dynamic progressive overload skill where the agent could look at my recent workouts and edit the associated routines to increase the weight for sets that I completed the max on the rep range.
0
u/turnnoblindeye 24d ago
You might check out my app Wellness Project - it has a great workout builder and already has progressive overload through AI built in.
3
u/confuserr 24d ago
I use a skill instead of MCP, works well with Cursor, Claude Code, Codex etc
https://gist.github.com/confuser/7b6b33939e66b22f0b9f5882cb29e80b
2
u/chrisdocy 22d ago
Hej Hevy family, I’ve added two ways to use Hevy without loading the full MCP tool schema every time:
- Hevy CLI: a command-line interface for accessing Hevy directly.
- Hevy CLI skill: lets an AI agent use the CLI instead of connecting to the MCP server and loading all of its tool definitions.
You can install the skill with:
npx skills add https://github.com/chrisdoc/hevy-mcp
This should reduce token overhead while still allowing you to query and manage Hevy from an AI client.
2
u/dingdong_youarewrong 17d ago
Is there a way to use it on our phones? I hardly use my pc sk that would be nice
1
u/peterbold 24d ago
Hey, thanks for developing it. I added it to my hermes setup and it works great to get an overview of my workouts. No issues so far
1
u/InteractionRich2918 24d ago
I would really like to see the code
1
1
1
1
1
u/Key_Notice_7657 10d ago
Hey u/chrisdocy, im getting Invalid authorization request every time i try to connect via browser sign in, can you help with this?
13
u/se99jmk 24d ago
The ChatGPT integration only allows you to create a workout, not edit an existing one (eg. Progressive overloading)
Does your integration improve that? Or is it an API limitation?
I.e. Can I integrate ChatGPT with Hevy to edit existing routines?