hevy-mcp 1.28.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +73 -7
- package/dist/cli.mjs +2 -2
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +2 -2
- package/dist/{src-J8OsyJcw.mjs → src-c3mB-R0m.mjs} +771 -125
- package/dist/src-c3mB-R0m.mjs.map +1 -0
- package/package.json +12 -4
- package/server.json +29 -0
- package/dist/src-J8OsyJcw.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -15,6 +15,7 @@ A Model Context Protocol (MCP) server implementation that interfaces with the [H
|
|
|
15
15
|
- [Quick Start](#quick-start)
|
|
16
16
|
- [Prerequisites](#prerequisites)
|
|
17
17
|
- [Installation](#installation)
|
|
18
|
+
- [Run with Docker](#run-with-docker)
|
|
18
19
|
- [Claude Desktop Configuration](#claude-desktop-configuration)
|
|
19
20
|
- [Cursor Configuration](#cursor-configuration)
|
|
20
21
|
- [Other MCP Clients (via add-mcp)](#other-mcp-clients-via-add-mcp)
|
|
@@ -39,10 +40,11 @@ A Model Context Protocol (MCP) server implementation that interfaces with the [H
|
|
|
39
40
|
|
|
40
41
|
Pick the workflow that fits your setup:
|
|
41
42
|
|
|
42
|
-
| Scenario | Command
|
|
43
|
-
| :-------------------- |
|
|
44
|
-
| **One-off stdio run** | `HEVY_API_KEY=
|
|
45
|
-
| **
|
|
43
|
+
| Scenario | Command | Requirements |
|
|
44
|
+
| :-------------------- | :-------------------------------------------------------------------------------------- | :------------------------- |
|
|
45
|
+
| **One-off stdio run** | `HEVY_API_KEY=your_key npx -y hevy-mcp` or `HEVY_API_KEY=your_key bunx hevy-mcp@latest` | Node.js ≥ 20, Hevy API key |
|
|
46
|
+
| **Docker stdio run** | `docker run -i --rm -e HEVY_API_KEY ghcr.io/chrisdoc/hevy-mcp:latest` | Docker, Hevy API key |
|
|
47
|
+
| **Local development** | `npm install && npm run build && npm start` | `.env` with `HEVY_API_KEY` |
|
|
46
48
|
|
|
47
49
|
---
|
|
48
50
|
|
|
@@ -51,6 +53,7 @@ Pick the workflow that fits your setup:
|
|
|
51
53
|
- **Node.js**: v20 or higher (strongly recommended to use the exact version pinned in `.nvmrc`).
|
|
52
54
|
- **npm**: v10 or higher.
|
|
53
55
|
- **Bun** (optional): If you want to launch with `bunx`.
|
|
56
|
+
- **Docker** (optional): If you want an isolated container-based stdio setup.
|
|
54
57
|
- **Hevy API key**: Required for all operations (available with Hevy PRO).
|
|
55
58
|
|
|
56
59
|
---
|
|
@@ -85,6 +88,26 @@ cp .env.sample .env
|
|
|
85
88
|
# Edit .env and add your HEVY_API_KEY
|
|
86
89
|
```
|
|
87
90
|
|
|
91
|
+
### Run with Docker
|
|
92
|
+
|
|
93
|
+
Official multi-platform images are published to GitHub Container Registry for
|
|
94
|
+
`linux/amd64` and `linux/arm64`:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
export HEVY_API_KEY=your_hevy_api_key_here
|
|
98
|
+
docker run -i --rm -e HEVY_API_KEY ghcr.io/chrisdoc/hevy-mcp:latest
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
The server uses stdio, so `-i` keeps standard input open for the MCP client.
|
|
102
|
+
`--rm` removes the stopped container automatically. The `-e HEVY_API_KEY`
|
|
103
|
+
form forwards the variable from the host environment without putting the key
|
|
104
|
+
in the command arguments.
|
|
105
|
+
|
|
106
|
+
Use `latest` to follow the newest stable release. For reproducible deployments,
|
|
107
|
+
pin the exact version shown on the release, using a tag such as
|
|
108
|
+
`ghcr.io/chrisdoc/hevy-mcp:X.Y.Z`. Major (`:X`) and major.minor (`:X.Y`) tags
|
|
109
|
+
are also published for controlled automatic updates.
|
|
110
|
+
|
|
88
111
|
---
|
|
89
112
|
|
|
90
113
|
## 🔗 Integration
|
|
@@ -119,6 +142,41 @@ If you prefer Bun, swap the launcher fields:
|
|
|
119
142
|
}
|
|
120
143
|
```
|
|
121
144
|
|
|
145
|
+
To run Claude Desktop through Docker instead, first create an environment file
|
|
146
|
+
outside the repository containing your real key:
|
|
147
|
+
|
|
148
|
+
```dotenv
|
|
149
|
+
HEVY_API_KEY=replace_with_your_real_key
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Restrict access to that file where supported (for example,
|
|
153
|
+
`chmod 600 /absolute/path/to/hevy-mcp.env`), then use its absolute path in the
|
|
154
|
+
Claude Desktop configuration:
|
|
155
|
+
|
|
156
|
+
```json
|
|
157
|
+
{
|
|
158
|
+
"mcpServers": {
|
|
159
|
+
"hevy-mcp": {
|
|
160
|
+
"command": "docker",
|
|
161
|
+
"args": [
|
|
162
|
+
"run",
|
|
163
|
+
"-i",
|
|
164
|
+
"--rm",
|
|
165
|
+
"--env-file",
|
|
166
|
+
"/absolute/path/to/hevy-mcp.env",
|
|
167
|
+
"ghcr.io/chrisdoc/hevy-mcp:latest"
|
|
168
|
+
]
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
This configuration runs the same stdio server inside the container; it does
|
|
175
|
+
not expose an HTTP port or start a detached service. Docker reads the key from
|
|
176
|
+
the environment file, so the Claude configuration does not replace an
|
|
177
|
+
inherited key with a placeholder. Replace `latest` with an exact version tag if
|
|
178
|
+
you want Claude Desktop to stay on a pinned release.
|
|
179
|
+
|
|
122
180
|
### Cursor Configuration
|
|
123
181
|
|
|
124
182
|
Add this server under `"mcpServers"` in `~/.cursor/mcp.json`:
|
|
@@ -179,11 +237,18 @@ Supply your Hevy API key via the `HEVY_API_KEY` environment variable (in
|
|
|
179
237
|
Set `HEVY_MCP_API_TIMEOUT` to override the default 30-second Hevy API request
|
|
180
238
|
timeout. Its value is in milliseconds.
|
|
181
239
|
|
|
240
|
+
Set `HEVY_MCP_DEBUG=1` to emit verbose, privacy-bounded diagnostics to stderr.
|
|
241
|
+
Debug records include tool invocations and sanitized Hevy API response timing
|
|
242
|
+
and status details. Other values leave diagnostics disabled, and stdout remains
|
|
243
|
+
reserved for the MCP JSON-RPC stream.
|
|
244
|
+
|
|
182
245
|
```env
|
|
183
246
|
# Example .env
|
|
184
247
|
HEVY_API_KEY=your_hevy_api_key_here
|
|
185
248
|
# Optional: customize Hevy API request timeout (milliseconds)
|
|
186
249
|
HEVY_MCP_API_TIMEOUT=30000
|
|
250
|
+
# Optional: enable verbose stderr diagnostics (only the value 1 enables it)
|
|
251
|
+
HEVY_MCP_DEBUG=1
|
|
187
252
|
```
|
|
188
253
|
|
|
189
254
|
### 🧠 Exercise Template Cache Behavior
|
|
@@ -215,10 +280,11 @@ paging behavior explicit and avoid cross-page invalidation complexity.
|
|
|
215
280
|
<details>
|
|
216
281
|
<summary><strong>⚠️ Migration Note (v1.18.0)</strong></summary>
|
|
217
282
|
|
|
218
|
-
As of **v1.18.0**, `hevy-mcp` removed
|
|
219
|
-
support.
|
|
283
|
+
As of **v1.18.0**, `hevy-mcp` removed HTTP/SSE transport and its previous
|
|
284
|
+
Docker packaging. Docker support is now available again for the stdio server.
|
|
220
285
|
|
|
221
|
-
|
|
286
|
+
Both `npx hevy-mcp` and the official container image use stdio; HTTP ports and
|
|
287
|
+
detached-container deployment are not supported.
|
|
222
288
|
|
|
223
289
|
</details>
|
|
224
290
|
|
package/dist/cli.mjs
CHANGED
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
(function() {
|
|
5
5
|
try {
|
|
6
6
|
var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {};
|
|
7
|
-
e.SENTRY_RELEASE = { id: "hevy-mcp@
|
|
7
|
+
e.SENTRY_RELEASE = { id: "hevy-mcp@2.0.0" };
|
|
8
8
|
var n = new e.Error().stack;
|
|
9
9
|
n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "03cf150f-6466-4ca3-9cf1-e423cc0e3cd2", e._sentryDebugIdIdentifier = "sentry-dbid-03cf150f-6466-4ca3-9cf1-e423cc0e3cd2");
|
|
10
10
|
} catch (e) {}
|
|
11
11
|
})();
|
|
12
|
-
import { r as runServer } from "./src-
|
|
12
|
+
import { r as runServer } from "./src-c3mB-R0m.mjs";
|
|
13
13
|
//#region src/cli.ts
|
|
14
14
|
runServer().catch((error) => {
|
|
15
15
|
console.error("Fatal error in main():", error);
|
package/dist/index.d.mts
CHANGED
|
@@ -14,7 +14,7 @@ declare function createServer({
|
|
|
14
14
|
config
|
|
15
15
|
}: {
|
|
16
16
|
config: ServerConfig;
|
|
17
|
-
}): McpServer
|
|
17
|
+
}): Promise<McpServer>;
|
|
18
18
|
declare function runServer(): Promise<void>;
|
|
19
19
|
//#endregion
|
|
20
20
|
export { configSchema, createServer, createServer as default, runServer };
|
package/dist/index.mjs
CHANGED
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
(function() {
|
|
5
5
|
try {
|
|
6
6
|
var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {};
|
|
7
|
-
e.SENTRY_RELEASE = { id: "hevy-mcp@
|
|
7
|
+
e.SENTRY_RELEASE = { id: "hevy-mcp@2.0.0" };
|
|
8
8
|
var n = new e.Error().stack;
|
|
9
9
|
n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "5b077b94-9ef8-4f24-a0b0-8dcfbf491be1", e._sentryDebugIdIdentifier = "sentry-dbid-5b077b94-9ef8-4f24-a0b0-8dcfbf491be1");
|
|
10
10
|
} catch (e) {}
|
|
11
11
|
})();
|
|
12
|
-
import { n as createServer, r as runServer, t as configSchema } from "./src-
|
|
12
|
+
import { n as createServer, r as runServer, t as configSchema } from "./src-c3mB-R0m.mjs";
|
|
13
13
|
export { configSchema, createServer, createServer as default, runServer };
|