Fathom MCP Server
Click on "Deploy 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 MCP Serverget the transcript from yesterday's meeting with the design team"
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
MCP server for Fathom.video — Access your AI meeting transcripts, summaries, and action items directly from Cursor IDE
A Model Context Protocol (MCP) server that integrates Fathom.video with AI coding assistants like Cursor. Query your meeting transcripts, export recordings to markdown, search by participant, and manage webhooks — all through natural language.
Features
📋 List & Search Meetings — Browse recordings with filters for date, team, participants, or external domains
📝 Full Transcripts — Get speaker-labeled, timestamped transcripts formatted as markdown
📊 AI Summaries — Access Fathom's AI-generated meeting summaries
✅ Action Items — Pull action items from specific meetings or across recent calls
📁 Export to Markdown — Save meetings as
MeetingTitle_YYYY-MM-DD.mdfiles👥 Team Management — List teams and team members
🔔 Webhooks — Create and manage webhooks for real-time notifications
Related MCP server: Fathom MCP Server
Quick Start
1. Get Your Fathom API Key
Go to Fathom Settings
Navigate to API Access
Click Generate API Key
2. Install the MCP Server
git clone https://github.com/matthewbergvinson/fathom-mcp.git
cd fathom-mcp
npm install
npm run build3. Configure Cursor
Add to your ~/.cursor/mcp.json:
{
"mcpServers": {
"fathom": {
"command": "node",
"args": ["/path/to/fathom-mcp/dist/index.js"],
"env": {
"FATHOM_API_KEY": "your-api-key-here",
"FATHOM_OUTPUT_DIR": "/path/to/export/transcripts"
}
}
}
}Note: Replace
/path/to/fathom-mcpwith the actual path where you cloned the repo, and add your Fathom API key.
4. Restart Cursor
Restart Cursor to load the MCP server. You can now use natural language to interact with your Fathom data:
"List my last 5 Fathom meetings"
"Get the transcript from my call with John"
"Export yesterday's meetings to markdown"
"Show me action items from this week"
Available Tools
Meeting Operations
Tool | Description |
| List meetings with filters (date, team, external-only) |
| Get full meeting details including transcript, summary, actions |
| Get just the transcript formatted as markdown |
| Search by participant email, company domain, or team |
Export Operations
Tool | Description |
| Export single meeting to |
| Bulk export meetings with optional date filters |
Action Items
Tool | Description |
| Get action items from a specific meeting or recent calls |
Team Management
Tool | Description |
| List all teams in your organization |
| List team members (optionally filtered by team) |
Webhooks
Tool | Description |
| Create webhook for new meeting notifications |
| Delete an existing webhook |
Tool Parameters
Parameter | Type | Description |
| number | Max meetings to return (0 = all) |
| string | ISO 8601 timestamp filter |
| string | ISO 8601 timestamp filter |
| boolean | Only meetings with external participants |
Parameter | Type | Required | Description |
| number | Yes | The meeting's recording ID |
| boolean | No | Include transcript (default: true) |
| boolean | No | Include AI summary (default: true) |
| boolean | No | Include action items (default: true) |
| boolean | No | Include CRM data (default: true) |
Parameter | Type | Description |
| string[] | Filter by participant emails |
| string[] | Filter by company domains (e.g., |
| string[] | Filter by team names |
| string | ISO 8601 timestamp |
| string | ISO 8601 timestamp |
Parameter | Type | Description |
| number | Meeting to export (export_meeting only) |
| string | Only export after this date |
| string | Only export before this date |
| string | Custom output directory |
Parameter | Type | Required | Description |
| string | Yes | Webhook endpoint URL |
| boolean | No | Include transcript in payload |
| boolean | No | Include summary in payload |
| boolean | No | Include action items |
| boolean | No | Include CRM data |
| string[] | No | Recording types that trigger webhook |
Exported Transcript Format
Exported meetings are saved as markdown with:
Metadata table — Date, duration, participants, Fathom links
AI Summary — Fathom's generated summary
Action Items — With assignees and completion status
Full Transcript — Speaker-labeled with timestamps
Example filename: Quarterly_Business_Review_2024-12-01.md
# Quarterly Business Review
## Meeting Details
| Field | Value |
|-------|-------|
| **Date** | Sunday, December 1, 2024 at 10:00 AM |
| **Duration** | 45m 32s |
| **Recorded by** | Jane Smith <jane@company.com> |
## Participants
- **John Doe** <john@client.com> _(external)_
- **Jane Smith** <jane@company.com>
## Summary
> Key discussion points and outcomes...
## Action Items
- [ ] Follow up on proposal _(assigned to Jane)_
- [x] Send meeting notes
## Transcript
**John Doe** _[00:00:15]_
> Thanks for joining today...Rate Limits
The Fathom API allows 60 requests per minute. The MCP server handles this gracefully.
Security
API keys are stored in Cursor's MCP configuration (not in code)
Never commit your
mcp.jsonor API keys to version controlWebhook secrets should be stored securely
Troubleshooting
MCP not loading?
Ensure you've restarted Cursor after editing
mcp.jsonCheck the path to
dist/index.jsis correctVerify your API key is valid
"fetch failed" errors?
Ensure you're using Node.js 18 or higher
Check your network connection
Verify API key permissions in Fathom settings
Development
# Install dependencies
npm install
# Build TypeScript
npm run build
# Watch mode for development
npm run devLicense
MIT License — see LICENSE for details.
Author
Matthew Bergvinson
Vigilante Consulting
Need Custom AI Tools Built Fast?
We build production-ready MCP servers, AI integrations, and automation tools for businesses.
📧 operations@vigilanteconsulting.com
This MCP server is not officially affiliated with Fathom Video, Inc.
Available Tools
11 toolscreate_webhookD
| Name | Required | Description | Default |
|---|---|---|---|
| destination_url | Yes | URL to receive webhook events | |
| include_transcript | No | Include transcript in webhook payload | |
| include_summary | No | Include summary in webhook payload | |
| include_action_items | No | Include action items in webhook payload | |
| include_crm_matches | No | Include CRM matches in webhook payload | |
| triggered_for | No | Which recordings trigger the webhook |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_webhookD
| Name | Required | Description | Default |
|---|---|---|---|
| webhook_id | Yes | The ID of the webhook to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_all_meetingsD
| Name | Required | Description | Default |
|---|---|---|---|
| created_after | No | ISO 8601 timestamp - only export meetings after this date | |
| created_before | No | ISO 8601 timestamp - only export meetings before this date | |
| output_dir | No | Directory to save files (defaults to workspace/transcripts) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_meetingD
| Name | Required | Description | Default |
|---|---|---|---|
| recording_id | Yes | The recording ID of the meeting to export | |
| output_dir | No | Directory to save the file (defaults to workspace/transcripts) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_action_itemsD
| Name | Required | Description | Default |
|---|---|---|---|
| recording_id | No | Get action items from a specific meeting | |
| include_completed | No | Include completed action items (default: true) | |
| limit | No | Number of recent meetings to check if no recording_id (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_meetingD
| Name | Required | Description | Default |
|---|---|---|---|
| recording_id | Yes | The recording ID of the meeting to retrieve | |
| include_transcript | No | Include the full transcript (default: true) | |
| include_summary | No | Include the AI summary (default: true) | |
| include_action_items | No | Include action items (default: true) | |
| include_crm_matches | No | Include CRM matches (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transcriptD
| Name | Required | Description | Default |
|---|---|---|---|
| recording_id | Yes | The recording ID of the meeting |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_meetingsD
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of meetings to return (default: 10, use 0 for all) | |
| created_after | No | ISO 8601 timestamp - only return meetings after this date | |
| created_before | No | ISO 8601 timestamp - only return meetings before this date | |
| include_external_only | No | Only include meetings with external participants |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_team_membersD
| Name | Required | Description | Default |
|---|---|---|---|
| team | No | Filter by team name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_teamsD
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_meetingsD
| Name | Required | Description | Default |
|---|---|---|---|
| participant_emails | No | Email addresses of participants to search for | |
| domains | No | Company domains to search for (e.g., acme.com) | |
| teams | No | Team names to filter by | |
| created_after | No | ISO 8601 timestamp | |
| created_before | No | ISO 8601 timestamp |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
11 tool updates
- First observed
create_webhook - First observed
delete_webhook - First observed
export_all_meetings - First observed
export_meeting - First observed
get_action_items - First observed
get_meeting - First observed
get_transcript - First observed
list_meetings - First observed
list_team_members - First observed
list_teams - First observed
search_meetings
TDQS
Scored across 11 tools
Each tool has a clearly distinct purpose targeting specific resources and actions in the Fathom meeting/team domain. There is no overlap between tools like get_meeting, list_meetings, search_meetings, export_meeting, and export_all_meetings, as they serve different functions (retrieval, listing, searching, exporting).
All tool names follow a consistent verb_noun pattern with snake_case throughout, such as create_webhook, delete_webhook, list_meetings, and get_transcript. This predictability makes it easy for agents to understand and use the toolset without confusion.
With 11 tools, the server is well-scoped for managing meetings, transcripts, action items, teams, and webhooks in the Fathom domain. Each tool earns its place by covering essential operations without being overly sparse or bloated.
The toolset provides comprehensive coverage for core meeting and team management workflows, including CRUD-like operations (e.g., get, list, search, export, create/delete webhooks). A minor gap might be the lack of update or delete tools for meetings or teams, but agents can likely work around this with the existing tools.
Maintenance
Related MCP Connectors
Connect Claude to Fathom meeting recordings, transcripts, and summaries
- mcpOAuthai.fathom.api
Give your AI assistant real meeting context via Fathom so every output grounded in your work
Search and analyze meeting transcripts, summaries, soundbites and analytics from Fireflies.ai
Search meetings, export summaries and transcripts, and manage recordings from any AI tool.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to access Fathom AI meeting data including transcripts, summaries, teams, and team members. Provides tools to list meetings with filters, retrieve detailed transcripts and summaries, and manage team information.11 npmMIT
- AlicenseAqualityDmaintenanceEnables LLMs to interact with Fathom.video API for managing meeting recordings, retrieving transcripts and AI-generated summaries, searching meeting content, and accessing analytics and team data.1011 npm1MIT
- AlicenseAqualityDmaintenanceEnables Claude to search and retrieve meeting information from Fathom AI through natural language queries.28MIT
- AlicenseNot gradedqualityDmaintenanceProvides AI assistants access to Fathom meeting recordings, summaries, and transcripts via tools like list_meetings, get_meeting_summary, and get_meeting_transcript.MIT