Skip to main content
Glama

Fathom MCP Server

README.md7.53 kB
# 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 ID - **`fathom_get_transcript`** - Get meeting transcript with speaker information and timestamps - **`fathom_list_teams`** - List all teams in the organization - **`fathom_list_team_members`** - List team members for a specific team ## Architecture - **Framework**: Next.js 15 with App Router - **MCP Adapter**: [mcp-handler](https://www.npmjs.com/package/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 ```bash git clone <your-repo-url> cd fathom-mcp-server npm install ``` ### 2. Environment Setup Copy the environment template and add your Fathom API key: ```bash cp .env.example .env.local ``` Edit `.env.local`: ``` FATHOM_API_KEY=your_fathom_api_key_here ``` Get your API key from [Fathom Settings](https://app.fathom.video/settings/api). ### 3. Local Development ```bash npm run dev ``` The MCP server will be available at `http://localhost:3000/api/mcp` ### 4. Deploy to Vercel [![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/your-username/fathom-mcp-server) Or deploy manually: ```bash 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: ```json { "mcpServers": { "fathom": { "url": "https://fathom-mcp.vercel.app/api/mcp", "auth": { "type": "bearer", "token": "YOUR_FATHOM_API_KEY" } } } } ``` **Configuration Steps:** 1. Replace `YOUR_FATHOM_API_KEY` with your actual Fathom AI API key 2. The API key is passed as a Bearer token in the Authorization header 3. This keeps the API key client-side controlled and secure ### Claude Desktop Add to your `claude_desktop_config.json`: ```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`: ```json { "mcpServers": { "fathom": { "url": "https://your-app.vercel.app/api/mcp" } } } ``` ## Tool Usage Examples ### List Recent Meetings ```json { "name": "fathom_list_meetings", "arguments": { "created_after": "2024-01-01T00:00:00Z", "include_summary": true, "limit": 10 } } ``` ### Get Meeting Transcript ```json { "name": "fathom_get_transcript", "arguments": { "recording_id": 123456789 } } ``` ### Filter Meetings by Team ```json { "name": "fathom_list_meetings", "arguments": { "teams": ["Engineering", "Product"], "include_action_items": true } } ``` ### List Team Members ```json { "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 by - `calendar_invitees_domains` (string[]): Company domains to filter by - `calendar_invitees_domains_type` (enum): Filter by external domains - `created_after` (string): ISO 8601 timestamp - `created_before` (string): ISO 8601 timestamp - `include_transcript` (boolean): Include transcript data - `include_summary` (boolean): Include summary data - `include_action_items` (boolean): Include action items - `include_crm_matches` (boolean): Include CRM matches - `limit` (number): Max results (1-100) - `cursor` (string): Pagination cursor - `recorded_by` (string[]): Filter by recorder emails - `teams` (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 ID - `cursor` (string): Optional pagination cursor ## Error Handling The server includes comprehensive error handling: - **Missing API Key**: Clear error message if `FATHOM_API_KEY` is 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: ```bash # 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 ```bash npm run type-check ``` ## Troubleshooting ### Common Issues 1. **"FATHOM_API_KEY environment variable is required"** - Ensure you've set the environment variable in `.env.local` (local) or Vercel dashboard (production) 2. **"Fathom API Error (401)"** - Check that your API key is valid and has the correct permissions 3. **"Fathom API Error (429)"** - You've hit Fathom's rate limit. Wait before making more requests 4. **CORS errors in browser** - The server includes proper CORS headers. If issues persist, check your client configuration ### Debug Mode Enable verbose logging in development: ```bash NODE_ENV=development npm run dev ``` ## Contributing 1. Fork the repository 2. Create a feature branch 3. Make your changes 4. Add tests if applicable 5. Submit a pull request ## License MIT License - see LICENSE file for details. ## Support - **Fathom API Documentation**: [developers.fathom.ai](https://developers.fathom.ai) - **MCP Specification**: [modelcontextprotocol.io](https://modelcontextprotocol.io) - **Issues**: Create an issue in this repository

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/bondjacobbond/fathom-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server