mcpField
N
notesbridge

notesbridge

远程服务
notesbridge.vercel.app生产力04 天前更新

关于 notesbridge

notesbridge 通过本地 Mac Agent 和 MCP 中继服务将 ChatGPT 连接到 Apple Notes,支持搜索、读取和编辑笔记。可选的本地文本索引可辅助搜索,但不包含受密码保护的笔记和附件内容。

主要功能

  1. 01搜索并读取笔记
  2. 02列出笔记和文件夹
  3. 03创建、追加和更新笔记
  4. 04可选的本地文本索引
  5. 05自托管中继服务

适用场景

  1. 01按关键词查找笔记
  2. 02读取笔记的完整内容
  3. 03向现有笔记添加信息
  4. 04根据对话创建笔记

MCP 相关

提供带 OAuth 身份验证的 MCP 端点和 Apple Notes 工具。请求经中继服务发送给已配对的 Mac Agent,由其在本机访问 Notes.app。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://notesbridge.vercel.app/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

📝 NotesBridge

通过 ChatGPT 使用你的 Apple Notes——搜索、阅读和写入,所有操作都由你自己的 Mac 提供支持。

License: MIT npm

NotesBridge 是一个 Model Context Protocol(MCP)连接器,可让 ChatGPT 使用你的 Apple Notes。所有 Notes 操作都通过本地 Agent 在你自己的 Mac 上运行。请求的笔记内容会经由托管中继传输给 ChatGPT;任务参数和结果会临时存储在中继数据库中。

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

Agent 会在你的 Mac 上访问 Apple Notes。中继会存储账户记录和临时任务数据及结果;ChatGPT 会接收请求的笔记内容。受密码保护的笔记和附件内容不在已验证的读取范围内。


面向用户——3 步即可完成

1. 创建账户:前往 notesbridge.vercel.app 并生成配对码。

2. 安装 Mac Agent(需要 Node 18+):

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

首次访问 Notes 时,macOS 会询问 “Terminal 想要控制 Notes”——点击 “好”(仅需一次)。

**3. 连接 ChatGPT:**前往 Settings → Plugins → 开启 Developer mode(位于 Security & login)→ Create 自定义插件 → 粘贴 MCP Server URL https://notesbridge.vercel.app/mcp → 选择 Authentication OAuth → 登录并点击 Allow。

完成。在新聊天中输入:“搜索我的 Apple Notes,查找 Q3 规划笔记”,或 “创建一条标题为 Groceries 的笔记,内容为牛奶、鸡蛋、咖啡。”

你的 Mac 必须保持唤醒,且 Agent 正在运行。npx apple-notes-agent install 会让它在登录时自动启动,并在崩溃后自动重启。

管理 Agent
npx apple-notes-agent status      # is it paired & reachable?
npx apple-notes-agent logs        # recent activity
npx apple-notes-agent uninstall   # stop auto-start

在此源代码检出目录中,如需创建本地私有文本索引(Node.js 22.13+),请运行 node agent/cli.mjs index-install。该命令会每批索引 25 条笔记,并每 15 分钟检查一次更改。index-status 会报告覆盖率。 搜索会先检查当前 Notes 元数据,再使用缓存文本;如果索引已过期, 则回退到实时 Notes。受密码保护的内容和附件内容不会纳入索引。SQLite 索引保存在 Mac 上仅所有者可访问的目录中,位于仓库之外。 索引命令可在源代码中使用;npm 发布与此分开。


ChatGPT 可以执行的操作

工具操作
search按关键词搜索笔记
fetch / get_note读取笔记的完整内容
list_folders列出文件夹及笔记数量
list_notes列出笔记(可按文件夹筛选)
create_note创建新笔记
append_to_note向笔记追加文本
update_note重写笔记(具有破坏性——ChatGPT 会先确认)

自行托管

你可以运行自己的中继,从而不依赖托管实例。

**前提条件:**一个 Vercel 账户和一个 Supabase 项目(免费套餐即可)。

  1. 存储——在 Supabase 项目的 SQL 编辑器中运行 supabase/schema.sql。它会创建一个精简的 Redis 风格 KV + 队列接口(nb_* 函数),并启用 RLS。
  2. 部署 server/ 目录到 Vercel。
  3. 设置环境变量(参见 server/.env.example):
    • SUPABASE_URL、SUPABASE_SERVICE_ROLE_KEY——你的项目和 service-role 密钥
    • JWT_SECRET——openssl rand -hex 32
  4. 验证:curl https://YOUR-APP.vercel.app/api/health → redisConfigured、redisOk、jwtSecretSet 均为 true。
  5. 将 Agent 指向该服务:npx apple-notes-agent pair <CODE> --server https://YOUR-APP.vercel.app。

工作原理

  • 身份验证 — 使用 PKCE 和动态客户端注册(RFC 7591)的 OAuth 2.1。ChatGPT 会注册自身,用户在 NotesBridge 授权页面登录,然后 ChatGPT 获得具有指定权限范围的 MCP 访问令牌。JWT 使用 HMAC 签名;分为三种类型(session、agent、mcp),权限各不相同。可选通过 Resend 验证邮箱(RESEND_API_KEY);未配置时默认关闭,且需选择启用强制验证(REQUIRE_EMAIL_VERIFICATION)。
  • 中继 — MCP 工具调用 → 作业推送至 jobs:<user>(TTL 不超过调用方的等待时长,因此被放弃的作业不会延迟执行)→ Mac Agent(保持长轮询挂起)在约 200ms 内收到作业并执行,然后推送结果 → MCP 处理程序返回结果。长轮询意味着作业到达时即会送达,而不是按固定间隔轮询,因此中继开销约为 300ms,而非约 1s。只有在 Agent 处于活动连接状态时,才会被视为“在线”。
  • Agent — 无依赖的 Node CLI。工具通过 JXA(osascript -l JavaScript)操作 Notes.app;参数以 JSON 形式通过 argv 传递(绝不通过 shell 插值)。macOS LaunchAgent 会在登录后及崩溃后让它保持运行。

仓库结构

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 storage
test/      end-to-end OAuth + MCP integration test

开发

# server
cd 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 tests
node --test agent/test-agent-unit.mjs

安全与隐私

  • 仅在你的 Mac 上读取/写入备忘录。中继绝不持久化备忘录内容——作业载荷存储在类似 Redis 的存储中,设置较短的 TTL,并会在送达后删除。
  • Agent 令牌存储在 ~/.notesbridge-agent.json(权限模式 600)。
  • 不会提交任何密钥;请参阅 .gitignore 和 .env.example 文件。
  • 写入工具被标记为具有破坏性,因此 ChatGPT 会在覆盖内容前询问。

许可证

MIT © Isaiah Dupree

完整读取覆盖范围

list_notes 和 search 会返回 next_cursor。持续传入该值,直到其为 null;即使搜索结果页为空,也可能仍有游标。列表按稳定的备忘录 ID 顺序排列。搜索会报告跳过的受密码保护备忘录。授予 Notes 自动化权限后,运行 node test/live-all-notes.mjs,即可进行只读的本地覆盖范围测试。当前验证状态见报告。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。