mcp-granola
An MCP (Model Context Protocol) server that gives AI agents access to your Granola meeting notes. Search notes, retrieve full content with transcripts, and paginate through your meeting history.
Features
- List notes with date filtering and cursor-based pagination
- Get full note content including AI summaries and meeting transcripts
- Search notes by title or summary keywords
- Works with Claude Code, Gemini CLI, and any MCP-compatible client
- Zero external dependencies beyond the MCP SDK
Quick Start
1. Install
npm install @devli13/mcp-granola
Or clone and install locally:
git clone https://github.com/devli13/mcp-granola.git
cd mcp-granola
npm install
2. Get a Granola API key
- Open the Granola desktop app
- Go to Settings > API
- Click Create new key
- Copy the key (starts with
grn_)
3. Configure
Add to your .mcp.json (Claude Code) or .gemini/settings.json (Gemini CLI):
{
"mcpServers": {
"granola": {
"command": "npx",
"args": ["-y", "@devli13/mcp-granola"],
"env": {
"GRANOLA_API_KEY": "grn_your_api_key_here"
}
}
}
}
Or run directly:
GRANOLA_API_KEY=grn_your_key node server.js
Configuration
| Environment Variable | Required | Description |
|---|---|---|
GRANOLA_API_KEY |
Yes | Your Granola API key (starts with grn_). Get it from Granola app > Settings > API. |
Tools
| Tool | Description | Key Parameters |
|---|---|---|
list_notes |
List notes, most-recent first | limit, created_after, created_before, cursor |
get_note |
Fetch a single note by ID | id (required), include_transcript |
search_notes |
Search notes by title/summary keywords | query (required), limit |
Example: list recent notes
{
"name": "list_notes",
"arguments": {
"limit": 5,
"created_after": "2025-01-01T00:00:00Z"
}
}
Example: get a note with transcript
{
"name": "get_note",
"arguments": {
"id": "not_abc123def456",
"include_transcript": true
}
}
Limitations
- Granola API is in beta โ endpoints and response shapes may change.
- Personal API keys only access notes you own or that are shared with you directly.
search_notesperforms client-side substring matching over the 200 most recent notes. It is not a full-text search engine. For large note volumes, uselist_noteswith date filters instead.- The API only returns notes with generated AI summaries and transcripts. Notes still being processed won't appear.
Rate Limits
Granola enforces rate limits per workspace:
| Metric | Value |
|---|---|
| Burst capacity | 25 requests |
| Time window | 5 seconds |
| Sustained rate | 5 req/s (300/min) |
Contributing
Issues and pull requests are welcome! Please open an issue first to discuss any significant changes.
License
MIT