Skip to main content
Glama
matthewbergvinson

Fathom MCP Server

list_team_members

Retrieve team member information from Fathom meeting data to manage collaboration and access permissions.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
teamNoFilter by team name

Implementation Reference

  • The handler function that implements the core logic of the 'list_team_members' tool. It fetches team members using the FathomClient and formats them into a markdown list.
    async ({ team }) => {
      console.error(team ? `Fetching members for team: ${team}...` : 'Fetching all team members...');
      const members = await fathom.getAllTeamMembers(team);
    
      if (members.length === 0) {
        return {
          content: [{ type: 'text', text: team ? `No members found in team "${team}".` : 'No team members found.' }],
        };
      }
    
      const markdown = members.map(m => `- **${m.name}** <${m.email}>`).join('\n');
      const title = team ? `Team Members: ${team}` : 'All Team Members';
    
      console.error(`Found ${members.length} members`);
      return {
        content: [{ type: 'text', text: `# ${title}\n\n${markdown}` }],
      };
    }
  • Zod schema defining the input parameters for the list_team_members tool (optional team filter).
    {
      team: z.string().optional().describe('Filter by team name'),
    },
  • src/index.ts:360-383 (registration)
    Registration of the 'list_team_members' tool on the MCP server using server.tool(), including schema and handler.
    server.tool(
      'list_team_members',
      {
        team: z.string().optional().describe('Filter by team name'),
      },
      async ({ team }) => {
        console.error(team ? `Fetching members for team: ${team}...` : 'Fetching all team members...');
        const members = await fathom.getAllTeamMembers(team);
    
        if (members.length === 0) {
          return {
            content: [{ type: 'text', text: team ? `No members found in team "${team}".` : 'No team members found.' }],
          };
        }
    
        const markdown = members.map(m => `- **${m.name}** <${m.email}>`).join('\n');
        const title = team ? `Team Members: ${team}` : 'All Team Members';
    
        console.error(`Found ${members.length} members`);
        return {
          content: [{ type: 'text', text: `# ${title}\n\n${markdown}` }],
        };
      }
    );
  • FathomClient helper method that handles pagination to retrieve all team members for a specific team or all teams.
    async getAllTeamMembers(team?: string): Promise<TeamMember[]> {
      const allMembers: TeamMember[] = [];
      let cursor: string | null | undefined = undefined;
    
      do {
        const response = await this.listTeamMembers(team, cursor || undefined);
        allMembers.push(...response.items);
        cursor = response.next_cursor;
      } while (cursor);
    
      return allMembers;
    }
  • FathomClient method that makes the API request to list team members with optional team filter and pagination cursor.
    async listTeamMembers(team?: string, cursor?: string): Promise<TeamMembersResponse> {
      const params = new URLSearchParams();
      if (team) params.append('team', team);
      if (cursor) params.append('cursor', cursor);
      
      const queryString = params.toString();
      const endpoint = `/team_members${queryString ? `?${queryString}` : ''}`;
      
      return this.request<TeamMembersResponse>(endpoint);
    }

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

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