A Model Context Protocol (MCP) server for interacting with the Fathom AI API. This server provides tools for accessing meeting recordings, summaries, transcripts, teams, and webhooks.
git clone https://github.com/Dot-Fun/fathom-mcp.git cd fathom-mcp uv pip install fastmcp httpx pydantic export FATHOM_API_KEY="your_api_key_here" fastmcp run server.py- list_meetings: List meetings with advanced filtering (by participants, date ranges, teams) and optional inclusion of transcripts, summaries, action items, and CRM matches
- get_summary: Retrieve meeting summaries (supports async delivery)
- get_transcript: Retrieve meeting transcripts with speaker information and timestamps (supports async delivery)
- list_teams: List all accessible teams
- list_team_members: List team members with optional team filtering
- create_webhook: Create webhooks for meeting notifications with customizable triggers and content inclusion
- delete_webhook: Delete webhooks by ID
- fathom://api/info: API information and available endpoints
- fathom://api/rate-limits: Rate limiting information and best practices
-
Clone this repository or copy the files to your local machine
-
Install dependencies using uv (recommended) or pip:
# Using uv (recommended) uv pip install -e . # Or using pip pip install -e .- Set up your Fathom API key:
Create a .env file in the project root:
FATHOM_API_KEY=your_api_key_hereThe server auto-loads .env for local usage.
Get your API key from the Fathom settings page.
# Using fastmcp CLI fastmcp run server.py # Or directly with Python python server.py# Modify server.py to run as HTTP server if __name__ == "__main__": mcp.run(transport="http", host="0.0.0.0", port=8000)Add to your Claude Desktop configuration (claude_desktop_config.json):
{ "mcpServers": { "fathom": { "command": "uv", "args": [ "--directory", "/path/to/fathom-mcp", "run", "fastmcp", "run", "server.py" ], "env": { "FATHOM_API_KEY": "your_api_key_here" } } } }Add this block to your Codex config (~/.codex/config.toml):
[mcp_servers.fathom] command = "uv" args = ["--directory", "/path/to/fathom-mcp", "run", "fastmcp", "run", "server.py"]Then restart Codex (or reload MCP servers) and verify:
codex mcp listAll requests require the FATHOM_API_KEY environment variable. API keys are user-level and can access:
- Meetings recorded by the user
- Meetings shared to the user's team
- Global limit: 60 API calls per 60-second window
- Rate-limited requests return HTTP 429
- Monitor rate limit headers:
RateLimit-Limit,RateLimit-Remaining,RateLimit-Reset
# List meetings with transcripts from the last week result = await list_meetings( created_after="2024-01-01T00:00:00Z", include_transcript=True, include_summary=True )# Get summary for a specific recording summary = await get_summary(recording_id=123456789)# Create webhook for team recordings with all content webhook = await create_webhook( destination_url="https://your-app.com/webhook", triggered_for=["my_recordings", "shared_team_recordings"], include_transcript=True, include_summary=True, include_action_items=True, include_crm_matches=True ) # Returns webhook ID, URL, and secret for signature verification# Find meetings with specific participants meetings = await list_meetings( calendar_invitees=["alice@acme.com", "bob@acme.com"], include_action_items=True )# Get all members of the Sales team members = await list_team_members(team="Sales")The server handles common API errors:
- 401 Unauthorized: Invalid or missing API key
- 400 Bad Request: Invalid parameters
- 404 Not Found: Resource doesn't exist
- 429 Rate Limited: Too many requests (includes reset time)
fathom-mcp/ ├── server.py # Main MCP server implementation ├── pyproject.toml # Project configuration and dependencies ├── Dockerfile # Container configuration for deployment ├── package.json # Package metadata ├── README.md # This file ├── .env # Environment variables (API key) └── .dockerignore # Docker build exclusions The project uses Ruff for linting and formatting:
# Install dev dependencies uv pip install -e ".[dev]" # Run linter ruff check . # Auto-fix issues ruff check --fix . # Format code ruff format .The server has been tested with real Fathom API data. See TEST_RESULTS.md for detailed test results.
To test manually:
# Set your API key export FATHOM_API_KEY="your_api_key_here" # Test server loads python -c "from server import mcp; print('✓ Server ready')" # Test API connectivity python -c " import asyncio from server import make_request asyncio.run(make_request('GET', '/meetings')) "For complete API documentation, visit:
This project is open source and available under the MIT License.
Contributions are welcome! Please feel free to submit a Pull Request.
- Issues: GitHub Issues
- Fathom API: Fathom Support
- MCP Protocol: MCP Documentation
Built with FastMCP - The fast, Pythonic way to build MCP servers.