Apple Notes について
macOS の Apple Notes を読み取り、管理する MCP サーバーです。Apple Events と任意の読み取り専用 SQLite インデックスを使い、書き込みツールは既定で無効です。
主な機能
- 01ノートの検索と本文の取得
- 02アカウント、フォルダー、添付ファイルの一覧表示
- 03添付ファイルの保存
- 04書き込みツールは既定で無効
活用シーン
- 01キーワードでノートを検索
- 02ノートを読み添付情報を確認
- 03書き込みツールを有効にしてノートを管理
MCP 対応
MCP クライアントに Apple Notes の検索、読み取り、添付ファイル用ツールを提供します。追加、更新、移動、削除ツールは APPLE_NOTES_ALLOW_WRITES=1 の場合にのみ登録されます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @mgcrea/mcp-apple-notesAPPLE_NOTES_ALLOW_WRITESRegister the mutating tools. Off by default, and the gate decides whether the write tools exist at all rather than merely refusing — an agent with writes off cannot see them.APPLE_NOTES_ACCOUNTSRestrict every read and write to these Notes accounts, by name.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
@mgcrea/mcp-apple-notes
macOS の Apple Notes アプリ向け Model Context Protocol サーバーです。
非公式です。 Apple とは提携していません。Mac にすでにインストールされている Notes アプリを操作します。
2 つの経路
- Apple Events 経路 — アカウント、フォルダー、本文、およびすべての変更を扱います。常にこちらが正となります。 書き込み後、結果は Notes から再読み込みした内容になります。
- インデックス経路 —
NoteStore.sqliteに対する読み取り専用の SQLite で、Apple Events では扱いきれない規模の検索とメタデータ取得に使います。フルディスクアクセスが必要です。
Mail とは異なり、Apple Events 経路だけでサーバーとして機能します。921 件のノートがあるライブラリで計測したところ、全文検索にかかる時間は 97 ms でした。Mail がインデックスを必要とする原因となった 74 秒と比べてください。そのため、まずインストールして使い始め、フルディスクアクセスを許可するかどうかはその後に決められます。
ただし、いつまでも拡張できるわけではありません。背後にインデックスがないため、クエリのたびに全コストがかかります。限界は約 5~10k 件のノートです。apple_notes_diagnostics で、どちらの経路が応答しているかを確認できます。
| 権限 | 必要となる機能 | 権限がない場合 |
|---|---|---|
| Automation → Notes | すべて | 何も動作せず、-1743 エラーが発生します |
| フルディスクアクセス | 大規模な検索、save_attachment | サーバーは引き続き動作しますが、Apple Events 経路を使います |
どちらの権限も Notes.app に付与するものではありません。権限が必要なのは、読み取りを行う側 です。
ツール
読み取り:diagnostics、list_accounts、list_folders、list_notes、search_notes、get_note、
list_attachments、save_attachment。
書き込み:APPLE_NOTES_ALLOW_WRITES=1 の場合にのみ登録されます。フラグがオフの場合、モデルから見えなくなるだけで、単に拒否されるわけではありません:create_note、update_note、move_note、delete_notes、
add_attachment。
add_attachment は、ノートに画像を追加する唯一の方法です。ノート本文に <img> タグを入れても、Notes が読み込まない添付ファイルが作成されるだけです。docs/notes.md を参照してください。
設定
| 変数 | デフォルト | |
|---|---|---|
APPLE_NOTES_ALLOW_WRITES | off | 変更を行うツールを登録します。 |
APPLE_NOTES_ACCOUNTS | all | 読み取り側の許可リスト。カンマ区切りです。 |
APPLE_NOTES_INDEX_MODE | auto | auto | ro | immutable | off。 |
APPLE_NOTES_STORE | auto | NoteStore.sqlite のパスを明示的に指定します。 |
APPLE_NOTES_SEARCH_CACHE_TTL_MS | 60000 | 本文コーパスをキャッシュに保持する時間です。 |
APPLE_NOTES_ATTACHMENT_DIR | ~/Downloads | 添付ファイルの保存先として許可される唯一のディレクトリです。 |
APPLE_NOTES_BODY_MAX_BYTES | 262144 | コンテキストウィンドウを保護するための本文の切り詰めサイズです。 |
APPLE_NOTES_OSASCRIPT_TIMEOUT_MS | 30000 | 初回の権限確認プロンプトに合わせたタイムアウトです。 |
注意が必要な点
- Notes は本文の最初の行からノートのタイトルを取得します。
nameを設定しても黙って無視されるため、create_noteは代わりにタイトルを見出しとして先頭に追加します。 - パスワードで保護されたノートは一切読み取れません。 保存時のテキストは AES 暗号文であり、そのため
ZICNOTEDATAに暗号関連の列が含まれています。どの権限を付与しても読み取り可能にはなりません。 - フォルダーは入れ子になります。 自分のライブラリがたまたまフラットであっても、フォルダーマップは再帰的に処理する必要があります。
- 検索キャッシュは無効化ではなく TTL で管理されます。 キャッシュが古くなっているかを Apple Events 経由で確認するには 128 ms かかり、スキャンを再実行する時間(97 ms)よりも長くなります。そのため、一定範囲の古さを許容するのが現実的な選択です。docs/notes.md を参照してください。
ライセンス
MIT。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。