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
