This server provides read-only access to Fathom AI meeting data through a Model Context Protocol (MCP) interface with five specialized tools:
• List Meetings: Retrieve paginated meetings with extensive filtering options (by teams, invitees, domains, recorders, date ranges) and optionally include transcripts, summaries, action items, and CRM matches • Get Meeting Summary: Fetch markdown summaries for specific recordings with support for synchronous returns or asynchronous callbacks • Get Meeting Transcript: Retrieve timestamped speaker transcripts for recordings with flexible synchronous and asynchronous delivery • List Teams: Access paginated lists of teams associated with the account • List Team Members: Retrieve team members with optional filtering by team name and pagination support
The server is optimized for minimal API consumption with filtered JSON output for improved readability and LLM processing.
Provides access to Fathom AI API endpoints for managing meeting data, including retrieving meetings with filtering options, accessing transcripts and summaries for recordings, and managing teams and team members.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Fathom-Simple-MCPsearch for meetings about budget planning"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Fathom MCP Server
A Model Context Protocol (MCP) server for accessing Fathom.video meeting recordings, transcripts, summaries, teams, and team members.
This implementation provides streamlined access to Fathom meeting data while minimizing API consumption. It is optimized for efficiency and simplicity, using the Toon output format for less token usage and better LLM processing.
Features
Search Meetings: Search meetings by keyword across titles, attendees, teams, topics, and summaries. Optionally search within transcripts.
List Meetings: Retrieve meetings with optional filtering and inclusion of summaries
Get Meeting Details: Retrieve comprehensive meeting data including AI-generated summaries and transcripts
List Teams: Retrieve all teams
List Team Members: Retrieve team members with optional team filtering
Requirements
Python 3.10+
Fathom API key
Installation
Clone or download this repository
Install dependencies:
or
Configuration
The server uses environment variables for configuration:
FATHOM_API_KEY: Your Fathom API key (required)FATHOM_TIMEOUT: Request timeout in seconds (default: 30)OUTPUT_FORMAT: Output format for tool responses ("toon" or "json", default: "toon")DEFAULT_PER_PAGE: Number of results per page (default: 50)
Usage
Direct Python Execution (Recommended)
Using UV
Available Tools
list_meetings
Retrieve meetings with optional filtering and pagination.
Properties:
calendar_invitees(list[str], optional): Filter by invitee emailscalendar_invitees_domains(list[str], optional): Filter by domainscreated_after(str, optional): ISO timestamp filtercreated_before(str, optional): ISO timestamp filtercursor(str, optional): Pagination cursorinclude_action_items(bool, optional): Include action itemsinclude_crm_matches(bool, optional): Include CRM matchesper_page(int, optional): Number of results per page (default: 50, configurable via DEFAULT_PER_PAGE env var)recorded_by(list[str], optional): Filter by recorder emailsteams(list[str], optional): Filter by team names
search_meetings
Search meetings by keyword across titles, participants, teams, topics, summaries, and optionally transcripts.
Properties:
query(str, required): Search query to match against meeting metadata and optionally transcript contentinclude_transcript(bool, optional): If True, search within transcripts and include them in results (default: False). Warning: This is slower and more resource-intensive.
Returns: A search results object containing:
items: List of matching meetings with full meeting details (and transcripts if requested)query: The search query usedtotal_matches: Number of meetings that matched the searchsearched_transcripts: Boolean indicating whether transcripts were searched
Examples:
search_meetings("McDonalds")- Search metadata only (fast)search_meetings("budget discussion", include_transcript=True)- Search including full transcripts (slower)search_meetings("engineering")- Find meetings related to engineering topics
get_meeting_details
Retrieve comprehensive meeting details including summary and metadata (without transcript).
Properties:
recording_id(int): The recording identifier
Returns: A unified meeting object containing:
recording_id: Unique identifier for the recordingtitle: Meeting titlemeeting_url: URL to the meeting recordingshare_url: Shareable URL for the meetingcreated_at: When the meeting was createdscheduled_start_time: Original scheduled start timescheduled_end_time: Original scheduled end timerecording_start_time: When recording actually startedrecording_end_time: When recording actually endedtranscript_language: Language of the transcriptparticipants: List of meeting participants with names, emails, and external/internal statusrecorded_by: Information about who recorded the meeting (name, email, team)teams: Teams associated with the meetingtopics: AI-detected topics discussedsentiment: Overall sentiment analysiscrm_matches: CRM contact matchessummary: AI-generated meeting summary (converted to plain text from markdown)
get_meeting_transcript
Retrieve meeting transcript with essential metadata (id, title, participants, dates).
Properties:
recording_id(int): The recording identifier
Returns: A transcript object containing:
recording_id: Unique identifier for the recordingtitle: Meeting titleparticipants: List of meeting participantscreated_at: When the meeting was createdscheduled_start_time: Original scheduled start timescheduled_end_time: Original scheduled end timetranscript: Full meeting transcript with timestamps
list_teams
Retrieve teams with optional pagination.
Properties:
cursor(str, optional): Pagination cursorper_page(int, optional): Number of results per page (default: 50, configurable via DEFAULT_PER_PAGE env var)
list_team_members
Retrieve team members with optional filtering and pagination.
Properties:
cursor(str, optional): Pagination cursorper_page(int, optional): Number of results per page (default: 50, configurable via DEFAULT_PER_PAGE env var)team(str, optional): Filter by team name
MCP Configuration Examples
Claude Code
GitHub Copilot (VS Code)
Roo Code
Output Format
The server supports two output formats configured via the OUTPUT_FORMAT environment variable:
TOON (default): Token-Optimized Object Notation - optimized for LLM processing with reduced token usage
JSON: Standard JSON format with indentation for human readability
All output is filtered to remove empty, null, or redundant information for improved efficiency.
Error Handling
The server provides comprehensive error handling:
401 Unauthorized: Invalid API key
404 Not Found: Resource not found
429 Rate Limited: Too many requests
500 Server Error: Fathom API issues
All errors are logged via MCP context with appropriate severity levels.
Security
API keys are loaded from environment variables
No sensitive data is logged
HTTPS is used for all API requests
Error messages don't expose internal details
License
MIT License.