Skip to main content
Glama
sourcegate

MCP Fathom Server

by sourcegate

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

Related MCP server: Fathom AI MCP Server

🚀 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

Issue

Solution

Server won't start

Check that your API key is correctly set

No results found

Try broader search terms or check your API key permissions

Rate limiting

The server handles this automatically - wait a moment and try again

Claude can't find tools

Ensure Claude Desktop is restarted after config changes

📄 License

MIT License - see LICENSE 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


Status: Tested and working with GitHub integration ✓

Built for fun by @petesena ❤️

Available Tools

2 tools
list_meetingsB

List Fathom meetings with optional filters. Returns meeting titles, summaries, dates, and participants.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of meetings to return
teamsNoFilter by team names
recorded_byNoFilter by meeting owner email addresses
meeting_typeNoFilter by meeting typeall
created_afterNoFilter meetings created after this date (ISO 8601)
created_beforeNoFilter meetings created before this date (ISO 8601)
calendar_inviteesNoFilter by attendee email addresses
include_transcriptNoInclude meeting transcripts
calendar_invitees_domainsNoFilter by company domains

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must convey behavior. It implies a read-only listing operation but does not explicitly state it is non-destructive, require authentication, or any rate limits. The return fields are mentioned, providing some transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise at two sentences, front-loading the action and return information. There is no fluff, and it is easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 9 optional parameters and no output schema, the description covers the basic purpose and return values but does not explain filter usage or output structure. It is adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description only generically mentions 'optional filters' without adding any meaning to individual parameters beyond what the schema already provides. No extra context is given.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists Fathom meetings with optional filters and specifies the return fields (titles, summaries, dates, participants). However, it does not differentiate from the sibling tool 'search_meetings', leaving ambiguity about when to use each.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'search_meetings'. It also does not mention any prerequisites, limitations, or context for filters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_meetingsA

Search for meetings containing keywords in titles, summaries, or action items. NOTE: Searches last 30 days only. For better performance, transcript search is disabled by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
search_termYesSearch term to find in meeting titles, summaries, or action items
include_transcriptNoWhether to search within transcripts (WARNING: Currently disabled for performance)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must cover behavioral traits. It discloses the 30-day limit and disabled transcript search, but does not mention authentication needs, rate limits, pagination, or result ordering. The performance warning is useful but insufficient for full transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, each earning its place: first states purpose and fields, second adds critical usage constraints. No redundant or vague language. Front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool lacks an output schema, yet the description does not mention what the search returns (e.g., a list of meeting objects, limited fields). It also does not specify the maximum number of results or sort order. Given the low complexity (2 params) and absence of output schema, the description should provide more details about the response format to be complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds context by mentioning the search fields (titles, summaries, action items) and the performance note about transcript search, which aligns with the schema descriptions. No additional syntax or usage details are provided beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Search' and the resource 'meetings', specifying the fields (titles, summaries, action items) and the 30-day time constraint. It implicitly distinguishes from sibling tool 'list_meetings' which likely returns all meetings without keyword filtering.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit context: searches only last 30 days and transcript search is disabled by default for performance. While it doesn't explicitly state when not to use or name alternatives, the context is clear enough for an agent to decide against using it for older meetings or when transcript search is needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 2 tool updatesv1.0.0
    • First observedlist_meetings
    • First observedsearch_meetings

TDQS

A3.7/5.0
Disambiguation5/5

list_meetings and search_meetings have clearly distinct purposes: one filters and lists meetings, the other performs keyword search. No ambiguity.

Naming Consistency5/5

Both tools use consistent verb_noun pattern: list_meetings and search_meetings. Naming is predictable and clear.

Tool Count4/5

With only 2 tools, the server is minimal but appears focused on read operations for meeting data. The count is slightly low but appropriate for its narrow scope.

Completeness4/5

The set covers listing and searching meetings, which covers common read operations. However, there is no tool to retrieve a specific meeting by ID, a minor gap.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

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

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