Fathom MCP Server
Enables 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.
README
Fathom MCP Server
A Model Context Protocol (MCP) server that provides AI agents with access to Fathom AI meeting data, including transcripts, summaries, teams, and team members.
Features
This MCP server exposes 5 tools for interacting with Fathom AI:
fathom_list_meetings- List meetings with optional filters (date ranges, invitees, teams, etc.)fathom_get_summary- Get meeting summary by recording IDfathom_get_transcript- Get meeting transcript with speaker information and timestampsfathom_list_teams- List all teams in the organizationfathom_list_team_members- List team members for a specific team
Architecture
- Framework: Next.js 15 with App Router
- MCP Adapter: mcp-handler (Vercel's official MCP adapter)
- Transport: Supports both Streamable HTTP and Server-Sent Events (SSE)
- Deployment: Vercel with automatic HTTPS and global CDN
- Type Safety: Full TypeScript support with Zod validation
Quick Start
1. Clone and Install
git clone <your-repo-url>
cd fathom-mcp-server
npm install
2. Environment Setup
Copy the environment template and add your Fathom API key:
cp .env.example .env.local
Edit .env.local:
FATHOM_API_KEY=your_fathom_api_key_here
Get your API key from Fathom Settings.
3. Local Development
npm run dev
The MCP server will be available at http://localhost:3000/api/mcp
4. Deploy to Vercel
Or deploy manually:
npm install -g vercel
vercel
Add your FATHOM_API_KEY environment variable in the Vercel dashboard.
Client Integration
OpenAI AgentKit
Connect directly to the HTTP endpoint with Bearer token authentication:
{
"mcpServers": {
"fathom": {
"url": "https://fathom-mcp.vercel.app/api/mcp",
"auth": {
"type": "bearer",
"token": "YOUR_FATHOM_API_KEY"
}
}
}
}
Configuration Steps:
- Replace
YOUR_FATHOM_API_KEYwith your actual Fathom AI API key - The API key is passed as a Bearer token in the Authorization header
- This keeps the API key client-side controlled and secure
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"fathom": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://fathom-mcp.vercel.app/api/mcp"
]
}
}
}
Config file locations:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\\Claude\\claude_desktop_config.json
Cursor
Add to your ~/.cursor/mcp.json:
{
"mcpServers": {
"fathom": {
"url": "https://your-app.vercel.app/api/mcp"
}
}
}
Tool Usage Examples
List Recent Meetings
{
"name": "fathom_list_meetings",
"arguments": {
"created_after": "2024-01-01T00:00:00Z",
"include_summary": true,
"limit": 10
}
}
Get Meeting Transcript
{
"name": "fathom_get_transcript",
"arguments": {
"recording_id": 123456789
}
}
Filter Meetings by Team
{
"name": "fathom_list_meetings",
"arguments": {
"teams": ["Engineering", "Product"],
"include_action_items": true
}
}
List Team Members
{
"name": "fathom_list_team_members",
"arguments": {
"team_id": "team_123"
}
}
API Reference
fathom_list_meetings
List meetings with optional filters.
Parameters:
calendar_invitees(string[]): Email addresses to filter bycalendar_invitees_domains(string[]): Company domains to filter bycalendar_invitees_domains_type(enum): Filter by external domainscreated_after(string): ISO 8601 timestampcreated_before(string): ISO 8601 timestampinclude_transcript(boolean): Include transcript datainclude_summary(boolean): Include summary datainclude_action_items(boolean): Include action itemsinclude_crm_matches(boolean): Include CRM matcheslimit(number): Max results (1-100)cursor(string): Pagination cursorrecorded_by(string[]): Filter by recorder emailsteams(string[]): Filter by team names
fathom_get_summary
Get meeting summary by recording ID.
Parameters:
recording_id(number): The recording ID
fathom_get_transcript
Get meeting transcript with speaker information.
Parameters:
recording_id(number): The recording ID
fathom_list_teams
List all teams in the organization.
Parameters:
cursor(string): Optional pagination cursor
fathom_list_team_members
List team members for a specific team.
Parameters:
team_id(string): The team IDcursor(string): Optional pagination cursor
Error Handling
The server includes comprehensive error handling:
- Missing API Key: Clear error message if
FATHOM_API_KEYis not set - Fathom API Errors: Properly formatted error responses with status codes
- Rate Limiting: Graceful handling of 429 responses
- Input Validation: Zod schemas validate all tool inputs
- Network Errors: Timeout and connection error handling
Security Considerations
- HTTPS Only: Vercel provides automatic TLS certificates
- CORS Headers: Configured for OpenAI's infrastructure
- API Key Security: Stored in environment variables, never committed
- Input Validation: All inputs validated with Zod schemas
- Rate Limiting: Respects Fathom API rate limits
Development
Project Structure
├── app/
│ └── api/
│ └── [transport]/
│ └── route.ts # MCP route handler
├── lib/
│ └── fathom-client.ts # Fathom API client
├── .env.example # Environment template
├── vercel.json # Vercel configuration
└── README.md # This file
Testing
Test the MCP server locally:
# Start the development server
npm run dev
# Test with curl
curl -X POST http://localhost:3000/api/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list"
}'
Type Checking
npm run type-check
Troubleshooting
Common Issues
-
"FATHOM_API_KEY environment variable is required"
- Ensure you've set the environment variable in
.env.local(local) or Vercel dashboard (production)
- Ensure you've set the environment variable in
-
"Fathom API Error (401)"
- Check that your API key is valid and has the correct permissions
-
"Fathom API Error (429)"
- You've hit Fathom's rate limit. Wait before making more requests
-
CORS errors in browser
- The server includes proper CORS headers. If issues persist, check your client configuration
Debug Mode
Enable verbose logging in development:
NODE_ENV=development npm run dev
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
License
MIT License - see LICENSE file for details.
Support
- Fathom API Documentation: developers.fathom.ai
- MCP Specification: modelcontextprotocol.io
- Issues: Create an issue in this repository
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.