loading…
Search for a command to run...
loading…
MCP server for Granola with shared folder access, raw transcripts, and workspace support
MCP server for Granola with shared folder access, raw transcripts, and workspace support
A Model Context Protocol (MCP) server that provides access to your Granola notes, documents, transcripts, and calendar events using the Granola API.
Enhanced fork with shared folder access, raw transcripts, workspace support, and automatic token refresh.
supabase.json → supabase.json.enc and stopped writing plaintext refresh tokens. v1.2.0 reads JWT from the plaintext stored-accounts.json sibling file (which Granola.app auto-refreshes during normal usage) and falls back to legacy supabase.json only for older Granola installs. No more 401s after Granola updates.Add to your MCP configuration:
{
"mcpServers": {
"granola": {
"command": "npx",
"args": ["-y", "granola-mcp-plus"]
}
}
}
git clone https://github.com/accrue-money/granola-mcp.git
cd granola-mcp
npm install
npm run build
Then configure with the local path:
{
"mcpServers": {
"granola": {
"command": "node",
"args": ["/path/to/granola-mcp/dist/index.js"]
}
}
}
~/Library/Application Support/Granola/supabase.jsonList all folders (document lists), including shared folders from your team.
Input: None
Output:
[
{
"id": "folder-uuid",
"title": "Folder Name",
"description": "Optional description",
"icon": { "type": "icon", "color": "blue", "value": "FolderIcon" },
"document_count": 48,
"parent_folder_id": null
}
]
Get all documents in a folder by ID. Works for shared folders.
Input:
folder_id (required): The folder IDlimit (optional): Max documents to return (default: 50)Output:
{
"folder_title": "Folder Name",
"folder_id": "folder-uuid",
"total_documents": 48,
"returned_documents": 5,
"documents": [
{
"id": "doc-uuid",
"title": "Meeting Title",
"created_at": "2026-01-26T19:47:34.882Z",
"updated_at": "2026-01-27T13:42:44.165Z",
"type": "meeting",
"owner_id": "user-uuid"
}
]
}
Get full content of any document by ID (including shared documents).
Input:
document_id (required): The document IDOutput:
{
"id": "doc-uuid",
"title": "Meeting Title",
"owner_id": "user-uuid",
"workspace_id": "workspace-uuid",
"created_at": "2026-01-26T19:47:34.882Z",
"updated_at": "2026-01-27T13:42:44.165Z",
"type": "meeting",
"content": "### Meeting Notes\n\n- Key point 1\n- Key point 2",
"google_calendar_event": {
"summary": "Meeting Title",
"attendees": [...],
"start": {...},
"end": {...}
}
}
Get raw utterance-level transcript with timestamps and speaker sources.
Input:
document_id (required): The document IDOutput:
{
"document_id": "doc-uuid",
"utterance_count": 267,
"utterances": [
{
"source": "microphone",
"text": "Let me explain the proposal...",
"start": "2026-01-26T19:47:47.672Z",
"end": "2026-01-26T19:48:07.752Z"
},
{
"source": "system",
"text": "That sounds good.",
"start": "2026-01-26T19:48:08.030Z",
"end": "2026-01-26T19:48:09.190Z"
}
]
}
List all workspaces (organizations) you have access to.
Input: None
Output:
[
{
"workspace": {
"workspace_id": "workspace-uuid",
"slug": "company.com",
"display_name": "Company Name",
"plan_type": "business"
},
"role": "member"
}
]
# Build
npm run build
# Watch mode
npm run dev
# Run directly
npm start
MIT
Forked from btn0s/granola-mcp
Выполни в терминале:
claude mcp add granola-mcp-plus -- npx -y granola-mcp-pluspro-tip
Поставил Granola Mcp Plus? Скажи Claude: «запомни почему я установил Granola Mcp Plus и что хочу попробовать» — попадёт в твой Vault.
Безопасность
Низкий рискАвтоматическая эвристика по публичным данным — не гарантия безопасности.