Notesbridge

io.github.IsaiahDupree由 GitHub 账号 IsaiahDupree 发布v1.3.0更新于 Oct 24, 2026

Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.

已验证Streamable HTTP可网页运行效率与工作流文件与存储

概览

AI 生成的概览

通过本地 Mac 代理与托管中继,让 ChatGPT 或 Claude 搜索、读取和写入 Apple 备忘录的连接器。

可以做什么
  • 按关键词搜索备忘录并读取单条备忘录的完整内容
  • 列出文件夹及备忘录数量,也可按文件夹列出备忘录
  • 创建新备忘录,并向已有备忘录追加文本
  • 重写备忘录内容(破坏性操作,会先确认)
  • 管理 Mac 代理:查看配对状态、查看日志、取消开机自启
适用场景
当你希望助手直接查询或补充你的 Apple 备忘录、不想手动复制粘贴,并且愿意让一台 Mac 保持唤醒并运行本地代理时使用。
运行要求
需在托管站点注册 NotesBridge 账号并生成配对码;在 Mac 上用 npx 安装 apple-notes-agent(需 Node 18 及以上);授予 macOS 让终端控制备忘录的权限;Mac 需保持唤醒且代理在运行;连接时需 OAuth 登录。自托管还需 Vercel 账号和 Supabase 项目,并设置 SUPABASE_URL、SUPABASE_SERVICE_ROLE_KEY 与 JWT_SECRET。
安装前请注意
助手请求的备忘录内容会经托管中继传输,任务参数与结果会临时存放在中继数据库中。写入类工具可创建、追加或覆盖备忘录,其中重写属于破坏性操作。受密码保护的备忘录和附件内容不在已验证的读取范围内。代理令牌保存在 Mac 本地文件中。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Notesbridge,将其添加到工作区。
  2. 连接 所需的 凭据。它们会被私密存储,绝不会在公开页面上展示。
  3. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.IsaiahDupree%2Fnotesbridge/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。 客户端会在首次连接时完成 OAuth 登录。

{
  "mcpServers": {
    "notesbridge": {
      "type": "http",
      "url": "https://notesbridge.vercel.app/mcp"
    }
  }
}

README

📝 NotesBridge

Use your Apple Notes from ChatGPT — search, read, and write, powered by your own Mac.

[License: MIT] [npm]

NotesBridge is a Model Context Protocol (MCP) connector that lets ChatGPT work with your Apple Notes. Every Notes action runs on your own Mac through a local agent. Requested note content travels through the hosted relay to ChatGPT; job arguments and results are temporarily stored in the relay database.

  ChatGPT  ──OAuth──►  NotesBridge relay  ──job queue──►  apple-notes-agent  ──►  Apple Notes.app (connector)          (Vercel, stateless)   (your Mac, polls & executes)         (on your Mac)

The agent accesses Apple Notes on your Mac. The relay stores account records and temporary job payloads/results; ChatGPT receives requested note content. Password-protected notes and attachment content are outside the verified read scope.


For users — 3 steps

1. Create your account at notesbridge.vercel.app and generate a pairing code.

2. Install the Mac agent (needs Node 18+):

bash
npx apple-notes-agent pair <YOUR-CODE>   # link this Mac to your accountnpx apple-notes-agent install            # keep it running on every restart

The first time it touches Notes, macOS asks "Terminal wants to control Notes" — click OK (one time).

3. Connect ChatGPT: Settings → Plugins → turn on Developer mode (Security & login) → Create a custom plugin → paste the MCP Server URL https://notesbridge.vercel.app/mcp → Authentication OAuth → sign in & Allow.

That's it. In a new chat: "Search my Apple Notes for the Q3 planning note" or "Create a note titled Groceries with milk, eggs, coffee."

Your Mac must be awake with the agent running. npx apple-notes-agent install makes it start automatically at login and restart if it ever crashes.

Managing the agent

bash
npx apple-notes-agent status      # is it paired & reachable?npx apple-notes-agent logs        # recent activitynpx apple-notes-agent uninstall   # stop auto-start

From this source checkout, for a private local text index (Node.js 22.13+), run node agent/cli.mjs index-install. This builds the index in batches of 25 notes and checks for changes every 15 minutes. index-status reports coverage. Search checks the current Notes metadata before using cached text, and falls back to live Notes when the index is stale. Password-protected content and attachment contents are excluded. The SQLite index stays in an owner-only directory on the Mac, outside the repository. The indexing commands are available in source; npm publication is separate.


What ChatGPT can do

ToolAction
searchSearch notes by keyword
fetch / get_noteRead a note's full content
list_foldersList folders with note counts
list_notesList notes (optionally by folder)
create_noteCreate a new note
append_to_noteAppend text to a note
update_noteRewrite a note (destructive — ChatGPT confirms first)

Self-hosting

You can run your own relay so nothing depends on the hosted instance.

Prereqs: a Vercel account and a Supabase project (free tiers are fine).

  1. Storage — in your Supabase project's SQL editor, run supabase/schema.sql. It creates a tiny Redis-shaped KV + queue surface (nb_* functions) with RLS on.
  2. Deploy the server/ directory to Vercel.
  3. Set env vars (see server/.env.example):
    • SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY — your project + service-role key
    • JWT_SECRET — openssl rand -hex 32
  4. Verify: curl https://YOUR-APP.vercel.app/api/health → redisConfigured, redisOk, jwtSecretSet all true.
  5. Point the agent at it: npx apple-notes-agent pair <CODE> --server https://YOUR-APP.vercel.app.

How it works

  • Auth — OAuth 2.1 with PKCE and Dynamic Client Registration (RFC 7591). ChatGPT registers itself, the user signs in on the NotesBridge consent page, and ChatGPT gets a scoped MCP access token. JWTs are HMAC-signed; three kinds (session, agent, mcp) with distinct privileges. Optional email verification via Resend (RESEND_API_KEY); off unless configured, and enforcement is opt-in (REQUIRE_EMAIL_VERIFICATION).
  • Relay — MCP tool call → job pushed to jobs:<user> (TTL ≤ the caller's wait window, so an abandoned job can't run late) → the Mac agent (holding a hanging long-poll) is handed the job within ~200ms, executes it, pushes the result → the MCP handler returns it. The long-poll means jobs are delivered on arrival rather than on a fixed interval, so relay overhead is ~300ms instead of ~1s. The agent is considered "online" only while it's actively connected.
  • Agent — a dependency-free Node CLI. Tools run via JXA (osascript -l JavaScript) against Notes.app; arguments are passed as JSON over argv (never shell-interpolated). A macOS LaunchAgent keeps it alive across logins and crashes.

Repository layout

server/    Vercel functions: OAuth + MCP endpoint + relay        (deploy this)agent/     apple-notes-agent — the npm-published Mac CLI          (users npx this)kit/       Browser automations: register the dev-mode connector AND           fill the OpenAI directory submission (see kit/README.md)supabase/  schema.sql for self-hosting the storagetest/      end-to-end OAuth + MCP integration test

Development

bash
# servercd server && cp .env.example .env.local   # fill in, then: vercel dev# end-to-end test against a live deployment (reads ../.env.local)node test/e2e-oauth.mjs# agent unit testsnode --test agent/test-agent-unit.mjs

Security & privacy

  • Notes are read/written only on your Mac. The relay never persists note content — job payloads live in Redis-shaped storage with a short TTL and are deleted on delivery.
  • The agent token is stored at ~/.notesbridge-agent.json (mode 600).
  • No secrets are committed; see .gitignore and the .env.example files.
  • Write tools are marked destructive so ChatGPT asks before overwriting.

License

MIT © Isaiah Dupree

Complete read coverage

list_notes and search return next_cursor. Pass it back until null; an empty search page can still have a cursor. Listings use stable note-ID order. Search reports password-protected notes as skipped. Run node test/live-all-notes.mjs for a read-only local coverage test after granting Notes automation. Current verification status is in the report.

来源:README.md,提交 8b63357

工具

0
该服务器需要登录,因此 SourceWeft 无法在没有账号的情况下读取其工具,也未收录。已连接账号所能看到的内容可能因账号及其权限而异。

版本历史

1
  1. v1.3.0最新Sep 16, 2026

评分

已满足适用检查项的 85%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分