本地笔记存档服务

Granola Local Archive 是一个用于本地存储和索引 Granola 生成的笔记、摘要和转录内容的服务,支持通过 MCP 客户端进行快速搜索和查询。

  • by gdebenedetti
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 gdebenedetti/granola-local-archive

使用说明

格兰诺拉当地档案馆

非官方项目。与格兰诺拉无关联、无格兰诺拉背书或无格兰诺拉维护。

此项目适用于macOS安装,其中Granola桌面应用程序已经将本地缓存数据写入磁盘。

本地MCP服务器和SQLite支持的索引,用于与Granola聊天,生成了本地机器上已经存在的笔记、摘要和成绩单。

它的作用

  • 将本地格兰诺拉麦片内容暴露给Codex、Cursor和其他MCP客户端,以便您可以询问有关会议和文件夹的问题。
  • 从磁盘上已有的Granola缓存中读取本地笔记、摘要、成绩单、文件夹和文件夹附件。
  • 在SQLite FTS5中为笔记和成绩单文本建立索引,以实现快速本地搜索。
  • 通过针对日期范围和文件夹范围查询进行优化的MCP工具返回固定片段和会议元数据。
  • 拍摄以下内容的压缩快照 ~/Library/Application Support/Granola/cache-v4.json 只有当它改变的时候。
  • 存储当前Sidecar以及会议、记录和文件夹的版本历史记录。
  • 为仍然没有本地记录的会议生成每日水合队列。
  • 保留已存档的会议,即使它们后来从Granola的实时缓存中消失。

布局

大多数运行时状态存储在 archive/:

  • snapshots/:原始文件的gzip快照 cache-v4.json
  • cold-backups/:Granola应用程序支持目录的每周tarball,不包括临时缓存
  • current/:当前用于会议、成绩单和文件夹的Sidecar
  • history/:这些侧车的早期版本
  • reports/:每日对账报告
  • state/:SQLite索引、清单和水合物队列

设置

清理克隆引导程序:

python3 -m venv .venv
.venv/bin/python -m pip install --upgrade pip setuptools
.venv/bin/python -m pip install -e . --no-build-isolation

下面的包装脚本假设 .venv/ 存在:

zsh ./ops/run-archive.sh stats

运行第一个完整的本地同步:

zsh ./ops/run-archive.sh sync --mode daily

廉价的小时支票:

zsh ./ops/run-archive.sh sync --mode hourly

查看当前的成绩单水合队列:

zsh ./ops/run-archive.sh hydrate-queue

主要用例:

zsh ./ops/run-mcp.sh

手动转录水合作用

Granola似乎会根据需要获取一些旧的成绩单,然后将其保存回 cache-v4.json.

推荐流量:

  1. 跑 hydrate-queue 选择5到10个会议。
  2. 在格兰诺拉开始每次会议,并展开会议记录。
  3. 等待几秒钟,让音符完成保湿。
  4. 跑 sync --mode hourly.
  5. 新的成绩单将被自动检测并存档。

如果Granola在UI中显示文字记录,但从未将其持久化 cache-v4.json,手动导入复制的成绩单:

pbpaste | zsh ./ops/run-archive.sh import-transcript --meeting "Weekly Sync" --created-at 2025-10-08

您还可以从文件中读取:

zsh ./ops/run-archive.sh import-transcript --meeting-id meeting-123 --file /tmp/transcript.txt

手动成绩单导入存储在 archive/manual/transcripts/ 并在未来的同步中重新应用,因此稍后的缓存更新不会删除它们。

MCP使用

启动本地MCP服务器:

zsh ./ops/run-mcp.sh

可用工具:

  • search_meetings
  • list_meetings
  • get_meeting
  • get_meeting_transcript
  • list_folders
  • get_folder
  • search_folder
  • search_evidence
  • search_unlisted
  • get_folder_attachments
  • stats

接地答案的推荐用法:

  1. list_meetings 用于严格的文件夹/日期范围
  2. search_evidence 在宣布决定、人员或下一步行动之前,获取确切的片段
  3. get_meeting 或 get_meeting_transcript 只有当需要更深入的背景时

从概念上讲,归档层的存在是为了使MCP随着时间的推移变得可靠。面向主要用户的界面是MCP服务器,而不是备份作业本身。

客户端设置

光标

{
  "mcpServers": {
    "granola-local": {
      "command": "/bin/zsh",
      "args": ["/path/to/granola-local-archive/ops/run-mcp.sh"]
    }
  }
}

Cursor还支持安装深度链接。由于此MCP服务器从您的本地签出运行,因此公共README无法为每台机器提供具有正确绝对路径的通用一键按钮。

从克隆生成本地Cursor安装链接:

.venv/bin/python ./ops/generate-cursor-install-link.py

直接在macOS上打开:

open "$(.venv/bin/python ./ops/generate-cursor-install-link.py --raw)"

助手还可以打印Markdown Add to Cursor 如果您想在自己的文档中重用它,请单击按钮:

.venv/bin/python ./ops/generate-cursor-install-link.py --markdown

法典

配置指向同一启动器的stdio MCP服务器:

/bin/zsh /path/to/granola-local-archive/ops/run-mcp.sh

克劳德代码

claude mcp add-json granola-local \
  '{"type":"stdio","command":"/bin/zsh","args":["/path/to/granola-local-archive/ops/run-mcp.sh"]}' \
  --scope user

克劳德桌面版

将服务器添加到您的Claude Desktop MCP配置中:

{
  "mcpServers": {
    "granola-local": {
      "command": "/bin/zsh",
      "args": ["/path/to/granola-local-archive/ops/run-mcp.sh"],
      "env": {}
    }
  }
}

OpenCode

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "granola-local": {
      "type": "local",
      "enabled": true,
      "command": ["/bin/zsh", "/path/to/granola-local-archive/ops/run-mcp.sh"]
    }
  }
}

ChatGPT

ChatGPT自定义连接器目前通过Streamable HTTP或SSE面向远程MCP服务器,而不是本地stdio进程。此项目需要一个小型HTTP适配器才能直接连接到ChatGPT。

其他MCP客户端

未经测试的stdio客户端,如Windsurf或VS Code/GitHub Copilot,应使用与上述相同的命令和args模式。

GitHub代理

此存储库附带了自定义GitHub Copilot代理配置文件,位于 .github/agents/:

  • security-review:检查隐私、文件访问、子流程、MCP暴露和CI/CD供应链风险
  • mcp-review:检查MCP协议行为、接地质量和工具合同可靠性
  • release-readiness:检查存储库是否已准备好公开发布

从存储库中使用它们 Agents GitHub上的标签,或任何支持存储库自定义代理的GitHub Copilot界面。首先选择存储库和分支,然后选择代理并为其分配一个重点任务,例如:

  • Review this PR for security issues.
  • Review the MCP server for protocol or grounding problems.
  • Check whether this branch is ready for a public release.

启动模板

模板位于 ops/launchd/ 并在安装过程中在本地呈现:

  • 每3600秒进行一次小时同步
  • 当地时间07:30进行每日对账

使用 ./ops/manage-launchd.sh 要安装或删除它们,请执行以下操作:

zsh ./ops/manage-launchd.sh install
zsh ./ops/manage-launchd.sh status
zsh ./ops/manage-launchd.sh run-now daily
zsh ./ops/manage-launchd.sh uninstall

clear-logs 截断归档调度程序日志,而不涉及快照或报告。

共享回购卫生

  • 运行时数据 archive/ 是当地州,不是项目来源。
  • macOS安装状态 ~/Library/LaunchAgents 是当地州,不是项目来源。
  • 该项目从以下位置读取可选的水合优先级文件夹 GRANOLA_PRIORITY_FOLDERS例如:
export GRANOLA_PRIORITY_FOLDERS="Folder A,Folder B"
  • 发布前,运行:
zsh ./ops/check-public-hygiene.sh