@indaco/garmin-personal-mcp 0.2.0 → 0.3.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 +45 -25
- package/dist/dashboard.html +7 -7
- package/dist/index.js +827 -68
- package/package.json +1 -1
- package/prompts/dashboard-language.md +3 -0
- package/prompts/dashboard-setup.md +18 -0
- package/prompts/dashboard-widget.md +6 -1
- package/prompts/training-dashboard-freeform.md +11 -0
- package/prompts/training-dashboard-update.md +12 -0
- package/prompts/training-dashboard.md +32 -5
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-
|
|
73
|
-
|
|
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
|
|
152
|
-
|
|
|
153
|
-
| `listActivities`
|
|
154
|
-
| `getActivity`
|
|
155
|
-
| `getActivityLaps`
|
|
156
|
-
| `getActivitySets`
|
|
157
|
-
| `getActivityWorkouts`
|
|
158
|
-
| `downloadActivityFit`
|
|
159
|
-
| `getHrvRange`
|
|
160
|
-
| `getDailyHeartRate`
|
|
161
|
-
| `getSleep`
|
|
162
|
-
| `getWeight`
|
|
163
|
-
| `getBodyBattery`
|
|
164
|
-
| `getHeartRateZones`
|
|
165
|
-
| `getFitnessAge`
|
|
166
|
-
| `getDailySummary`
|
|
167
|
-
| `getDashboardData`
|
|
168
|
-
| `writeDashboard`
|
|
169
|
-
| `editDashboard`
|
|
170
|
-
| `
|
|
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.
|
|
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
|
|
256
|
-
|
|
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.
|