Skip to main content
Glama
EoinFalconer

Granola MCP Server

by EoinFalconer

get_meeting_details

Retrieve detailed meeting information including notes, transcripts, and organization data from Granola.ai meeting intelligence platform using a meeting ID.

Instructions

Get detailed information about a specific meeting

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
meeting_idYesMeeting ID to retrieve details for

Implementation Reference

  • Complete implementation of get_meeting_details tool including schema registration (name, description, parameters) and execute handler function that retrieves meeting details from cache and formats them
    // Tool: get_meeting_details server.addTool({ name: 'get_meeting_details', description: 'Get detailed information about a specific meeting', parameters: z.object({ meeting_id: z.string().describe('Meeting ID to retrieve details for') }), execute: async ({ meeting_id }) => { await ensureDataLoaded(); const doc = documentsCache.get(meeting_id); if (!doc) { return `Meeting '${meeting_id}' not found`; } const details: string[] = [ `# Meeting Details: ${getTitle(doc)}\n`, `**ID:** ${doc.id}`, `**Date:** ${formatDate(doc.created_at)}`, `**Updated:** ${formatDate(doc.updated_at)}` ]; if (doc.workspace_name) { details.push(`**Workspace:** ${doc.workspace_name}`); } if (doc.folders && doc.folders.length > 0) { const folderNames = doc.folders.map(f => f.name).join(', '); details.push(`**Folders:** ${folderNames}`); } if (doc.people && doc.people.length > 0) { const people = doc.people.map(p => p.name).join(', '); details.push(`**Participants:** ${people}`); } return details.join('\n'); } });
  • Input parameter schema definition using Zod - requires a meeting_id string parameter
    parameters: z.object({ meeting_id: z.string().describe('Meeting ID to retrieve details for') }),
  • GranolaDocument interface type definition that defines the structure of meeting data retrieved and displayed by get_meeting_details
    export interface GranolaDocument { id: string; title: string; created_at: string; updated_at: string; workspace_id?: string; workspace_name?: string; folders?: FolderInfo[]; last_viewed_panel?: DocumentPanel; people?: Array<{ name: string }>; [key: string]: any; }
  • ensureDataLoaded and loadData helper functions that populate the documentsCache with meeting data before the tool executes
    async function ensureDataLoaded() { const now = Date.now(); if (documentsCache.size === 0 || (now - lastFetchTime) > CACHE_TTL) { await loadData(); } } /** * Load data from Granola API */ async function loadData() { console.error('Fetching data from Granola API...'); const data = await apiClient.getAllDocumentsWithMetadata(); if (!data) { console.error('Failed to fetch data from API'); return; } // Update caches documentsCache.clear(); for (const doc of data.documents) { documentsCache.set(doc.id, doc); } workspacesCache = data.workspaces; foldersCache = data.documentLists; lastFetchTime = Date.now(); console.error(`Loaded ${documentsCache.size} documents from API`); }
  • Helper functions formatDate and getTitle used by get_meeting_details to format meeting dates and extract titles safely
    /** * Format date in local timezone */ function formatDate(dateStr: string | null | undefined): string { if (!dateStr) return 'Unknown date'; try { const date = new Date(dateStr); return date.toLocaleString('en-US', { year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', hour12: false }); } catch { return dateStr; } } /** * Safe string for searching (handles null/undefined) */ function safeString(str: string | null | undefined): string { return str || ''; } /** * Get document title safely */ function getTitle(doc: GranolaDocument): string { return doc.title || 'Untitled Meeting'; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/EoinFalconer/granola-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server