mcpField
G
granola

granola

github.com/joelhooksProductivity65103 installsUpdated 4d ago
Repository

About granola

granola is a CLI skill for accessing Joel's Granola meeting notes through an MCP server. It supports meeting discovery, detail and transcript retrieval, and search, with JSON output that includes suggested next actions.

Key features

  1. 01List meetings by date range
  2. 02Retrieve meeting details and participants
  3. 03Fetch full meeting transcripts
  4. 04Search meeting notes
  5. 05Return JSON with next actions

Use cases

  1. 01Find meetings within a selected time range
  2. 02Review meeting summaries and participants
  3. 03Retrieve or search meeting transcripts

MCP support

The granola CLI connects to the Granola MCP server through mcporter, rather than using a direct API. It wraps tools for meeting search, listing, detail retrieval, and transcript retrieval.

Install

Copy the command and run it in a terminal.

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

After installing, type/granolain Claude Code to confirm it loaded.

Details

From the project README

Granola Meeting Intelligence

Access Joel's Granola meeting notes via the granola CLI, which wraps the Granola MCP server through mcporter.

Setup

  • Binary: ~/.local/bin/granola
  • Source: ~/Code/joelhooks/granola-cli
  • Config: ~/.config/granola-cli/mcporter.json
  • Transport: MCP via mcporter (NOT direct API, NOT npm package)
  • Auth: Uses Granola's local credentials automatically

CLI Commands

List meetings
granola meetings [--range this_week|last_week|last_30_days|custom] [--start YYYY-MM-DD] [--end YYYY-MM-DD]
Get meeting details (summary, participants)
granola meeting <meeting-id>
Get full transcript
granola meeting <meeting-id> --transcript
Search meetings
granola search "<query>"
Check auth/connection
granola --help

Returns "connected": true if MCP transport is working.

Output Format

All commands return agent-first JSON with HATEOAS next_actions:

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

Important Notes

  • Timestamps are UTC. Granola returns all dates in UTC. A meeting showing "5:01 PM" on Feb 26 is actually 9:01 AM PST. Always convert when displaying to Joel or writing to Vault files.
  • Discover actual access: Use Executor’s saved Granola connection and current integration contract. Historical sandbox EPERM is not a universal capability limit. Start with summaries; raw evidence needs the required scoped drilldown receipt.

Known Limitations

  • Rate limiting: get_meeting_transcript endpoint rate-limits aggressively. Don't batch transcript pulls — space them out.
  • Concurrency: Keep concurrency at 1 for transcript fetches. Original concurrency of 3 overwhelmed the API.
  • Granola app not required locally: The MCP server handles auth via stored creds, Granola desktop app does NOT need to be running.

MCP Tools (underlying)

The granola CLI wraps these MCP tools:

  1. query_granola_meetings — NL search with citations
  2. list_meetings — by time range
  3. get_meetings — details by ID array
  4. get_meeting_transcript — verbatim transcript by ID

Pipeline Integration

When a new meeting is detected, fire an Inngest event:

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 functions that process meetings:

  • check/granola-meetings — event-triggered check for new meetings
  • granola-check-cron — hourly cron (7 * * * *) polling for new meetings
  • granola-backfill — bulk backfill all meetings

Related

  • ADR-0055: Granola Meeting Intelligence Pipeline
  • Source repo: ~/Code/joelhooks/granola-cli
  • Inngest functions: packages/system-bus/src/inngest/functions/check-granola.ts
  • Meeting analysis: packages/system-bus/src/inngest/functions/meeting-analyze.ts
  • Transcript indexing: packages/system-bus/src/inngest/functions/meeting-transcript-index.ts

Comments

Markdown supported