A Model Context Protocol (MCP) server that integrates with Fathom AI's meeting platform, enabling Claude to search, analyze, and summarize your meeting transcripts through natural language queries.
Repo originally forked from https://github.com/sourcegate/mcp-fathom-server and then extended to include transcript searching and deployment to Cloud Run.
- π Full Transcript Search: Search within actual meeting transcripts (not just titles/summaries)
- π€ AI-Powered Summarization: Let Claude automatically summarize meeting transcripts
- π Meeting Management: List and filter meetings by attendees, dates, teams, and more
- π₯ Team Operations: Manage teams and team members
- π Real-time Webhooks: Get notified when new meetings are ready
- β‘ High Performance: Parallel transcript fetching (up to 10 meetings)
- βοΈ Cloud-Ready: Deploy locally (stdio) or remotely (HTTP) to Google Cloud Run
- π Multi-Platform: Works with Claude Desktop, Claude.ai web, iOS, and Android
- Node.js 18 or higher
- npm or yarn
- A Fathom AI account with API access
- Claude Desktop (for local use) OR Google Cloud account (for remote deployment)
-
Clone and build:
git clone https://github.com/rittmananalytics/mcp-fathom-server-remote.git cd mcp-fathom-server npm install npm run build -
Get your Fathom API key:
- Log in to Fathom
- Go to Settings β API
- Generate a new API key
-
Configure Claude Desktop:
Edit your Claude Desktop config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{ "mcpServers": { "fathom": { "command": "node", "args": ["/absolute/path/to/mcp-fathom-server/dist/index.js"], "env": { "FATHOM_API_KEY": "your-api-key-here" } } } } - macOS:
-
Restart Claude Desktop and start asking about your meetings!
Deploy as a remote HTTP service for access from Claude.ai web and mobile:
-
Set your API key:
export FATHOM_API_KEY=your-fathom-api-key-here -
Deploy to Cloud Run:
./deploy-to-cloud-run.sh
-
Add to Claude.ai:
- Go to Claude.ai β Settings β MCP Servers
- Add Remote Server
- URL:
https://your-service-url.run.app/mcp
The script handles everything: enabling APIs, storing secrets, building, and deploying.
Once configured, ask Claude natural language questions:
"Find meetings about product strategy"
"What did we discuss in meetings with [email protected] last week?"
"Search transcripts for mentions of pricing changes"
"Summarize the transcript from our Q1 planning meeting"
"List all meetings from the engineering team"
"Who attended meetings about the new feature launch?"
Search meetings by keywords in titles, summaries, action items, AND full transcripts.
Parameters:
search_term: Keyword/phrase to search forinclude_transcript: Search within transcripts (default: true, fetches up to 10)
Example: "Search for meetings where we discussed Claude Code"
List meetings with optional filters.
Parameters:
calendar_invitees: Filter by attendee emailscalendar_invitees_domains: Filter by company domainscreated_after/created_before: Date range filters (ISO 8601)meeting_type: all, internal, or externalrecorded_by: Filter by meeting owner emailsteams: Filter by team nameslimit: Maximum number to return (default: 50)
Fetch the full transcript of a specific meeting.
Parameters:
recording_id: The recording ID (from search results)summarize: Whether to prompt Claude to summarize (default: false)
List all teams accessible to the authenticated user.
List members of a specific team.
Parameters:
team_id: The team ID (fromlist_teams)
Create a webhook for real-time meeting notifications.
Parameters:
url: Webhook destination URLinclude_transcript: Include transcripts in payload (default: false)include_summary: Include summaries (default: true)include_action_items: Include action items (default: true)
Returns webhook ID and verification secret.
Remove an existing webhook.
Parameters:
webhook_id: The webhook ID to delete
The server supports two operational modes:
stdio Mode (Local)
- For Claude Desktop
- Direct process communication
- Runs via
dist/index.js
HTTP Mode (Remote)
- For Claude.ai web/mobile
- RESTful HTTP + Server-Sent Events
- Runs via
dist/http-server.js - Supports MCP protocol versions 2025-03-26 and 2024-11-05
Both modes share the same FathomClient core, ensuring consistent behavior.
# Development mode (stdio)
npm run dev
# Build for production
npm run build
# Test with MCP Inspector
npx @modelcontextprotocol/inspector dist/index.js# Development mode (HTTP)
npm run dev:http
# Test HTTP mode with Inspector
npm run test:http
# Navigate to http://localhost:5173
# Configure: Transport=HTTP, URL=http://localhost:8080/mcp# Build image
docker build -t mcp-fathom-server .
# Run locally
docker run -p 8080:8080 -e FATHOM_API_KEY=your-key mcp-fathom-server
# Test health endpoint
curl http://localhost:8080/healthThe server correctly handles Fathom's transcript API format:
Fathom Transcript Structure:
{
"transcript": [
{
"speaker": {
"display_name": "John Doe",
"matched_calendar_invitee_email": "[email protected]"
},
"text": "Let's discuss the new features",
"timestamp": "00:00:05"
}
]
}Converted to Searchable Text:
[00:00:05] John Doe: Let's discuss the new features
[00:00:12] Jane Smith: I agree, we should prioritize...
| Issue | Solution |
|---|---|
| Server won't start | Check FATHOM_API_KEY is set correctly |
| No transcript results | Ensure meetings have finished processing (transcripts aren't instant) |
| Rate limiting | Reduce concurrent transcript fetches or wait before retrying |
| Claude can't find tools | Restart Claude Desktop after config changes |
| Empty search results | Try broader search terms or check date range (searches last 30 days) |
Claude Desktop (macOS):
tail -f ~/Library/Logs/Claude/mcp*.logCloud Run:
gcloud run services logs read mcp-fathom-server --region us-central1 --limit 50- β API keys stored in Secret Manager (Cloud Run) or environment variables (local)
- β No API keys committed to version control
- β HTTPS enforced on Cloud Run
- β Rate limiting handled gracefully
For production Cloud Run deployments:
-
Enable authentication:
gcloud run deploy mcp-fathom-server \ --region us-central1 \ --no-allow-unauthenticated
-
Grant specific access:
gcloud run services add-iam-policy-binding mcp-fathom-server \ --region us-central1 \ --member="user:[email protected]" \ --role="roles/run.invoker"
-
Use Secret Manager (deploy script does this automatically)
| Variable | Description | Required | Default |
|---|---|---|---|
FATHOM_API_KEY |
Your Fathom API key | Yes | - |
PORT |
HTTP server port | No | 8080 |
NODE_ENV |
Environment mode | No | production |
export FATHOM_API_KEY=your-key
./deploy-to-cloud-run.shCustomization via environment variables:
export GCP_PROJECT_ID=my-project
export SERVICE_NAME=my-fathom-server
export REGION=us-west1
./deploy-to-cloud-run.shgcloud run deploy mcp-fathom-server \
--source . \
--region us-central1 \
--platform managed \
--allow-unauthenticated \
--set-secrets=FATHOM_API_KEY=fathom-api-key:latest \
--port 8080 \
--memory 1Gi \
--timeout 300Cloud Run pricing (auto-scales to zero):
- Free tier: 2 million requests/month
- CPU/Memory: Only charged during request processing
- Expected personal use: $0-5/month
Optimize costs:
gcloud run services update mcp-fathom-server \
--region us-central1 \
--min-instances 0 \
--max-instances 5 \
--memory 512MiContributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
For major changes, please open an issue first to discuss what you'd like to change.
MIT License - see LICENSE file for details.
- Built on the Model Context Protocol
- Integrates with Fathom AI
- Powered by Anthropic's Claude
- Issues: GitHub Issues
- Documentation: MCP Specification
- Fathom API: developers.fathom.ai
Version 2.0.0 | Built with β€οΈ for the MCP community