Skip to main content
Glama
btn0s

Granola MCP Server

by btn0s
README.md
# Granola MCP Server

A Model Context Protocol (MCP) server that provides access to your Granola notes, documents, transcripts, and calendar events using the Granola API.

## Features

- 🔍 **Search Notes**: Search through all your Granola documents/notes
- 📝 **Search Transcripts**: Find meeting transcripts by content
- 📅 **Search Events**: Search calendar events
- 📋 **Search Panels**: Search structured note panels
- 📄 **Get Documents**: Retrieve specific documents by ID
- 📊 **List Documents**: List all available documents

## Installation

1. Install dependencies:

```bash
cd granola-mcp-server
npm install
```

2. Build the server:

```bash
npm run build
```

## Configuration in Cursor

Add this to your Cursor MCP configuration (usually in `.cursor/mcp.json` or Cursor Settings):

```json
{
  "mcpServers": {
    "granola": {
      "command": "node",
      "args": ["/absolute/path/to/granola-mcp-server/dist/index.js"]
    }
  }
}
```

**Important**: Replace `/absolute/path/to/granola-mcp-server/dist/index.js` with the actual absolute path to your built server.

## Usage

Once configured, you can use the MCP tools in Cursor:

- `search_granola_notes` - Search documents by query
- `search_granola_transcripts` - Search meeting transcripts
- `search_granola_events` - Search calendar events
- `search_granola_panels` - Search document panels
- `get_granola_document` - Get a specific document
- `get_granola_transcript` - Get a specific transcript
- `list_granola_documents` - List all documents

## How It Works

The server uses Granola's API with credentials stored locally at:

```
~/Library/Application Support/Granola/supabase.json
```

It fetches data from the Granola API and provides search/retrieval capabilities over:

- Documents (notes)
- Meeting transcripts
- Calendar events
- Document panels (structured note sections)

## Development

```bash
# Build
npm run build

# Watch mode
npm run dev

# Run directly
npm start
```

## Notes

- Requires Granola to be installed and logged in (credentials are read from local config)
- Data is fetched from the Granola API in real-time

TDQS

A3.5/5.0

Scored across 7 tools

Disambiguation5/5

Every tool has a clearly distinct purpose targeting different Granola resources (documents, transcripts, events, notes, panels) with specific actions (get, list, search). No ambiguity exists between tools, as each name precisely indicates the resource and operation, preventing misselection.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with 'granola' as a prefix (e.g., get_granola_document, search_granola_events). The naming is uniform across all 7 tools, using snake_case and clear verbs (get, list, search), making the set predictable and readable.

Tool Count5/5

With 7 tools, the count is well-scoped for a Granola document/note/transcript/event management server. Each tool earns its place by covering distinct operations (retrieval, listing, searching) across multiple resource types, avoiding bloat while providing comprehensive functionality.

Completeness4/5

The tool set offers strong coverage for retrieval and search operations across documents, transcripts, events, notes, and panels, with no dead ends. A minor gap exists in CRUD operations, as there are no tools for creating, updating, or deleting resources, but agents can still perform core read and search workflows effectively.

Maintenance

ActivityInactive
ResponsivenessNo issues