apple-notes-mcp 2.8.28 → 2.8.30
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 +57 -2
- package/build/index.js +758 -202
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -56,7 +56,7 @@ Install as a Claude Code plugin for automatic configuration and enhanced AI beha
|
|
|
56
56
|
|
|
57
57
|
This method also installs a **skill** that teaches Claude when and how to use Apple Notes effectively.
|
|
58
58
|
|
|
59
|
-
On the first tool call, macOS shows an Automation permission prompt ("Claude" wants access to control "Notes") — click **OK**. Optionally, grant **Full Disk Access** to the app that launches the server to enable the database-backed tools (`get-checklist-state`, `get-note-metadata`, `get-note-link`, checklist annotations in `get-note-markdown`, and full `get-sync-status` detail); see the [Full Disk Access Setup Guide](https://github.com/sweetrb/apple-notes-mcp/blob/main/docs/FULL-DISK-ACCESS.md). The rest of the server is pure AppleScript and works without it.
|
|
59
|
+
On the first tool call, macOS shows an Automation permission prompt ("Claude" wants access to control "Notes") — click **OK**. Optionally, grant **Full Disk Access** to the app that launches the server to enable the database-backed tools (`get-checklist-state`, `get-note-metadata`, `get-audio-transcripts`, `get-note-link`, checklist annotations in `get-note-markdown`, and full `get-sync-status` detail); see the [Full Disk Access Setup Guide](https://github.com/sweetrb/apple-notes-mcp/blob/main/docs/FULL-DISK-ACCESS.md). The rest of the server is pure AppleScript and works without it.
|
|
60
60
|
|
|
61
61
|
Native tag, checklist, table, pin, and rich append operations use two packaged
|
|
62
62
|
Apple Shortcuts. A third, `Apple Notes MCP - Create Markdown Note`, is optional:
|
|
@@ -169,6 +169,7 @@ On first use, macOS will ask for permission to automate Notes.app. Click "OK" to
|
|
|
169
169
|
| **Multi-Account** | Work with iCloud, Gmail, Exchange, or any configured account, including account IDs and default folders |
|
|
170
170
|
| **Batch Operations** | Delete or move multiple notes at once |
|
|
171
171
|
| **Checklist State** | Read checklist done/undone state directly from the Notes database (requires Full Disk Access) |
|
|
172
|
+
| **Audio Transcripts** | Read the transcripts and summaries Notes stored for audio recordings (requires Full Disk Access) |
|
|
172
173
|
| **Export** | Export all notes as JSON or get individual notes as Markdown |
|
|
173
174
|
| **Attachments** | List attachments, save them to disk, or fetch their bytes as base64 |
|
|
174
175
|
| **Notes.app UI State** | Reveal a note in Notes.app or read the current Notes.app selection |
|
|
@@ -513,6 +514,28 @@ Disk Access.
|
|
|
513
514
|
|
|
514
515
|
---
|
|
515
516
|
|
|
517
|
+
#### `get-note-tables`
|
|
518
|
+
|
|
519
|
+
Reads every native table in one exact note, in body order, from the NoteStore
|
|
520
|
+
database. Each table is returned as GitHub-flavored Markdown and as JSON `rows`
|
|
521
|
+
with stable `rowIds` and `columnIds`. Notes tables have no header row, so the
|
|
522
|
+
Markdown uses the first row as the header. Pipes are escaped as `\|`,
|
|
523
|
+
backslashes are doubled, and line breaks inside a cell become `<br>`.
|
|
524
|
+
|
|
525
|
+
| Parameter | Type | Required | Description |
|
|
526
|
+
|-----------|------|----------|-------------|
|
|
527
|
+
| `id` | string | Yes | Exact note ID (`x-coredata://…/ICNote/pNNN`) |
|
|
528
|
+
|
|
529
|
+
`tableCellsComplete` is false when any table or cell could not be decoded. A
|
|
530
|
+
cell holding an embedded object is `null` in `rows`, listed in
|
|
531
|
+
`incompleteCells`, and shown as `[undecoded cell]` in Markdown. A table whose
|
|
532
|
+
data cannot be decoded at all has `complete: false`, a `reason`, and no rows.
|
|
533
|
+
Cell text is never guessed. Links and styling inside cells are not rendered.
|
|
534
|
+
A note without tables returns an empty `tables` list. This tool is read-only,
|
|
535
|
+
requires Full Disk Access, and refuses password-protected notes.
|
|
536
|
+
|
|
537
|
+
---
|
|
538
|
+
|
|
516
539
|
#### `get-note-blocks`
|
|
517
540
|
|
|
518
541
|
Decodes one note's body into typed blocks, read-only, from the NoteStore
|
|
@@ -1252,6 +1275,38 @@ Reads note metadata that AppleScript cannot expose, by querying the NoteStore SQ
|
|
|
1252
1275
|
|
|
1253
1276
|
---
|
|
1254
1277
|
|
|
1278
|
+
#### `get-audio-transcripts`
|
|
1279
|
+
|
|
1280
|
+
Reads the transcript, and the summary when one exists, that Notes already computed for the audio recordings in a note. It does not transcribe anything itself. Notes keeps each recording's transcript as word-level mergeable data on the audio attachment's database row, and this tool decodes it read-only.
|
|
1281
|
+
|
|
1282
|
+
**Requires:** Full Disk Access for the MCP host process (see [Full Disk Access Setup](#full-disk-access)). Password-protected notes are refused.
|
|
1283
|
+
|
|
1284
|
+
| Parameter | Type | Required | Description |
|
|
1285
|
+
|-----------|------|----------|-------------|
|
|
1286
|
+
| `id` | string | Yes | Note ID (use `search-notes` to find it first) |
|
|
1287
|
+
| `includeSegments` | boolean | No | Also return word-level segments: `text`, `start` and `duration` in seconds, and `speaker`. Default `false` |
|
|
1288
|
+
| `maxSegments` | number | No | Cap on segments per attachment when `includeSegments` is set (default 2000, at most 20000) |
|
|
1289
|
+
|
|
1290
|
+
**Example:**
|
|
1291
|
+
```json
|
|
1292
|
+
{
|
|
1293
|
+
"id": "x-coredata://ABC123/ICNote/p456",
|
|
1294
|
+
"includeSegments": true,
|
|
1295
|
+
"maxSegments": 500
|
|
1296
|
+
}
|
|
1297
|
+
```
|
|
1298
|
+
|
|
1299
|
+
**Returns:** `structuredContent.attachments` holds one entry per top-level audio attachment, in the order the recordings appear in the note. Each entry has:
|
|
1300
|
+
|
|
1301
|
+
- `attachmentId` (usable with `save-attachment`), `identifier`, `typeUti`, and `durationSeconds` when known
|
|
1302
|
+
- `status`: `ok` (a transcript is stored), `none` (no transcript is stored, for example a recording Notes has not transcribed, or an audio file attached from elsewhere), or `undecodable` with a `reason`
|
|
1303
|
+
- `text` (the words joined into readable text), `wordCount`, `fragmentCount`, `speakers`, `summary` and `topLineSummary` when stored, and `needsTranscription` when the database records it
|
|
1304
|
+
- `segments`, only when `includeSegments` is set, with `segmentsTruncated` when the cap cut them short
|
|
1305
|
+
|
|
1306
|
+
A recording extended with more takes has several fragments. Their transcripts are joined in stored order, separated by a blank line, and each segment carries a `fragment` index. Recordings with more than one fragment have been verified against synthetic fixtures only. A response that would exceed `APPLE_NOTES_MCP_EXPORT_MAX_BYTES` (default 8 MB) drops segments first and then shortens `text`, marking `truncated`, `segmentsTruncated` and `textTruncated`. When the note body cannot be parsed, attachments come back in database order with `bodyOrder: false`.
|
|
1307
|
+
|
|
1308
|
+
---
|
|
1309
|
+
|
|
1255
1310
|
#### `add-attachment`
|
|
1256
1311
|
|
|
1257
1312
|
Adds one nonempty local file of at most 64 MiB to an exact note using `id`, the
|
|
@@ -1669,7 +1724,7 @@ MCP stores no secrets, but as a general rule keep only non-secret config here.
|
|
|
1669
1724
|
|
|
1670
1725
|
## Full Disk Access
|
|
1671
1726
|
|
|
1672
|
-
Several tools read directly from the Apple Notes SQLite database, which lives in a macOS-protected directory. Those tools require **Full Disk Access** for the process running the MCP server: `get-checklist-state`, `get-note-metadata`, `get-note-blocks`, `get-note-link`, the checklist annotations in `get-note-markdown`, and the database half of `get-sync-status`.
|
|
1727
|
+
Several tools read directly from the Apple Notes SQLite database, which lives in a macOS-protected directory. Those tools require **Full Disk Access** for the process running the MCP server: `get-checklist-state`, `get-note-metadata`, `get-note-blocks`, `get-audio-transcripts`, `get-note-link`, the checklist annotations in `get-note-markdown`, and the database half of `get-sync-status`.
|
|
1673
1728
|
|
|
1674
1729
|
> 📘 **For the full why-and-how walkthrough (which app to grant, verifying with `doctor`, graceful degradation), see the [Full Disk Access Setup Guide](https://github.com/sweetrb/apple-notes-mcp/blob/main/docs/FULL-DISK-ACCESS.md).** The summary below is the quick version.
|
|
1675
1730
|
|