Skip to main content
Glama
matthewbergvinson

Fathom MCP Server

get_transcript

Retrieve AI-generated meeting transcripts from Fathom.video recordings using the recording ID to access conversation content.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
recording_idYesThe recording ID of the meeting

Implementation Reference

  • The core execution logic (handler function) for the MCP 'get_transcript' tool. It fetches the transcript using the FathomClient and formats it to Markdown before returning as text content.
    async ({ recording_id }) => {
      console.error(`Fetching transcript for ${recording_id}...`);
      
      const response = await fathom.getTranscript(recording_id);
      const markdown = formatTranscriptToMarkdown(response.transcript);
      
      console.error('Transcript retrieved');
      return {
        content: [{ type: 'text', text: markdown }],
      };
    }
  • Input schema definition for the 'get_transcript' tool using Zod, requiring a numeric recording_id.
    {
      recording_id: z.number().describe('The recording ID of the meeting'),
    },
  • src/index.ts:127-143 (registration)
    Registration of the 'get_transcript' MCP tool on the McpServer instance, including name, input schema, and handler reference.
    server.tool(
      'get_transcript',
      {
        recording_id: z.number().describe('The recording ID of the meeting'),
      },
      async ({ recording_id }) => {
        console.error(`Fetching transcript for ${recording_id}...`);
        
        const response = await fathom.getTranscript(recording_id);
        const markdown = formatTranscriptToMarkdown(response.transcript);
        
        console.error('Transcript retrieved');
        return {
          content: [{ type: 'text', text: markdown }],
        };
      }
    );
  • FathomClient helper method that makes the API request to retrieve the transcript for a specific recording ID.
    async getTranscript(recordingId: number): Promise<TranscriptResponse> {
      return this.request<TranscriptResponse>(`/recordings/${recordingId}/transcript`);
    }
  • Utility function to format the raw transcript array into readable Markdown with speaker labels and timestamps.
    export function formatTranscriptToMarkdown(transcript: TranscriptItem[]): string {
      if (!transcript || transcript.length === 0) {
        return '_No transcript available_';
      }
    
      const lines: string[] = [];
      let currentSpeaker = '';
    
      for (const item of transcript) {
        const speakerName = item.speaker.display_name || 'Unknown Speaker';
        
        // Add speaker header when speaker changes
        if (speakerName !== currentSpeaker) {
          currentSpeaker = speakerName;
          lines.push('');
          lines.push(`**${speakerName}** _[${formatTimestamp(item.timestamp)}]_`);
        }
        
        lines.push(`> ${item.text}`);
      }
    
      return lines.join('\n');
    }

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/matthewbergvinson/fathom-mcp'

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