apple-notes-mcp 2.8.6 → 2.8.8

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "apple-notes-mcp",
3
- "version": "2.8.6",
3
+ "version": "2.8.8",
4
4
  "description": "MCP server for Apple Notes - create, search, update, and manage notes via Claude and other AI assistants",
5
5
  "type": "module",
6
6
  "main": "build/index.js",
@@ -11,6 +11,7 @@
11
11
  "files": [
12
12
  "build",
13
13
  "docs",
14
+ "shortcuts",
14
15
  "README.md",
15
16
  "LICENSE"
16
17
  ],
@@ -0,0 +1,563 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>WFWorkflowName</key>
6
+ <string>Apple Notes MCP - Native Tags</string>
7
+ <key>WFWorkflowActions</key>
8
+ <array>
9
+ <dict>
10
+ <key>WFWorkflowActionIdentifier</key>
11
+ <string>is.workflow.actions.comment</string>
12
+ <key>WFWorkflowActionParameters</key>
13
+ <dict>
14
+ <key>UUID</key>
15
+ <string>0098B800-B098-5A38-8E5B-4D2491ACD95D</string>
16
+ <key>WFCommentActionText</key>
17
+ <string>Adds native tags to one note selected by title and existing project scope text. Refuses zero/multiple results. Input: JSON {title, scopeText, tags}. No scripts, network, deletion or body replacement. The MCP checks exact ID/revision before and verifies native tags/text/links afterward.</string>
18
+ </dict>
19
+ </dict>
20
+ <dict>
21
+ <key>WFWorkflowActionIdentifier</key>
22
+ <string>is.workflow.actions.detect.dictionary</string>
23
+ <key>WFWorkflowActionParameters</key>
24
+ <dict>
25
+ <key>UUID</key>
26
+ <string>FC6F66A2-7C9E-5A6C-A530-61B12F8030DC</string>
27
+ <key>WFInput</key>
28
+ <dict>
29
+ <key>Value</key>
30
+ <dict>
31
+ <key>Type</key>
32
+ <string>ExtensionInput</string>
33
+ </dict>
34
+ <key>WFSerializationType</key>
35
+ <string>WFTextTokenAttachment</string>
36
+ </dict>
37
+ </dict>
38
+ </dict>
39
+ <dict>
40
+ <key>WFWorkflowActionIdentifier</key>
41
+ <string>is.workflow.actions.getvalueforkey</string>
42
+ <key>WFWorkflowActionParameters</key>
43
+ <dict>
44
+ <key>UUID</key>
45
+ <string>56F624A3-B9C4-59B9-9BD5-B0A3D539EB60</string>
46
+ <key>WFInput</key>
47
+ <dict>
48
+ <key>Value</key>
49
+ <dict>
50
+ <key>Type</key>
51
+ <string>ActionOutput</string>
52
+ <key>OutputUUID</key>
53
+ <string>FC6F66A2-7C9E-5A6C-A530-61B12F8030DC</string>
54
+ <key>OutputName</key>
55
+ <string>request</string>
56
+ </dict>
57
+ <key>WFSerializationType</key>
58
+ <string>WFTextTokenAttachment</string>
59
+ </dict>
60
+ <key>WFDictionaryKey</key>
61
+ <string>title</string>
62
+ <key>WFGetDictionaryValueType</key>
63
+ <string>Value</string>
64
+ </dict>
65
+ </dict>
66
+ <dict>
67
+ <key>WFWorkflowActionIdentifier</key>
68
+ <string>is.workflow.actions.getvalueforkey</string>
69
+ <key>WFWorkflowActionParameters</key>
70
+ <dict>
71
+ <key>UUID</key>
72
+ <string>ECA164BD-137A-567C-87AF-C5F3F32F84BF</string>
73
+ <key>WFInput</key>
74
+ <dict>
75
+ <key>Value</key>
76
+ <dict>
77
+ <key>Type</key>
78
+ <string>ActionOutput</string>
79
+ <key>OutputUUID</key>
80
+ <string>FC6F66A2-7C9E-5A6C-A530-61B12F8030DC</string>
81
+ <key>OutputName</key>
82
+ <string>request</string>
83
+ </dict>
84
+ <key>WFSerializationType</key>
85
+ <string>WFTextTokenAttachment</string>
86
+ </dict>
87
+ <key>WFDictionaryKey</key>
88
+ <string>scopeText</string>
89
+ <key>WFGetDictionaryValueType</key>
90
+ <string>Value</string>
91
+ </dict>
92
+ </dict>
93
+ <dict>
94
+ <key>WFWorkflowActionIdentifier</key>
95
+ <string>is.workflow.actions.getvalueforkey</string>
96
+ <key>WFWorkflowActionParameters</key>
97
+ <dict>
98
+ <key>UUID</key>
99
+ <string>40662BA1-53A6-58B0-A54E-A9174F25AB48</string>
100
+ <key>WFInput</key>
101
+ <dict>
102
+ <key>Value</key>
103
+ <dict>
104
+ <key>Type</key>
105
+ <string>ActionOutput</string>
106
+ <key>OutputUUID</key>
107
+ <string>FC6F66A2-7C9E-5A6C-A530-61B12F8030DC</string>
108
+ <key>OutputName</key>
109
+ <string>request</string>
110
+ </dict>
111
+ <key>WFSerializationType</key>
112
+ <string>WFTextTokenAttachment</string>
113
+ </dict>
114
+ <key>WFDictionaryKey</key>
115
+ <string>tags</string>
116
+ <key>WFGetDictionaryValueType</key>
117
+ <string>Value</string>
118
+ </dict>
119
+ </dict>
120
+ <dict>
121
+ <key>WFWorkflowActionIdentifier</key>
122
+ <string>is.workflow.actions.filter.notes</string>
123
+ <key>WFWorkflowActionParameters</key>
124
+ <dict>
125
+ <key>UUID</key>
126
+ <string>DFF87C25-7AF8-55BC-BA5F-4F08CC05A668</string>
127
+ <key>WFContentItemLimitEnabled</key>
128
+ <false/>
129
+ <key>WFContentItemFilter</key>
130
+ <dict>
131
+ <key>WFSerializationType</key>
132
+ <string>WFContentPredicateTableTemplate</string>
133
+ <key>Value</key>
134
+ <dict>
135
+ <key>WFActionParameterFilterPrefix</key>
136
+ <integer>1</integer>
137
+ <key>WFContentPredicateBoundedDate</key>
138
+ <false/>
139
+ <key>WFActionParameterFilterTemplates</key>
140
+ <array>
141
+ <dict>
142
+ <key>Property</key>
143
+ <string>Name</string>
144
+ <key>Operator</key>
145
+ <integer>99</integer>
146
+ <key>Removable</key>
147
+ <true/>
148
+ <key>Values</key>
149
+ <dict>
150
+ <key>String</key>
151
+ <dict>
152
+ <key>WFSerializationType</key>
153
+ <string>WFTextTokenString</string>
154
+ <key>Value</key>
155
+ <dict>
156
+ <key>string</key>
157
+ <string></string>
158
+ <key>attachmentsByRange</key>
159
+ <dict>
160
+ <key>{0, 1}</key>
161
+ <dict>
162
+ <key>Type</key>
163
+ <string>ActionOutput</string>
164
+ <key>OutputUUID</key>
165
+ <string>56F624A3-B9C4-59B9-9BD5-B0A3D539EB60</string>
166
+ <key>OutputName</key>
167
+ <string>title</string>
168
+ </dict>
169
+ </dict>
170
+ </dict>
171
+ </dict>
172
+ </dict>
173
+ </dict>
174
+ <dict>
175
+ <key>Property</key>
176
+ <string>Body</string>
177
+ <key>Operator</key>
178
+ <integer>99</integer>
179
+ <key>Removable</key>
180
+ <true/>
181
+ <key>Values</key>
182
+ <dict>
183
+ <key>String</key>
184
+ <dict>
185
+ <key>WFSerializationType</key>
186
+ <string>WFTextTokenString</string>
187
+ <key>Value</key>
188
+ <dict>
189
+ <key>string</key>
190
+ <string></string>
191
+ <key>attachmentsByRange</key>
192
+ <dict>
193
+ <key>{0, 1}</key>
194
+ <dict>
195
+ <key>Type</key>
196
+ <string>ActionOutput</string>
197
+ <key>OutputUUID</key>
198
+ <string>ECA164BD-137A-567C-87AF-C5F3F32F84BF</string>
199
+ <key>OutputName</key>
200
+ <string>scopeText</string>
201
+ </dict>
202
+ </dict>
203
+ </dict>
204
+ </dict>
205
+ </dict>
206
+ </dict>
207
+ </array>
208
+ </dict>
209
+ </dict>
210
+ </dict>
211
+ </dict>
212
+ <dict>
213
+ <key>WFWorkflowActionIdentifier</key>
214
+ <string>is.workflow.actions.count</string>
215
+ <key>WFWorkflowActionParameters</key>
216
+ <dict>
217
+ <key>UUID</key>
218
+ <string>48769A7C-915C-5339-9CD4-09D8E576EA11</string>
219
+ <key>Input</key>
220
+ <dict>
221
+ <key>Value</key>
222
+ <dict>
223
+ <key>Type</key>
224
+ <string>ActionOutput</string>
225
+ <key>OutputUUID</key>
226
+ <string>DFF87C25-7AF8-55BC-BA5F-4F08CC05A668</string>
227
+ <key>OutputName</key>
228
+ <string>target</string>
229
+ </dict>
230
+ <key>WFSerializationType</key>
231
+ <string>WFTextTokenAttachment</string>
232
+ </dict>
233
+ <key>WFCountType</key>
234
+ <string>Items</string>
235
+ </dict>
236
+ </dict>
237
+ <dict>
238
+ <key>WFWorkflowActionIdentifier</key>
239
+ <string>is.workflow.actions.gettext</string>
240
+ <key>WFWorkflowActionParameters</key>
241
+ <dict>
242
+ <key>UUID</key>
243
+ <string>506724BB-49FB-5E33-A2DB-C392798691A7</string>
244
+ <key>WFTextActionText</key>
245
+ <dict>
246
+ <key>WFSerializationType</key>
247
+ <string>WFTextTokenString</string>
248
+ <key>Value</key>
249
+ <dict>
250
+ <key>string</key>
251
+ <string></string>
252
+ <key>attachmentsByRange</key>
253
+ <dict>
254
+ <key>{0, 1}</key>
255
+ <dict>
256
+ <key>Type</key>
257
+ <string>ActionOutput</string>
258
+ <key>OutputUUID</key>
259
+ <string>48769A7C-915C-5339-9CD4-09D8E576EA11</string>
260
+ <key>OutputName</key>
261
+ <string>count</string>
262
+ </dict>
263
+ </dict>
264
+ </dict>
265
+ </dict>
266
+ </dict>
267
+ </dict>
268
+ <dict>
269
+ <key>WFWorkflowActionIdentifier</key>
270
+ <string>is.workflow.actions.conditional</string>
271
+ <key>WFWorkflowActionParameters</key>
272
+ <dict>
273
+ <key>UUID</key>
274
+ <string>2DAAA123-EDA6-573F-B64C-0BE13A7920F1</string>
275
+ <key>GroupingIdentifier</key>
276
+ <string>9DEBBB46-882B-5977-87B4-3E4E05678705</string>
277
+ <key>WFControlFlowMode</key>
278
+ <integer>0</integer>
279
+ <key>WFInput</key>
280
+ <dict>
281
+ <key>Type</key>
282
+ <string>Variable</string>
283
+ <key>Variable</key>
284
+ <dict>
285
+ <key>Value</key>
286
+ <dict>
287
+ <key>Type</key>
288
+ <string>ActionOutput</string>
289
+ <key>OutputUUID</key>
290
+ <string>506724BB-49FB-5E33-A2DB-C392798691A7</string>
291
+ <key>OutputName</key>
292
+ <string>count-text</string>
293
+ </dict>
294
+ <key>WFSerializationType</key>
295
+ <string>WFTextTokenAttachment</string>
296
+ </dict>
297
+ </dict>
298
+ <key>WFCondition</key>
299
+ <integer>4</integer>
300
+ <key>WFConditionalActionString</key>
301
+ <string>1</string>
302
+ </dict>
303
+ </dict>
304
+ <dict>
305
+ <key>WFWorkflowActionIdentifier</key>
306
+ <string>is.workflow.actions.repeat.each</string>
307
+ <key>WFWorkflowActionParameters</key>
308
+ <dict>
309
+ <key>UUID</key>
310
+ <string>603F0BDF-C041-5AA4-BE51-B62DD785A079</string>
311
+ <key>GroupingIdentifier</key>
312
+ <string>3D602350-7BF4-5B87-A104-B5DB7C320E26</string>
313
+ <key>WFControlFlowMode</key>
314
+ <integer>0</integer>
315
+ <key>WFInput</key>
316
+ <dict>
317
+ <key>Value</key>
318
+ <dict>
319
+ <key>Type</key>
320
+ <string>ActionOutput</string>
321
+ <key>OutputUUID</key>
322
+ <string>40662BA1-53A6-58B0-A54E-A9174F25AB48</string>
323
+ <key>OutputName</key>
324
+ <string>tags</string>
325
+ </dict>
326
+ <key>WFSerializationType</key>
327
+ <string>WFTextTokenAttachment</string>
328
+ </dict>
329
+ </dict>
330
+ </dict>
331
+ <dict>
332
+ <key>WFWorkflowActionIdentifier</key>
333
+ <string>com.apple.Notes.CreateTagLinkAction</string>
334
+ <key>WFWorkflowActionParameters</key>
335
+ <dict>
336
+ <key>UUID</key>
337
+ <string>5AE3DC80-27B3-56AC-9668-94AC6AF3F57F</string>
338
+ <key>AppIntentDescriptor</key>
339
+ <dict>
340
+ <key>AppIntentIdentifier</key>
341
+ <string>CreateTagLinkAction</string>
342
+ <key>BundleIdentifier</key>
343
+ <string>com.apple.Notes</string>
344
+ <key>TeamIdentifier</key>
345
+ <string>0000000000</string>
346
+ <key>Name</key>
347
+ <string>Notes</string>
348
+ </dict>
349
+ <key>ShowWhenRun</key>
350
+ <false/>
351
+ <key>name</key>
352
+ <dict>
353
+ <key>WFSerializationType</key>
354
+ <string>WFTextTokenString</string>
355
+ <key>Value</key>
356
+ <dict>
357
+ <key>string</key>
358
+ <string></string>
359
+ <key>attachmentsByRange</key>
360
+ <dict>
361
+ <key>{0, 1}</key>
362
+ <dict>
363
+ <key>Type</key>
364
+ <string>Variable</string>
365
+ <key>VariableName</key>
366
+ <string>Repeat Item</string>
367
+ </dict>
368
+ </dict>
369
+ </dict>
370
+ </dict>
371
+ </dict>
372
+ </dict>
373
+ <dict>
374
+ <key>WFWorkflowActionIdentifier</key>
375
+ <string>com.apple.Notes.AddTagsToNotesLinkAction</string>
376
+ <key>WFWorkflowActionParameters</key>
377
+ <dict>
378
+ <key>UUID</key>
379
+ <string>8C0C4D73-5555-5FC6-BD29-D5B9EE299698</string>
380
+ <key>AppIntentDescriptor</key>
381
+ <dict>
382
+ <key>AppIntentIdentifier</key>
383
+ <string>AddTagsToNotesLinkAction</string>
384
+ <key>BundleIdentifier</key>
385
+ <string>com.apple.Notes</string>
386
+ <key>TeamIdentifier</key>
387
+ <string>0000000000</string>
388
+ <key>Name</key>
389
+ <string>Notes</string>
390
+ </dict>
391
+ <key>ShowWhenRun</key>
392
+ <false/>
393
+ <key>notes</key>
394
+ <dict>
395
+ <key>Value</key>
396
+ <dict>
397
+ <key>Type</key>
398
+ <string>ActionOutput</string>
399
+ <key>OutputUUID</key>
400
+ <string>DFF87C25-7AF8-55BC-BA5F-4F08CC05A668</string>
401
+ <key>OutputName</key>
402
+ <string>target</string>
403
+ </dict>
404
+ <key>WFSerializationType</key>
405
+ <string>WFTextTokenAttachment</string>
406
+ </dict>
407
+ <key>tags</key>
408
+ <dict>
409
+ <key>Value</key>
410
+ <dict>
411
+ <key>Type</key>
412
+ <string>ActionOutput</string>
413
+ <key>OutputUUID</key>
414
+ <string>5AE3DC80-27B3-56AC-9668-94AC6AF3F57F</string>
415
+ <key>OutputName</key>
416
+ <string>native-tag</string>
417
+ </dict>
418
+ <key>WFSerializationType</key>
419
+ <string>WFTextTokenAttachment</string>
420
+ </dict>
421
+ </dict>
422
+ </dict>
423
+ <dict>
424
+ <key>WFWorkflowActionIdentifier</key>
425
+ <string>is.workflow.actions.repeat.each</string>
426
+ <key>WFWorkflowActionParameters</key>
427
+ <dict>
428
+ <key>UUID</key>
429
+ <string>B9B919AF-4E05-5B76-B70B-E8EE6B502A92</string>
430
+ <key>GroupingIdentifier</key>
431
+ <string>3D602350-7BF4-5B87-A104-B5DB7C320E26</string>
432
+ <key>WFControlFlowMode</key>
433
+ <integer>2</integer>
434
+ </dict>
435
+ </dict>
436
+ <dict>
437
+ <key>WFWorkflowActionIdentifier</key>
438
+ <string>is.workflow.actions.gettext</string>
439
+ <key>WFWorkflowActionParameters</key>
440
+ <dict>
441
+ <key>UUID</key>
442
+ <string>95DA2053-00CE-52E9-95AC-CA17A0DC7031</string>
443
+ <key>WFTextActionText</key>
444
+ <string>APPLE_NOTES_TAGS_OK</string>
445
+ </dict>
446
+ </dict>
447
+ <dict>
448
+ <key>WFWorkflowActionIdentifier</key>
449
+ <string>is.workflow.actions.output</string>
450
+ <key>WFWorkflowActionParameters</key>
451
+ <dict>
452
+ <key>UUID</key>
453
+ <string>62F50E9C-D6C6-557C-A037-0E9B4D9661BC</string>
454
+ <key>WFOutput</key>
455
+ <dict>
456
+ <key>Value</key>
457
+ <dict>
458
+ <key>Type</key>
459
+ <string>ActionOutput</string>
460
+ <key>OutputUUID</key>
461
+ <string>95DA2053-00CE-52E9-95AC-CA17A0DC7031</string>
462
+ <key>OutputName</key>
463
+ <string>success</string>
464
+ </dict>
465
+ <key>WFSerializationType</key>
466
+ <string>WFTextTokenAttachment</string>
467
+ </dict>
468
+ </dict>
469
+ </dict>
470
+ <dict>
471
+ <key>WFWorkflowActionIdentifier</key>
472
+ <string>is.workflow.actions.conditional</string>
473
+ <key>WFWorkflowActionParameters</key>
474
+ <dict>
475
+ <key>UUID</key>
476
+ <string>F0968167-BF41-5F06-9942-A281BA37A28B</string>
477
+ <key>GroupingIdentifier</key>
478
+ <string>9DEBBB46-882B-5977-87B4-3E4E05678705</string>
479
+ <key>WFControlFlowMode</key>
480
+ <integer>1</integer>
481
+ </dict>
482
+ </dict>
483
+ <dict>
484
+ <key>WFWorkflowActionIdentifier</key>
485
+ <string>is.workflow.actions.gettext</string>
486
+ <key>WFWorkflowActionParameters</key>
487
+ <dict>
488
+ <key>UUID</key>
489
+ <string>38E0C0FA-E82D-55C4-BB5F-59BE5D2CDB96</string>
490
+ <key>WFTextActionText</key>
491
+ <string>APPLE_NOTES_TAGS_AMBIGUOUS_OR_MISSING</string>
492
+ </dict>
493
+ </dict>
494
+ <dict>
495
+ <key>WFWorkflowActionIdentifier</key>
496
+ <string>is.workflow.actions.output</string>
497
+ <key>WFWorkflowActionParameters</key>
498
+ <dict>
499
+ <key>UUID</key>
500
+ <string>370488B5-ABAD-5A7F-9FDF-05328430A849</string>
501
+ <key>WFOutput</key>
502
+ <dict>
503
+ <key>Value</key>
504
+ <dict>
505
+ <key>Type</key>
506
+ <string>ActionOutput</string>
507
+ <key>OutputUUID</key>
508
+ <string>38E0C0FA-E82D-55C4-BB5F-59BE5D2CDB96</string>
509
+ <key>OutputName</key>
510
+ <string>refusal</string>
511
+ </dict>
512
+ <key>WFSerializationType</key>
513
+ <string>WFTextTokenAttachment</string>
514
+ </dict>
515
+ </dict>
516
+ </dict>
517
+ <dict>
518
+ <key>WFWorkflowActionIdentifier</key>
519
+ <string>is.workflow.actions.conditional</string>
520
+ <key>WFWorkflowActionParameters</key>
521
+ <dict>
522
+ <key>UUID</key>
523
+ <string>882D0A92-5ACB-5731-B3A1-B132714EB158</string>
524
+ <key>GroupingIdentifier</key>
525
+ <string>9DEBBB46-882B-5977-87B4-3E4E05678705</string>
526
+ <key>WFControlFlowMode</key>
527
+ <integer>2</integer>
528
+ </dict>
529
+ </dict>
530
+ </array>
531
+ <key>WFWorkflowClientVersion</key>
532
+ <string>2600</string>
533
+ <key>WFWorkflowMinimumClientVersion</key>
534
+ <integer>900</integer>
535
+ <key>WFWorkflowMinimumClientVersionString</key>
536
+ <string>900</string>
537
+ <key>WFWorkflowTypes</key>
538
+ <array/>
539
+ <key>WFWorkflowHasShortcutInputVariables</key>
540
+ <true/>
541
+ <key>WFWorkflowHasOutputAction</key>
542
+ <true/>
543
+ <key>WFWorkflowInputContentItemClasses</key>
544
+ <array>
545
+ <string>WFStringContentItem</string>
546
+ <string>WFDictionaryContentItem</string>
547
+ <string>WFGenericFileContentItem</string>
548
+ </array>
549
+ <key>WFWorkflowOutputContentItemClasses</key>
550
+ <array>
551
+ <string>WFStringContentItem</string>
552
+ </array>
553
+ <key>WFWorkflowIcon</key>
554
+ <dict>
555
+ <key>WFWorkflowIconStartColor</key>
556
+ <integer>4251333119</integer>
557
+ <key>WFWorkflowIconGlyphNumber</key>
558
+ <integer>59507</integer>
559
+ </dict>
560
+ <key>WFWorkflowImportQuestions</key>
561
+ <array/>
562
+ </dict>
563
+ </plist>
@@ -0,0 +1,21 @@
1
+ # Native Tags bridge
2
+
3
+ `Apple Notes MCP - Native Tags.shortcut` adds actual native Apple Notes tags.
4
+ It contains no note contents or credentials. The unsigned source is committed
5
+ beside it and can be regenerated with:
6
+
7
+ ```sh
8
+ python3 scripts/build-native-tags-shortcut.py
9
+ shortcuts sign --mode anyone \
10
+ --input "shortcuts/Apple Notes MCP - Native Tags.unsigned.shortcut" \
11
+ --output "shortcuts/Apple Notes MCP - Native Tags.shortcut"
12
+ ```
13
+
14
+ Open the signed file and confirm **Add Shortcut** once. macOS may also request
15
+ Notes access on first execution. The `shortcuts` CLI can run an installed
16
+ workflow but cannot silently import one.
17
+
18
+ The bridge receives a private temporary JSON file with a title, a distinctive
19
+ existing scope phrase, and normalized tags. Both the server and workflow refuse
20
+ ambiguous note selection. Server readback, rather than CLI output, establishes
21
+ success and verifies that existing content survived.