mcpField
G
granola

granola

github.com/joelhooks生产力65103 次安装4 天前更新
代码仓库

关于 granola

granola 是通过 MCP 服务访问 Joel 的 Granola 会议笔记的命令行技能,支持查找会议、获取详情和逐字稿以及搜索,并以附有后续操作建议的 JSON 输出结果。

主要功能

  1. 01按日期范围列出会议
  2. 02获取会议详情和参会者
  3. 03获取完整会议逐字稿
  4. 04搜索会议笔记
  5. 05返回包含后续操作的 JSON

适用场景

  1. 01查找指定时间范围内的会议
  2. 02查看会议摘要和参会者
  3. 03获取或搜索会议逐字稿

MCP 相关

granola 命令行通过 mcporter 连接 Granola MCP 服务,而非直接调用 API。它封装会议搜索、列表、详情和逐字稿获取工具。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/joelhooks/joelclaw --skill granola

安装后在 Claude Code 中输入/granola确认已加载。

详细介绍

Granola 会议智能

通过 granola CLI 访问 Joel 的 Granola 会议记录,该 CLI 通过 mcporter 封装 Granola MCP 服务。

设置

  • 二进制文件:~/.local/bin/granola
  • 源代码:~/Code/joelhooks/granola-cli
  • 配置:~/.config/granola-cli/mcporter.json
  • 传输方式:通过 mcporter 使用 MCP(不是直接调用 API,也不是 npm 包)
  • 身份验证:自动使用 Granola 的本地凭据

CLI 命令

列出会议
granola meetings [--range this_week|last_week|last_30_days|custom] [--start YYYY-MM-DD] [--end YYYY-MM-DD]
获取会议详情(摘要、参与者)
granola meeting <meeting-id>
获取完整转录文本
granola meeting <meeting-id> --transcript
搜索会议
granola search "<query>"
检查身份验证/连接状态
granola --help

如果 MCP 传输正常工作,将返回 "connected": true。

输出格式

所有命令都会返回以 Agent 为先的 JSON,并包含 HATEOAS next_actions:

{
  "ok": true,
  "command": "granola meetings",
  "result": { ... },
  "next_actions": [
    { "command": "granola meeting <id>", "description": "Get details" }
  ]
}

重要说明

  • 时间戳为 UTC。 Granola 返回的所有日期均为 UTC。2 月 26 日显示为“5:01 PM”的会议,实际时间是 PST 上午 9:01。向 Joel 展示时间或写入 Vault 文件时,务必进行时区转换。
  • 确认实际访问能力: 使用 Executor 保存的 Granola 连接和当前集成契约。历史沙盒中的 EPERM 错误并不代表普遍的能力限制。先从摘要开始;原始证据需要提供所需的限定范围下钻凭据。

已知限制

  • 速率限制:get_meeting_transcript 端点有严格的速率限制。不要批量拉取转录文本;请间隔一段时间再拉取。
  • 并发:获取转录文本时,并发数保持为 1。原先的并发数为 3,导致 API 不堪重负。
  • 本地无需运行 Granola 应用:MCP 服务会通过已存储的凭据处理身份验证,无需运行 Granola 桌面应用。

MCP 工具(底层)

granola CLI 封装了以下 MCP 工具:

  1. query_granola_meetings — 带引用的自然语言搜索
  2. list_meetings — 按时间范围列出会议
  3. get_meetings — 按 ID 数组获取详情
  4. get_meeting_transcript — 按 ID 获取逐字转录文本

工作流集成

检测到新会议时,触发一个 Inngest 事件:

curl -X POST "http://localhost:8288/e/$EVENT_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "meeting/noted",
    "data": {
      "meeting_id": "<id>",
      "title": "<title>",
      "date": "<YYYY-MM-DD>",
      "source": "granola",
      "participants": ["Person A", "Person B"]
    }
  }'

用于处理会议的 Inngest 函数:

  • check/granola-meetings — 由事件触发的新会议检查
  • granola-check-cron — 每小时运行的 cron(7 * * * *),用于轮询新会议
  • granola-backfill — 批量回填所有会议

相关内容

  • ADR-0055:Granola 会议智能流水线
  • 源代码仓库:~/Code/joelhooks/granola-cli
  • Inngest 函数:packages/system-bus/src/inngest/functions/check-granola.ts
  • 会议分析:packages/system-bus/src/inngest/functions/meeting-analyze.ts
  • 转录文本索引:packages/system-bus/src/inngest/functions/meeting-transcript-index.ts

评论

支持 Markdown