Granola
CleanAccess Granola meeting notes, transcripts, AI summaries, and action items through the Granola MCP connector using managed OAuth2 authentication.
SKILL.md
---
name: Granola
description: >
Query and retrieve Granola meeting notes, transcripts, summaries, and action items using the Granola MCP connector.
Use when the user asks about meetings, what was discussed, follow-ups, decisions, action items, or wants to search across meeting notes.
Keywords: granola, meeting, notes, transcript, summary, action items, follow-up, discussed.
metadata:
polly:
polly_managed_connector: true
auth:
- env: GRANOLA_ACCESS_TOKEN
type: oauth2
integration_id: granola-mcp
description: Granola OAuth access
scopes:
- openid
- email
- profile
- offline_access
primaryEnv: GRANOLA_ACCESS_TOKEN
---
# Granola Connector
Access your Granola meeting notes, transcripts, and AI summaries through the
[Granola MCP Server](https://mcp.granola.ai/mcp) using `mcporter`.
---
## Prerequisites
### 1. Ensure mcporter is available
Always run this before invoking any Granola tools:
export PATH="$HOME/lib/node/bin:$PATH"
if ! command -v mcporter &>/dev/null; then
npm install -g mcporter --prefix ~/lib/node
fi
### 2. Write mcporter config
Always write the config before invoking any tools — this connects mcporter
to Granola's remote MCP server:
mkdir -p ~/.mcporter
cat > ~/.mcporter/mcporter.json << EOFCONFIG
{
"mcpServers": {
"granola": {
"url": "https://mcp.granola.ai/mcp",
"headers": {
"Authorization": "Bearer $GRANOLA_ACCESS_TOKEN"
}
}
}
}
EOFCONFIG
### 3. Authentication
This skill uses Polly-managed OAuth2 authentication. The access token is
automatically managed and refreshed by Polly's auth system via the
GRANOLA_ACCESS_TOKEN environment variable.
No manual token refresh is needed — Polly handles token refresh automatically.
On first use, if not connected, call:
manage_auth(action="connect", integration_id="granola-mcp", auth_env="GRANOLA_ACCESS_TOKEN")
---
## Invocation Pattern
export PATH="$HOME/lib/node/bin:$PATH"
mcporter --config ~/.mcporter/mcporter.json call granola.<tool_name> [key=value ...]
---
## Available Tools
### List recent meetings
mcporter --config ~/.mcporter/mcporter.json call granola.list_meetings time_range=this_week
# time_range options: this_week | last_week | last_30_days
### Query meetings with natural language
mcporter --config ~/.mcporter/mcporter.json call granola.query_granola_meetings query="what were the action items from this week?"
# Always preserve citation links [[0]](url) in your response
### List meeting folders
mcporter --config ~/.mcporter/mcporter.json call granola.list_meeting_folders
# Note: requires a paid Granola plan
### Get full meeting details (summary, notes, attendees)
mcporter --config ~/.mcporter/mcporter.json call granola.get_meetings meeting_ids='["<uuid>","<uuid>"]'
# meeting_ids must be valid UUIDs
### Get verbatim transcript
mcporter --config ~/.mcporter/mcporter.json call granola.get_meeting_transcript meeting_id=<uuid>
# Note: requires a paid Granola plan
---
## Plan Restrictions
The following capabilities require a paid Granola plan:
- list_meeting_folders — returns error on free tier
- get_meeting_transcript — returns error on free tier
---
## File Locations
~/.mcporter/mcporter.json mcporter config pointing to remote MCP server
scripts/oauth_setup.py Initial OAuth PKCE setup (for manual setup only)
---
## Notes
- Access tokens are valid for ~6 hours and are automatically refreshed by Polly's auth system
- The LLM never directly accesses refresh tokens — managed securely by Polly
- The GRANOLA_ACCESS_TOKEN environment variable is injected automatically when the skill runs
- meeting_ids in get_meetings must be valid UUID format — non-UUID strings will return a validation error
AuthorManasi
Downloads21
Versions3
PublishedApr 12, 2026
Auth Requirements
GRANOLA_ACCESS_TOKENoauth2integration: granola-mcp
Version History
SHA-256 (latest)
45ec106ae059c905e4dadc3b862c13a35efc1775dd3e095721a139eade230d77