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_hereGet 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"
}
}
}
}All 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.