MCP Fathom Server
Enables searching and retrieving meeting information from Fathom AI, including meeting titles, summaries, transcripts, and action items through natural language queries.
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., "@MCP Fathom ServerShow me meetings from last week about product launches"
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.
MCP Fathom Server
An MCP (Model Context Protocol) server that integrates with Fathom AI's meeting API, enabling Claude to search and retrieve meeting information through natural language queries.
🎯 Features
🔍 Smart Search: Natural language search across meeting titles, summaries, transcripts, and action items
📋 List Meetings: Retrieve meetings with various filters (attendees, date ranges, teams, etc.)
📝 Transcript Support: Optionally include full meeting transcripts in search results
⚡ Real-time: Direct integration with Fathom's API for up-to-date meeting data
🛡️ Secure: API key management through environment variables
Related MCP server: Fathom AI MCP Server
🚀 Quick Start
Prerequisites
Node.js 18 or higher
npm or yarn
A Fathom AI account with API access
Claude Desktop app
Installation
Clone and setup:
git clone https://github.com/sourcegate/mcp-fathom-server.git
cd mcp-fathom-server
npm install
npm run buildConfigure your API key:
cp .env.example .env
# Edit .env and add your Fathom API keyGet your Fathom API key:
Log in to Fathom
Go to Settings → API
Generate a new API key
Copy it to your
.envfile
Add to Claude Desktop:
Edit your Claude Desktop configuration file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"fathom": {
"command": "node",
"args": ["/absolute/path/to/mcp-fathom-server/dist/index.js"],
"env": {
"FATHOM_API_KEY": "your-api-key-here"
}
}
}
}Restart Claude Desktop and you're ready to go! 🎉
💬 Usage Examples
Once configured, you can ask Claude natural language questions about your meetings:
"Find me meetings about recruiting"
"Show me all external meetings from last week"
"Search for meetings where we discussed product launches"
"List meetings with john@example.com"
"Find meetings with action items about hiring"
"What did we discuss in our Q1 planning meetings?"Claude will automatically choose the right tool and search method based on your query.
🔧 Available Tools
list_meetings
Retrieves meetings with optional filters:
calendar_invitees: Filter by attendee emailscalendar_invitees_domains: Filter by company domainscreated_after/created_before: Date range filtersmeeting_type: all, internal, or externalinclude_transcript: Include full transcriptsrecorded_by: Filter by meeting ownerteams: Filter by team names
search_meetings
Searches meetings by keywords:
search_term: The keyword/phrase to search forinclude_transcript: Search within transcripts (slower but more comprehensive)
🛠️ Development
# Run in development mode
npm run dev
# Build for production
npm run build
# Test with MCP Inspector
npx @modelcontextprotocol/inspector dist/index.js🐛 Troubleshooting
Issue | Solution |
Server won't start | Check that your API key is correctly set |
No results found | Try broader search terms or check your API key permissions |
Rate limiting | The server handles this automatically - wait a moment and try again |
Claude can't find tools | Ensure Claude Desktop is restarted after config changes |
📄 License
MIT License - see LICENSE file for details.
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
🙋♀️ Support
If you encounter any issues:
Check the troubleshooting section
Search existing GitHub issues
Create a new issue with detailed information about your problem
Status: Tested and working with GitHub integration ✓
Built for fun by @petesena ❤️
Available Tools
2 toolslist_meetingsB
List Fathom meetings with optional filters. Returns meeting titles, summaries, dates, and participants.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of meetings to return | |
| teams | No | Filter by team names | |
| recorded_by | No | Filter by meeting owner email addresses | |
| meeting_type | No | Filter by meeting type | all |
| created_after | No | Filter meetings created after this date (ISO 8601) | |
| created_before | No | Filter meetings created before this date (ISO 8601) | |
| calendar_invitees | No | Filter by attendee email addresses | |
| include_transcript | No | Include meeting transcripts | |
| calendar_invitees_domains | No | Filter by company domains |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavior. It implies a read-only listing operation but does not explicitly state it is non-destructive, require authentication, or any rate limits. The return fields are mentioned, providing some transparency.
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?
The description is concise at two sentences, front-loading the action and return information. There is no fluff, and it is easy to parse.
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?
Given 9 optional parameters and no output schema, the description covers the basic purpose and return values but does not explain filter usage or output structure. It is adequate but not thorough.
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?
Schema coverage is 100%, so baseline is 3. The description only generically mentions 'optional filters' without adding any meaning to individual parameters beyond what the schema already provides. No extra context is given.
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?
The description clearly states it lists Fathom meetings with optional filters and specifies the return fields (titles, summaries, dates, participants). However, it does not differentiate from the sibling tool 'search_meetings', leaving ambiguity about when to use each.
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?
The description provides no guidance on when to use this tool versus alternatives like 'search_meetings'. It also does not mention any prerequisites, limitations, or context for filters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_meetingsA
Search for meetings containing keywords in titles, summaries, or action items. NOTE: Searches last 30 days only. For better performance, transcript search is disabled by default.
| Name | Required | Description | Default |
|---|---|---|---|
| search_term | Yes | Search term to find in meeting titles, summaries, or action items | |
| include_transcript | No | Whether to search within transcripts (WARNING: Currently disabled for performance) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It discloses the 30-day limit and disabled transcript search, but does not mention authentication needs, rate limits, pagination, or result ordering. The performance warning is useful but insufficient for full transparency.
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?
Two sentences, each earning its place: first states purpose and fields, second adds critical usage constraints. No redundant or vague language. Front-loaded with the core action.
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?
The tool lacks an output schema, yet the description does not mention what the search returns (e.g., a list of meeting objects, limited fields). It also does not specify the maximum number of results or sort order. Given the low complexity (2 params) and absence of output schema, the description should provide more details about the response format to be complete.
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?
Schema description coverage is 100%, so baseline is 3. The description adds context by mentioning the search fields (titles, summaries, action items) and the performance note about transcript search, which aligns with the schema descriptions. No additional syntax or usage details are provided beyond what the schema already states.
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?
The description clearly states the verb 'Search' and the resource 'meetings', specifying the fields (titles, summaries, action items) and the 30-day time constraint. It implicitly distinguishes from sibling tool 'list_meetings' which likely returns all meetings without keyword filtering.
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?
Provides explicit context: searches only last 30 days and transcript search is disabled by default for performance. While it doesn't explicitly state when not to use or name alternatives, the context is clear enough for an agent to decide against using it for older meetings or when transcript search is needed.
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. Dates show when Glama detected each change.
2 tool updates
v1.0.0- First observed
list_meetings - First observed
search_meetings
TDQS
list_meetings and search_meetings have clearly distinct purposes: one filters and lists meetings, the other performs keyword search. No ambiguity.
Both tools use consistent verb_noun pattern: list_meetings and search_meetings. Naming is predictable and clear.
With only 2 tools, the server is minimal but appears focused on read operations for meeting data. The count is slightly low but appropriate for its narrow scope.
The set covers listing and searching meetings, which covers common read operations. However, there is no tool to retrieve a specific meeting by ID, a minor gap.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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 read your Laxis meeting transcripts, AI summaries, and participants from Claude.
Search recordings, summarize meetings, create clips, and automate workflows from your AI assistant.
Related MCP Servers
- 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.10281MIT
- AlicenseNot gradedqualityCmaintenanceExposes the Fathom AI meeting intelligence API to Claude, allowing users to list meetings, fetch transcripts, and retrieve summaries. It also enables management of teams and members through the Model Context Protocol.52MIT
- AlicenseNot gradedqualityBmaintenanceEnables Claude to access your Fathom meetings, transcripts, and AI summaries.2816MIT
- AlicenseAqualityAmaintenanceEnables Claude Desktop and MCP clients to access Fathom meeting intelligence, including listing meetings, retrieving summaries and transcripts, and searching by title.454MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/sourcegate/mcp-fathom-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server