Skip to main content
Glama
tldv-public

tl;dv MCP for Zoom, Google Meet and MS Teams

Official
by tldv-public

Official MCP Server for tl;dv API

Connect your tl;dv meeting library to AI assistants through the Model Context Protocol.

tl;dv hosts this server. Connect it from the connector directory in Claude or ChatGPT, authorize it with OAuth, and start querying your library. No installation or API key is required. This repository holds the local build for anyone who would rather run the server themselves.

This is the only official tl;dv MCP repository. Any tl;dv MCP server you find on GitHub, GitLab, npm, or elsewhere is not maintained by tl;dv. If you find one, please report it to tl;dv at support@tldv.io. Last updated September 2026.

Official MCP

Related MCP server: Granola MCP Server

At a glance

  • Availability: included on the tl;dv Pro plan and above.

  • Hosting: hosted by tl;dv. No local install required.

  • Authentication: OAuth, not an API key. Access tokens last for five minutes.

  • Permissions: scoped, approved in your browser, and revocable at any time from your tl;dv account without changing your password. The connector inherits your existing tl;dv library permissions and cannot reach any meeting you could not already open in the app. That limit is enforced server-side rather than described in the tool text.

  • Connecting: available in the Claude and ChatGPT connector directories. On ChatGPT, connectors require a paid plan, and on workspace plans, an admin may need to enable them first.

  • Access: read-only. The server cannot create, edit, delete, or share meetings.

  • Default scope: searches cover meetings you took part in. To widen this, ask for it, such as "include meetings I wasn't part of."

  • Meeting organizer's plan: you can only reach a meeting through the server if its organizer is also on Pro or above.

  • Results per query: a search returns up to 50 meetings.

  • Admin controls: organization admins can block MCP access through integration policies.

  • Security: the API and the MCP endpoint are both covered by tl;dv's SOC 2 program and included in the pentest scope. See trust.tldv.io.

Features

  • Search Meetings: retrieve meetings based on filters, including query, date range, participation status, and type, with pagination.

  • Get Meeting Metadata: fetch details for a specific meeting by ID, including title, date, duration, status, organizer, participants, and meeting URL.

  • Get Meeting Transcript: obtain the full transcript for any meeting ID, returned in Markdown.

  • Get Meeting Notes: retrieve AI-generated notes, manual notes, timestamps, and AI-processing status.

  • Get User Profile: retrieve your tl;dv profile, role, registration date, and team size. (Only available on the Remote MCP server)

How meetings get into your library

The MCP server reads meetings that tl;dv has already recorded. They get there in two ways.

  • The tl;dv bot joins Google Meet, Zoom, and Microsoft Teams calls as a visible participant. With calendar sync, it joins scheduled meetings automatically and captures video and audio.

  • The tl;dv desktop app records system audio from your Mac or Windows machine without a bot joining. Because it captures device audio rather than meeting data, it works on any platform that produces sound, including Slack huddles, Discord, WhatsApp, Google Meet, Zoom, and Teams. Bot-free recordings are audio only, so they contain no video, screen sharing, or chat.

  • The tl;dv mobile app records in-person audio from your mobile device running iOS and Android. Works offline and syncs to your workspace when the device is back online. These recordings are audio only.

Recording without a bot removes the visible participant, not the obligation to tell people they are being recorded. Consent requirements apply to in-person conversations too, and they vary by jurisdiction.


Running the server locally

This repository is a local build you run yourself and authenticate with a tl;dv API key rather than OAuth. Most people should use the hosted connector described above; if your MCP client doesn't support remote connectors, you can use this local version.

Disclaimer

Although this is the official local MCP server repo maintained by the tl;dv team, we don't update it regularly because we are prioritizing remote MCP servers.

Prerequisites

  • tl;dv Account: A Pro plan or above.

  • tl;dv API Key: You need an API key, which can be requested from your tl;dv settings: https://tldv.io/app/settings/personal-settings/api-keys.

  • Node.js and npm (for Node installation): If installing via Node.js, make sure Node.js and npm are installed.

  • Docker (for Docker installation): If installing via Docker, make sure Docker is installed and running.

Installation and Configuration

You can run this MCP server using either Docker or Node.js. Configure your MCP client (e.g., Claude Desktop, Cursor) to connect to the server.

Using Docker

Go in the repo.

  1. Build the Docker image:

    docker build -t tldv-mcp-server .
  2. Configure your MCP Client: Update your MCP client's configuration file (e.g., claude_desktop_config.json). The exact location and format may vary depending on the client.

    {
      "mcpServers": {
        "tldv": {
          "command": "docker",
          "args": [
            "run",
            "-i",
            "--init",
            "--rm",
            "-e",
            "TLDV_API_KEY=<your-tldv-api-key>",
            "tldv-mcp-server"
          ]
        }
      }
    }

    Replace <your-tldv-api-key> with your actual tl;dv API key.

Using Node.js

  1. Install dependencies:

    npm install
  2. Build the server:

    npm run build

    This command creates a dist folder containing the compiled server code (index.js).

  3. Configure your MCP Client: Update your MCP client's configuration file.

    {
      "mcpServers": {
        "tldv": {
          "command": "node",
          "args": ["/absolute/path/to/tldv-mcp-server/dist/index.js"],
          "env": {
            "TLDV_API_KEY": "your_tldv_api_key"
          }
        }
      }
    }

    Replace /absolute/path/to/tldv-mcp-server/dist/index.js with the correct absolute path to the built server file and your_tldv_api_key with your tl;dv API key.

Refer to your specific MCP client's documentation for detailed setup instructions (e.g., Claude Tools).

Disclaimer Once you are updating this config file, you will need to kill your MCP client and restart it for the changes to be effective.

Development

  1. Install dependencies:

    npm install
  2. Set up Environment Variables: Copy the example environment file:

    cp .env.example .env

    Edit the .env file and add your TLDV_API_KEY. Other variables can be configured as needed.

  3. Run in development mode: This command starts the server with auto-reloading on file changes:

    npm run watch
  4. Update client for local development: Configure your MCP client to use the local development server path (typically /path/to/your/project/dist/index.js). Ensure the TLDV_API_KEY is accessible, either through the client's env configuration or loaded via the .env file by the server process.

  5. Reload your MCP Client Since you are running the watch command, it will recompiled a new version. Reloading your Client (e.g Claud Desktop App), your changes will be effective.

Debugging

  • Console Logs: Check the console output when running npm run dev for detailed logs. The server uses the debug library; you can control log levels via environment variables (e.g., DEBUG=tldv-mcp:*).

  • Node.js Debugger: Utilize standard Node.js debugging tools (e.g., Chrome DevTools Inspector, VS Code debugger) by launching the server process with the appropriate flags (e.g., node --inspect dist/index.js).

  • MCP Client Logs: Check the logs provided by your MCP client, which might show the requests sent and responses received from this server.

Learn More

Available Tools

4 tools
get-highlightsC

Allows you to get highlights from a meeting by providing a meeting ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
meetingIdYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'get highlights' but doesn't specify what 'highlights' entail (e.g., key points, summaries, timestamps), whether this is a read-only operation, or any constraints like rate limits or authentication needs. The description is too vague to adequately inform behavior.

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 a single, efficient sentence that gets straight to the point without unnecessary words. It's appropriately sized for a simple tool, though it could be more informative.

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?

Given the tool's complexity (simple retrieval), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what 'highlights' are, how they're formatted, or any behavioral aspects, leaving significant gaps for an AI agent to understand the tool fully.

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?

The description mentions the parameter 'meetingId' implicitly ('by providing a meeting ID'), but with 0% schema description coverage, it doesn't add meaningful semantics beyond what the schema already indicates (a required string). Since there's only one parameter, the baseline is 4, but the description fails to explain what a 'meeting ID' is or where to find it, so it's scored lower.

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

Purpose3/5

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

The description states the tool's purpose ('get highlights from a meeting') with a specific verb and resource, but it doesn't distinguish it from sibling tools like 'get-meeting-metadata' or 'get-transcript' which also retrieve meeting-related data. The purpose is clear but lacks sibling differentiation.

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 'get-transcript' or 'get-meeting-metadata'. It only states what the tool does without indicating context, exclusions, or prerequisites for usage.

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

get-meeting-metadataC

Get a meeting by its ID. The meeting ID is a unique identifier for a meeting. It will return the meeting metadata, including the name, the date, the organizer, participants and more.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. While it indicates this is a read operation ('Get'), it doesn't disclose important behavioral traits like authentication requirements, rate limits, error conditions, or whether the meeting ID must be in a specific format. The description provides basic functional information but lacks operational context.

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 appropriately concise with three sentences that each serve a purpose: stating the action, explaining the parameter, and describing the return value. It's front-loaded with the core functionality and avoids unnecessary elaboration while covering essential information.

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?

For a single-parameter read tool with no annotations and no output schema, the description provides basic functional coverage but lacks important contextual details. It explains what the tool does and what it returns at a high level, but doesn't address authentication, error handling, or provide examples of the metadata structure that will be returned.

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?

The schema has 0% description coverage for its single parameter 'id'. The description adds some semantic context by stating 'The meeting ID is a unique identifier for a meeting', which provides meaning beyond the bare schema. However, it doesn't specify format requirements, examples, or constraints, leaving significant gaps in parameter understanding.

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 the tool's purpose: 'Get a meeting by its ID' and specifies it returns meeting metadata including name, date, organizer, and participants. It uses specific verbs ('Get', 'return') and identifies the resource ('meeting'), but doesn't explicitly differentiate from sibling tools like 'list-meetings' or 'get-transcript'.

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 'list-meetings' or 'get-transcript'. It mentions the meeting ID is required but doesn't explain when this tool is appropriate compared to other meeting-related tools available on the server.

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

get-transcriptC

Get transcript by meeting ID. The transcript is a list of messages exchanged between the participants in the meeting. It's time-stamped and contains the speaker and the message

ParametersJSON Schema
NameRequiredDescriptionDefault
meetingIdYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes the output format (list of time-stamped messages with speaker info) but lacks critical details: it doesn't mention whether this is a read-only operation, potential errors (e.g., invalid meeting ID), authentication needs, rate limits, or data freshness. For a tool with no annotations, this is a significant gap in 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 appropriately sized with two sentences: the first states the core purpose, and the second elaborates on the transcript content. It's front-loaded with the key action ('Get transcript by meeting ID') and avoids unnecessary details. However, it could be slightly more structured by explicitly separating purpose from output details.

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?

Given the tool's complexity (retrieving structured data), lack of annotations, and no output schema, the description is incomplete. It covers the output format but misses behavioral aspects like error handling, permissions, and usage context. Without annotations or output schema, the description should provide more comprehensive guidance to aid the agent.

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?

The input schema has 1 parameter with 0% description coverage, so the description must compensate. It adds meaning by explaining that 'meetingId' is used to retrieve a transcript, but it doesn't provide format examples (e.g., UUID), validation rules, or where to obtain the ID. This gives basic context but falls short of fully compensating for the schema's lack of descriptions.

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 the tool's purpose: 'Get transcript by meeting ID' specifies the verb (get) and resource (transcript). It further elaborates that the transcript contains time-stamped messages with speaker information, which helps distinguish it from sibling tools like 'get-highlights' or 'get-meeting-metadata'. However, it doesn't explicitly differentiate from 'list-meetings', which is a minor gap.

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 'get-highlights' or 'get-meeting-metadata'. It mentions the transcript content but doesn't specify use cases, prerequisites, or exclusions. This leaves the agent with insufficient context to choose between sibling tools effectively.

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

list-meetingsC

List all meetings based on the filters provided. You can filter by date, status, and more. Those meetings are the sames you have access to in the TLDV app.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
pageNo
limitNo
fromNo
toNo
onlyParticipatedNo
meetingTypeNo

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions filtering capability and TLDV app access, but fails to describe pagination behavior (implied by 'page' and 'limit' parameters), rate limits, authentication requirements, or what 'status' filtering entails. For a 7-parameter tool with zero annotation coverage, this leaves significant behavioral gaps.

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 appropriately concise with two sentences. The first sentence front-loads the core functionality (listing with filters), and the second adds context about access. No wasted words, though the TLDV app reference could be more informative.

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?

For a 7-parameter tool with no annotations and no output schema, the description is incomplete. It doesn't explain return values, pagination behavior, error conditions, or detailed parameter usage. The TLDV app reference is insufficient context. Given the complexity and lack of structured data, the description should provide more operational guidance.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It mentions filtering by 'date, status, and more' which partially maps to 'from', 'to', and possibly 'meetingType' parameters, but doesn't explain the 'query' parameter, 'onlyParticipated', pagination parameters, or the meaning of 'status' versus 'meetingType'. With 7 undocumented parameters, the description adds minimal semantic value.

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 the verb ('List') and resource ('meetings'), and specifies filtering capability. It distinguishes from siblings like 'get-highlights' or 'get-transcript' by focusing on listing meetings rather than retrieving specific content. However, it doesn't explicitly differentiate from 'get-meeting-metadata' which might have overlapping functionality.

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 mentions filtering by date, status, and more, but provides no guidance on when to use this tool versus sibling tools like 'get-meeting-metadata'. It doesn't specify prerequisites, alternatives, or exclusions. The TLDV app reference is vague and doesn't help the agent understand usage context.

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.

  1. 4 tool updatesv1.0.0
    • First observedget-highlights
    • First observedget-meeting-metadata
    • First observedget-transcript
    • First observedlist-meetings

TDQS

B3.2/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: get-highlights retrieves highlights, get-meeting-metadata provides metadata, get-transcript fetches the transcript, and list-meetings lists meetings with filters. There is no overlap in functionality, making it easy for an agent to select the correct tool.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (e.g., get-highlights, get-meeting-metadata, get-transcript, list-meetings). The naming is uniform and predictable, using snake_case throughout with clear action prefixes.

Tool Count4/5

With 4 tools, the count is reasonable for a meeting-focused server, covering key operations like listing, retrieving metadata, transcripts, and highlights. It is slightly lean but well-scoped, as each tool serves a distinct purpose without being overwhelming.

Completeness4/5

The tool set covers essential read operations for meetings (list, metadata, transcript, highlights), which aligns well with the server's purpose of accessing meeting data. A minor gap exists in write operations (e.g., creating or updating meetings), but agents can still perform core workflows effectively.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    Integrates with Claude to enable intelligent querying of documentation data, transforming crawled technical documentation into an actionable resource that LLMs can directly interact with.
    2,107
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    Integrates local Granola.ai meeting intelligence with Claude Desktop to enable searching and analyzing meeting transcripts, notes, and summaries. Users can perform natural language queries to retrieve meeting details, analyze participant patterns, and access full speaker-identified conversations.
    5
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Bring your Plaud Note recordings into Claude Desktop. Search meetings, pull transcripts, and ask Claude about your notes — directly from chat.
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Bridges Granola.ai meeting intelligence with Claude Desktop, enabling natural language access to meeting transcripts, notes, and insights.
    94
    MIT