Granola

Locally query Granola meeting data via Claude Desktop with full transcripts, notes, and analytics from a Granola cache
  • python

0

GitHub Stars

python

Language

5 months ago

First Indexed

2 months ago

Catalog Refreshed

Documentation & install

Readme and setup notes from the catalogue, plus a client-ready config you can copy for your MCP host.

Installation

Add the following to your MCP client configuration file.

Configuration

View docs
{
  "mcpServers": {
    "maxgerlach1-granola-ai-mcp-server": {
      "command": "/Users/YOUR_USERNAME/granola-ai-mcp-server/.venv/bin/granola-mcp-server",
      "args": [],
      "env": {
        "GRANOLA_PARSE_PANELS": "1"
      }
    }
  }
}

This MCP server lets your Claude Desktop workspace query Granola.ai meeting data locally, using Granola’s cache to provide fast, private access to meeting search, details, transcripts, and documents. You can ask natural-language questions and get structured results that stay on your machine.

How to use

You connect Claude Desktop to the Granola MCP server to interrogate your Granola meeting data using plain language. Once configured, you can search for meetings by title, content, participants, or transcripts; retrieve full transcripts and meeting notes; view detailed meeting metadata with local time display; and run pattern analyses across multiple meetings. All data processing happens locally, with no external API calls.

Typical usage patterns include: searching for meetings by topic or participant, requesting a full meeting transcript, pulling meeting documents, and asking for insights such as patterns in participation or topics over a date range. You can also ask for content in your local timezone so timestamps display in your preferred time zone.

How to install

# Prerequisites
- Python 3.12+
- uv package manager
- macOS with Granola.ai installed
- Claude Desktop application
- Granola cache file at `~/Library/Application Support/Granola/cache-v3.json`

# 1. Clone the MCP server into your home directory
cd ~
git clone <repository-url>
cd granola-ai-mcp-server

# 2. Install dependencies with uv
uv sync

# 3. Test the installation
uv run python test_server.py

# 4. Configure Claude Desktop
# Create or edit claude_desktop_config.json with the following snippet

Note: Use the direct path to the virtual environment’s script to avoid working directory issues. The config example shows replacing YOUR_USERNAME with your macOS username and pointing to your home-directory installation.

{
  "mcpServers": {
    "granola": {
      "command": "/Users/YOUR_USERNAME/granola-ai-mcp-server/.venv/bin/granola-mcp-server",
      "args": [],
      "env": {}
    }
  }
}
  1. Restart Claude Desktop to load the MCP server. Quit Claude completely and reopen:
# Quit Claude completely
osascript -e 'quit app "Claude"'
# Reopen Claude
open -a "Claude"

Configuration and troubleshooting notes

The server reads from Granola’s local cache file. If you encounter issues, ensure the Granola cache exists at the expected path and that Claude Desktop can access the MCP script from your home directory. If you see permission or path-related errors, move the installation into your home directory and re-run the setup steps to rebuild the virtual environment.

If Claude Desktop does not show the MCP server after updating the config, verify the absolute path in your claude_desktop_config.json, check Claude Desktop logs at ~/Library/Logs/Claude/mcp-server-granola.log, and ensure there are no spaces or special characters in the path. Restart Claude after changes.

Security & privacy

All processing is local. No external API calls are made, and the server reads only from Granola’s cache with read-only access to ensure data integrity and user privacy.

Performance & capabilities

The server loads cache data quickly, supports large transcripts and notes, and performs multi-field searches efficiently. Timestamps automatically display in your local timezone, and the system is designed to handle hundreds of transcripts per meeting with lazy loading to conserve memory.

Current status

The MCP server is production-ready for local Granola data. It provides access to full transcripts, rich meeting content, speaker identification, and timezone-aware timestamps for recent meetings.

Troubleshooting

Common issues and fixes include:

  • Cache file not found: Ensure Granola.ai is installed and the cache file exists at ~/Library/Application Support/Granola/cache-v3.json.
  • uv command not found: Install uv with curl -LsSf https://astral.sh/uv/install.sh | sh or use a Python-based fallback in Claude config.
  • Permission denied or Operation not permitted: Move the installation to your home directory and re-run uv sync; if needed, grant Claude Desktop Full Disk Access and restart Claude.
  • Current directory does not exist: Use the direct path to the venv script instead of relying on working directory context.
  • Server not appearing in Claude Desktop: Verify the absolute path in the config, review logs, and restart Claude after changes.
  • Failed to spawn process or No such file or directory: Rebuild the venv with uv sync and confirm the granola-mcp-server script exists at the expected path.

If transcript notes appear empty in Claude, Granola may store rich notes inside documentPanels rather than notes_plain. You can disable panel parsing by setting GRANOLA_PARSE_PANELS=0 in the environment and re-run tests to verify content rendering.

Available tools

search_meetings

Search meetings by query string across title, content, participants, and transcripts.

get_meeting_details

Retrieve detailed metadata for a specific meeting by its ID.

get_meeting_transcript

Fetch the complete transcript for a specified meeting, including speaker identification.

get_meeting_documents

Get documents associated with a specific meeting.

analyze_meeting_patterns

Analyze patterns across multiple meetings, such as topics, participants, and frequency.

Built by
VeilStrat
AI signals for GTM teams
© 2026 VeilStrat. All rights reserved.All systems operational