@indaco/garmin-personal-mcp 0.2.0 → 0.3.1

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
@@ -43,6 +43,7 @@ With this server, you can ask your assistant:
43
43
 
44
44
  - Activities: "List my last 5 activities, with pace and heart rate."
45
45
  - Activities: "How much time did I spend in each HR zone on my runs this month?"
46
+ - Activities: "How did my sessions named Tempo 5k and Long run change over the last 2 months?"
46
47
  - Laps: "Show the laps of my last run."
47
48
  - Strength: "Compare my sets of this week with the week before."
48
49
  - Strength: "Which muscles did I train most this week?"
@@ -69,8 +70,11 @@ With this server, you can ask your assistant:
69
70
  [training-dashboard-update](#training-dashboard-update) adds only the new data, and your layout
70
71
  stays.
71
72
  - **Dashboard for you or for your coach**: [dashboard-setup](#dashboard-setup) makes a page with
72
- only the sports and the data that you select. [dashboard-widget](#dashboard-widget) and
73
- [dashboard-language](#dashboard-language) add a widget or a language.
73
+ only the sports and the data that you select. [dashboard-language](#dashboard-language) adds a
74
+ language.
75
+ - **Your own widgets**: [dashboard-widget](#dashboard-widget) makes a widget from your idea. Your
76
+ widgets stay on your computer in your widget library, and each page that you make gets them, in
77
+ the languages of the page.
74
78
 
75
79
  ## Quick start
76
80
 
@@ -148,26 +152,27 @@ Ask "list my last 5 activities". The first time that a garmin-personal tool asks
148
152
 
149
153
  ## Tools
150
154
 
151
- | Tool | What it gives |
152
- | --------------------- | ---------------------------------------------------------------------- |
153
- | `listActivities` | a summary of each activity, with pace, HR, training load and effect |
154
- | `getActivity` | the details of one activity |
155
- | `getActivityLaps` | the laps of an activity, from its .FIT file |
156
- | `getActivitySets` | the strength sets of an activity, with the muscles, from its .FIT file |
157
- | `getActivityWorkouts` | the planned workout of an activity: steps, targets and notes |
158
- | `downloadActivityFit` | saves the .FIT file of an activity in the data folder |
159
- | `getHrvRange` | HRV during the night |
160
- | `getDailyHeartRate` | the heart rate of a day, with the resting HR |
161
- | `getSleep` | the sleep of a night, or of up to 14 nights |
162
- | `getWeight` | weight and body composition for a range of dates |
163
- | `getBodyBattery` | how Body Battery charged and drained, for up to 14 days |
164
- | `getHeartRateZones` | your HR zones |
165
- | `getFitnessAge` | fitness age against actual age |
166
- | `getDailySummary` | steps, stress and Body Battery, for a day or a range |
167
- | `getDashboardData` | all the data of the dashboard in one call, with a local cache |
168
- | `writeDashboard` | writes the dashboard page |
169
- | `editDashboard` | changes the layout, the custom widgets and the languages of the page |
170
- | `garminGet` | all other GET endpoints of the Personal API |
155
+ | Tool | What it gives |
156
+ | -------------------------- | ------------------------------------------------------------------------------ |
157
+ | `listActivities` | each activity with pace, HR, load and effect, by date, type or name |
158
+ | `getActivity` | the details of one activity |
159
+ | `getActivityLaps` | the laps of an activity, from its .FIT file |
160
+ | `getActivitySets` | the strength sets of an activity, with the muscles, from its .FIT file |
161
+ | `getActivityWorkouts` | the planned workout of an activity: steps, targets and notes |
162
+ | `downloadActivityFit` | saves the .FIT file of an activity in the data folder |
163
+ | `getHrvRange` | HRV during the night |
164
+ | `getDailyHeartRate` | the heart rate of a day, with the resting HR |
165
+ | `getSleep` | the sleep of a night, or of up to 14 nights |
166
+ | `getWeight` | weight and body composition for a range of dates |
167
+ | `getBodyBattery` | how Body Battery charged and drained, for up to 14 days |
168
+ | `getHeartRateZones` | your HR zones |
169
+ | `getFitnessAge` | fitness age against actual age |
170
+ | `getDailySummary` | steps, stress and Body Battery, for a day or a range |
171
+ | `getDashboardData` | all the data of the dashboard in one call, with a local cache |
172
+ | `writeDashboard` | writes the dashboard page |
173
+ | `editDashboard` | changes the layout, the custom widgets and the languages of the page |
174
+ | `scheduleDashboardRefresh` | updates a dashboard page automatically, at the times you say in your own words |
175
+ | `garminGet` | all other GET endpoints of the Personal API |
171
176
 
172
177
  [Tools](guide/tools.md) gives the endpoints, the details of each tool and the data that the
173
178
  Personal API does not have.
@@ -205,14 +210,22 @@ The page is one HTML file, `garmin-dashboard.html` in the data folder. It works
205
210
  In Claude Code, the arguments are in order and separated by spaces: first `weeks`, then `layout`.
206
211
  You can also give only the layout: `/garmin-personal:training-dashboard freeform`.
207
212
 
213
+ With `preset` and `blank`, the assistant first asks for the title and the headline (the line under
214
+ the title) of the page. Keep them or type your own. Updates and the automatic update keep them.
215
+
208
216
  The assistant gives you the path of the page and the command to open it. The page has a board for
209
217
  all your training, a Recovery board and a board for each sport, with 11 themes, in English and the
210
- language of your Garmin profile. The assistant asks if you want one more language. The page uses
218
+ language of your Garmin profile. If the dashboard does not have the language of your profile (for
219
+ example Russian), the page shows English, and the assistant tells you and offers to add the
220
+ language. The assistant asks if you want one more language. The page uses
211
221
  the training load, HR zones and training effect from Garmin. It labels each value that it
212
222
  calculates as an estimate, and a missing value shows as "n/a". Distances, paces,
213
223
  elevation and weights use the units of your Garmin profile: metric, or miles and pounds for
214
224
  Statute US and Statute UK (Statute UK keeps elevation in metres).
215
225
 
226
+ To follow a training plan, choose its activity names above the boards: the page then shows only
227
+ those activities, in the weeks of the window.
228
+
216
229
  [The dashboard guide](guide/dashboard.md) tells what each board shows and how to change the layout.
217
230
  [The widget catalogue](guide/widgets.md) lists every widget.
218
231
 
@@ -232,6 +245,12 @@ value that ends in `.html` is the file, also in the first place.
232
245
  The first call sends approximately 35 requests to Garmin. Later calls use the local cache and send
233
246
  approximately 8.
234
247
 
248
+ To update the page automatically, tell your assistant when, in your own words and in any language,
249
+ for example "update my dashboard every Monday at 7". When it makes a page, the assistant also asks:
250
+ no (the default), every day, weekdays or every Monday at 07:00, or your own words. The automatic
251
+ update replaces the data and removes the coach notes. See
252
+ [Update the dashboard on a schedule](guide/dashboard.md#update-the-dashboard-on-a-schedule).
253
+
235
254
  ### dashboard-setup
236
255
 
237
256
  The assistant asks you some questions, then writes a page with your answers. First, it asks who the
@@ -252,8 +271,9 @@ files side by side. Each page keeps its settings on each update. The argument `w
252
271
  ### dashboard-widget
253
272
 
254
273
  This prompt makes a new widget from your idea, for example "my longest ride of each month". The
255
- assistant writes a small widget, and `editDashboard` stores it in the page. The widget stays after
256
- each update. The argument `idea` is required. The argument `path` is optional: it is the file of the
274
+ assistant writes a small widget, and `editDashboard` stores it in the page and in your widget
275
+ library (`widgets.json` in the data folder). The widget stays after each update, and each new page
276
+ gets it too. The argument `idea` is required. The argument `path` is optional: it is the file of the
257
277
  page, for example `coach.html`. In Claude Code:
258
278
  `/garmin-personal:dashboard-widget my longest ride each month coach.html`. Reload the page to see
259
279
  the widget.
@@ -323,11 +343,12 @@ does not endorse this project, and the project has no affiliation with Garmin.
323
343
 
324
344
  ## Problems and solutions
325
345
 
326
- | Problem | Solution |
327
- | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
328
- | The server does not start | Make sure that Node.js is version 22 or later: `node --version`. |
329
- | Claude Desktop does not find `npx` | GUI apps do not read your shell profile. Use the absolute path of `npx` (`which npx`) as the `command`. |
330
- | Changes have no effect | The client keeps the old server process. Restart the client: a new Claude Code session, or quit and start Claude Desktop again. |
346
+ | Problem | Solution |
347
+ | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
348
+ | The server does not start | Make sure that Node.js is version 22 or later: `node --version`. |
349
+ | Claude Desktop does not find `npx` | GUI apps do not read your shell profile. Use the absolute path of `npx` (`which npx`) as the `command`. |
350
+ | Changes have no effect | The client keeps the old server process. Restart the client: a new Claude Code session, or quit and start Claude Desktop again. |
351
+ | Which version runs | `npx -y @indaco/garmin-personal-mcp@latest --version` (or `-v`) prints the version and stops. `--help` (or `-h`) lists the commands. |
331
352
 
332
353
  [Problems and solutions](guide/troubleshooting.md) has more problems, the log files, and commands
333
354
  that test the key and the server.