mcp-fathom-server

sourcegate/mcp-fathom-server

3.3

If you are the rightful owner of mcp-fathom-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

The MCP Fathom Server is a Model Context Protocol server that integrates with Fathom AI's meeting API, allowing users to search and retrieve meeting information using natural language queries.

Tools
2
Resources
0
Prompts
0

MCP Fathom Server

An MCP (Model Context Protocol) server that integrates with Fathom AI's meeting API, enabling Claude to search and retrieve meeting information through natural language queries.

MCP Node.js TypeScript

🎯 Features

  • 🔍 Smart Search: Natural language search across meeting titles, summaries, transcripts, and action items
  • 📋 List Meetings: Retrieve meetings with various filters (attendees, date ranges, teams, etc.)
  • 📝 Transcript Support: Optionally include full meeting transcripts in search results
  • ⚡ Real-time: Direct integration with Fathom's API for up-to-date meeting data
  • 🛡️ Secure: API key management through environment variables

🚀 Quick Start

Prerequisites

  • Node.js 18 or higher
  • npm or yarn
  • A Fathom AI account with API access
  • Claude Desktop app

Installation

  1. Clone and setup:
git clone https://github.com/sourcegate/mcp-fathom-server.git
cd mcp-fathom-server
npm install
npm run build
  1. Configure your API key:
cp .env.example .env
# Edit .env and add your Fathom API key
  1. Get your Fathom API key:

    • Log in to Fathom
    • Go to Settings → API
    • Generate a new API key
    • Copy it to your .env file
  2. Add to Claude Desktop:

Edit your Claude Desktop configuration 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"
      }
    }
  }
}
  1. Restart Claude Desktop and you're ready to go! 🎉

💬 Usage Examples

Once configured, you can ask Claude natural language questions about your meetings:

"Find me meetings about recruiting"
"Show me all external meetings from last week"  
"Search for meetings where we discussed product launches"
"List meetings with john@example.com"
"Find meetings with action items about hiring"
"What did we discuss in our Q1 planning meetings?"

Claude will automatically choose the right tool and search method based on your query.

🔧 Available Tools

list_meetings

Retrieves meetings with optional filters:

  • calendar_invitees: Filter by attendee emails
  • calendar_invitees_domains: Filter by company domains
  • created_after/created_before: Date range filters
  • meeting_type: all, internal, or external
  • include_transcript: Include full transcripts
  • recorded_by: Filter by meeting owner
  • teams: Filter by team names

search_meetings

Searches meetings by keywords:

  • search_term: The keyword/phrase to search for
  • include_transcript: Search within transcripts (slower but more comprehensive)

🛠️ Development

# Run in development mode
npm run dev

# Build for production
npm run build

# Test with MCP Inspector
npx @modelcontextprotocol/inspector dist/index.js

🐛 Troubleshooting

IssueSolution
Server won't startCheck that your API key is correctly set
No results foundTry broader search terms or check your API key permissions
Rate limitingThe server handles this automatically - wait a moment and try again
Claude can't find toolsEnsure Claude Desktop is restarted after config changes

📄 License

MIT License - see file for details.

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

🙋‍♀️ Support

If you encounter any issues:

  1. Check the troubleshooting section
  2. Search existing GitHub issues
  3. Create a new issue with detailed information about your problem

Built for fun by @petesena ❤️