hevy-mcp 1.11.10 → 1.12.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  # hevy-mcp: Model Context Protocol Server for Hevy Fitness API
2
2
 
3
- [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
4
3
  [![smithery badge](https://smithery.ai/badge/@chrisdoc/hevy-mcp)](https://smithery.ai/server/@chrisdoc/hevy-mcp)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
5
5
 
6
6
  A Model Context Protocol (MCP) server implementation that interfaces with the [Hevy fitness tracking app](https://www.hevyapp.com/) and its [API](https://api.hevyapp.com/docs/). This server enables AI assistants to access and manage workout data, routines, exercise templates, and more through the Hevy API (requires PRO subscription).
7
7
 
@@ -13,6 +13,8 @@ A Model Context Protocol (MCP) server implementation that interfaces with the [H
13
13
  - **Folder Organization**: Manage routine folders
14
14
  - **Webhook Subscriptions**: Create, view, and delete webhook subscriptions for workout events
15
15
 
16
+ > **Note:** HTTP transport and Docker images remain deprecated. Smithery deployment now uses the official TypeScript runtime flow (no Docker required), or you can run the server locally via stdio (e.g., `npx hevy-mcp`). Existing GHCR images remain available but are no longer updated.
17
+
16
18
  ## Prerequisites
17
19
 
18
20
  - Node.js (v20 or higher)
@@ -21,12 +23,12 @@ A Model Context Protocol (MCP) server implementation that interfaces with the [H
21
23
 
22
24
  ## Installation
23
25
 
24
- ### Installing via Smithery
26
+ ### Run via npx (recommended)
25
27
 
26
- To install hevy-mcp for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@chrisdoc/hevy-mcp):
28
+ You can launch the server directly without cloning:
27
29
 
28
30
  ```bash
29
- npx -y @smithery/cli install @chrisdoc/hevy-mcp --client claude
31
+ HEVY_API_KEY=your_hevy_api_key_here npx -y hevy-mcp
30
32
  ```
31
33
 
32
34
  ### Manual Installation
@@ -37,9 +39,6 @@ cd hevy-mcp
37
39
 
38
40
  # Install dependencies
39
41
  corepack use pnpm@10.22.0
40
- pnpm install
41
-
42
- # Create .env file from sample
43
42
  cp .env.sample .env
44
43
  # Edit .env and add your Hevy API key
45
44
  ```
@@ -82,70 +81,30 @@ Replace `your_hevy_api_key_here` with your actual Hevy API key. If you prefer th
82
81
  pnpm start -- --hevy-api-key=your_hevy_api_key_here
83
82
  ```
84
83
 
85
- Or in HTTP mode:
86
-
87
- ```bash
88
- pnpm start -- --http --hevy-api-key=your_hevy_api_key_here
89
- ```
90
-
91
- ## Transport Modes
92
-
93
- The MCP server supports two transport modes:
84
+ ## Transport
94
85
 
95
- ### Stdio Transport (Default)
86
+ ### Deploy via Smithery (TypeScript runtime)
96
87
 
97
- The default mode uses stdio transport, which is suitable for integration with MCP clients like Claude Desktop and Cursor:
88
+ Smithery can bundle and host `hevy-mcp` without Docker by importing the exported `createServer` and `configSchema` from `src/index.ts`.
98
89
 
99
- ```bash
100
- pnpm start
101
- # or
102
- node dist/index.js
103
- ```
90
+ 1. Ensure dependencies are installed: `pnpm install`
91
+ 2. Launch the Smithery playground locally:
104
92
 
105
- ### HTTP Transport
93
+ ```bash
94
+ pnpm run smithery:dev
95
+ ```
106
96
 
107
- The server can also run in HTTP mode for remote access or web-based integrations:
108
- ```bash
109
- # Start in HTTP mode (env var)
110
- pnpm start -- --http
111
- # Start in HTTP mode (CLI arg)
112
- pnpm start -- --http --hevy-api-key=your_hevy_api_key_here
113
- # Or using node directly
114
- node dist/index.js --http --hevy-api-key=your_hevy_api_key_here
115
-
116
- # Using environment variable
117
- MCP_TRANSPORT=http pnpm start
118
- ```
97
+ The CLI will prompt for `HEVY_API_KEY`, invoke `createServer({ config })`, and open the Smithery MCP playground.
119
98
 
120
- #### HTTP Configuration
99
+ 3. Build the deployable bundle:
121
100
 
122
- The HTTP transport can be configured using environment variables:
101
+ ```bash
102
+ pnpm run smithery:build
103
+ ```
123
104
 
124
- ```env
125
- # Transport mode
126
- MCP_TRANSPORT=http
127
-
128
- # HTTP server configuration
129
- MCP_HTTP_HOST=127.0.0.1
130
- PORT=3000
131
-
132
- # DNS rebinding protection (recommended for production)
133
- MCP_DNS_REBINDING_PROTECTION=true
134
- MCP_ALLOWED_HOSTS=127.0.0.1,localhost
135
- ```
105
+ 4. Connect the repository to Smithery and trigger a deployment from their dashboard. Configuration is handled entirely through the exported Zod schema, so no additional `smithery.yaml` env mapping is required.
136
106
 
137
- #### HTTP Endpoints
138
-
139
- When running in HTTP mode, the following endpoints are available:
140
-
141
- - `POST /mcp` - MCP client-to-server communication
142
- - `GET /mcp` - Server-to-client notifications (SSE)
143
- - `DELETE /mcp` - Session termination
144
- - `GET /health` - Health check endpoint
145
-
146
- #### Session Management
147
-
148
- The HTTP transport includes session management for stateful connections. Each client session is identified by a unique session ID that must be included in the `mcp-session-id` header for subsequent requests.
107
+ hevy-mcp now runs exclusively over stdio, which works seamlessly with MCP-aware clients like Claude Desktop and Cursor. HTTP transport has been removed to simplify deployment.
149
108
 
150
109
  ## Usage
151
110
 
@@ -164,72 +123,9 @@ pnpm run build
164
123
  pnpm start
165
124
  ```
166
125
 
167
- ### Docker
168
-
169
- The project includes a Dockerfile for containerized deployments. Docker images are automatically built and pushed to GitHub Container Registry (GHCR) during the CI/CD process.
170
-
171
- #### Using Pre-built Images
172
-
173
- Pull and run the latest image:
174
-
175
- ```bash
176
- docker run -d \
177
- --name hevy-mcp \
178
- -e HEVY_API_KEY=your_api_key_here \
179
- -p 3000:3000 \
180
- ghcr.io/chrisdoc/hevy-mcp:latest
181
-
182
- # Or using CLI argument for the key (omit env var)
183
- docker run -d \
184
- --name hevy-mcp \
185
- -p 3000:3000 \
186
- ghcr.io/chrisdoc/hevy-mcp:latest \
187
- hevy-api-key=your_api_key_here
188
- ```
189
-
190
- #### Building Locally
191
-
192
- ```bash
193
- # Build the image
194
- docker build -t hevy-mcp .
195
-
196
- # Run the container
197
- docker run -d \
198
- --name hevy-mcp \
199
- -e HEVY_API_KEY=your_api_key_here \
200
- -p 3000:3000 \
201
- hevy-mcp
202
-
203
- # Or with CLI argument
204
- docker run -d \
205
- --name hevy-mcp \
206
- -p 3000:3000 \
207
- hevy-mcp \
208
- hevy-api-key=your_api_key_here
209
- ```
210
-
211
- #### Docker Compose Example
212
-
213
- ```yaml
214
- version: '3.8'
215
- services:
216
- hevy-mcp:
217
- image: ghcr.io/chrisdoc/hevy-mcp:latest
218
- environment:
219
- - HEVY_API_KEY=your_api_key_here
220
- - MCP_TRANSPORT=http
221
- - MCP_HTTP_HOST=0.0.0.0
222
- - PORT=3000
223
- ports:
224
- - "3000:3000"
225
- restart: unless-stopped
226
- ```
227
-
228
- #### Available Image Tags
126
+ ### Docker (deprecated)
229
127
 
230
- - `latest` - Latest stable release
231
- - `main` - Latest development build from main branch
232
- - `v1.8.8`, `v1.8`, `v1` - Semantic version tags for releases
128
+ Docker-based workflows have been retired so we can focus on the stdio-native experience. The bundled `Dockerfile` now exits with a clear message to prevent accidental builds, and `.dockerignore` simply documents the deprecation. Previously published images remain available on GHCR (for example `ghcr.io/chrisdoc/hevy-mcp:latest`), but they are **no longer updated**. For the best experience, run the server locally via `npx hevy-mcp` or your own Node.js runtime.
233
129
 
234
130
  ## Available MCP Tools
235
131
 
@@ -380,4 +276,4 @@ Contributions are welcome! Please feel free to submit a Pull Request. For major
380
276
  ## Acknowledgements
381
277
 
382
278
  - [Model Context Protocol](https://github.com/modelcontextprotocol) for the MCP SDK
383
- - [Hevy](https://www.hevyapp.com/) for their fitness tracking platform and API
279
+ - [Hevy](https://www.hevyapp.com/) for their fitness tracking platform and API
package/dist/index.d.ts CHANGED
@@ -1 +1,45 @@
1
- #!/usr/bin/env node
1
+ import * as _modelcontextprotocol_sdk_server from '@modelcontextprotocol/sdk/server';
2
+ import { z } from 'zod';
3
+
4
+ declare const serverConfigSchema: z.ZodObject<{
5
+ apiKey: z.ZodString;
6
+ }, "strip", z.ZodTypeAny, {
7
+ apiKey: string;
8
+ }, {
9
+ apiKey: string;
10
+ }>;
11
+ declare const configSchema: z.ZodObject<{
12
+ apiKey: z.ZodString;
13
+ }, "strip", z.ZodTypeAny, {
14
+ apiKey: string;
15
+ }, {
16
+ apiKey: string;
17
+ }>;
18
+ type ServerConfig = z.infer<typeof serverConfigSchema>;
19
+ declare function createServer({ config }: {
20
+ config: ServerConfig;
21
+ }): _modelcontextprotocol_sdk_server.Server<{
22
+ method: string;
23
+ params?: {
24
+ [x: string]: unknown;
25
+ _meta?: {
26
+ [x: string]: unknown;
27
+ progressToken?: string | number | undefined;
28
+ } | undefined;
29
+ } | undefined;
30
+ }, {
31
+ method: string;
32
+ params?: {
33
+ [x: string]: unknown;
34
+ _meta?: {
35
+ [x: string]: unknown;
36
+ } | undefined;
37
+ } | undefined;
38
+ }, {
39
+ [x: string]: unknown;
40
+ _meta?: {
41
+ [x: string]: unknown;
42
+ } | undefined;
43
+ }>;
44
+
45
+ export { configSchema, createServer as default };