Skip to main content
Glama
jkawamoto

YouTube Transcript MCP Server

by jkawamoto

YouTube Transcript MCP Server

uv Python Application pre-commit GitHub License Dockerhub

This MCP server retrieves transcripts for given YouTube video URLs.

Tools

This MCP server provides the following tools:

get_transcript

Fetches the transcript of a specified YouTube video.

Parameters

  • url (string): The full URL of the YouTube video. This field is required.

  • lang (string, optional): The desired language for the transcript. Defaults to en if not specified.

  • next_cursor (string, optional): Cursor to retrieve the next page of the transcript.

get_timed_transcript

Fetches the transcript of a specified YouTube video with timestamps.

Parameters

  • url (string): The full URL of the YouTube video. This field is required.

  • lang (string, optional): The desired language for the transcript. Defaults to en if not specified.

  • next_cursor (string, optional): Cursor to retrieve the next page of the transcript.

get_video_info

Fetches the metadata of a specified YouTube video.

Parameters

  • url (string): The full URL of the YouTube video. This field is required.

get_available_languages

Retrieves the available languages for the video.

Parameters

  • url (string): The full URL of the YouTube video. This field is required.

Related MCP server: YouTube Transcript Server

Installation

NOTE

You'll needuv installed on your system to use uvx command.

For goose

Please refer to this tutorial for detailed installation instructions: YouTube Transcript Extension.

For Claude

Download the latest MCP bundle mcp-youtube-transcript.mcpb from the Releases page, then open the downloaded .mcpb file or drag it into the Claude Desktop's Settings window.

You can also manually configure this server for Claude Desktop. Edit the claude_desktop_config.json file by adding the following entry under mcpServers:

{
  "mcpServers": {
    "youtube-transcript": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/jkawamoto/mcp-youtube-transcript",
        "mcp-youtube-transcript"
      ]
    }
  }
}

After editing, restart the application.

For more information, see: Connect to local MCP servers - Model Context Protocol..

For LM Studio

To configure this server for LM Studio, click the button below.

Add MCP Server youtube-transcript to LM Studio

Using Docker

A Docker image for this server is available on Docker Hub. Please refer to the Docker Hub page for detailed usage instructions and documentation.

Response Pagination

When retrieving transcripts for longer videos, the content may exceed the token size limits of the LLM. To avoid this issue, this server splits transcripts that exceed 50,000 characters. If a transcript is split, the response will include a next_cursor. To retrieve the next part, include this next_cursor value in your request.

The token size limits vary depending on the LLM and language you are using. If you need to split responses into smaller chunks, you can adjust this using the --response-limit command line argument. For example, the configuration below splits responses to contain no more than 15,000 characters each:

{
  "mcpServers": {
    "youtube-transcript": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/jkawamoto/mcp-youtube-transcript",
        "mcp-youtube-transcript",
        "--response-limit",
        "15000"
      ]
    }
  }
}

Using Proxy Servers

In environments where access to YouTube is restricted, you can use proxy servers.

When using Webshare, set the username and password for the Residential Proxy using either the environment variables WEBSHARE_PROXY_USERNAME and WEBSHARE_PROXY_PASSWORD, or the command line arguments --webshare-proxy-username and --webshare-proxy-password.

When using other proxy servers, set the proxy server URL using either the environment variables HTTP_PROXY or HTTPS_PROXY, or the command line arguments --http-proxy or --https-proxy.

For more details, please visit: Working around IP bans - YouTube Transcript API.

License

This application is licensed under the MIT License. See the LICENSE file for more details.

Available Tools

4 tools
get_available_languagesA

Retrieves the available languages for the video.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL of the YouTube video

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/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 disclosing behavior. It correctly implies a read-only operation, but does not explicitly state that it is non-destructive, has no side effects, or any rate limits. The minimal description is adequate but lacks depth.

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?

The description is a single, concise sentence with no unnecessary words. It front-loads the purpose and is appropriately sized for a simple retrieval tool.

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

Completeness4/5

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

Given that an output schema exists (documenting return values), the description is largely sufficient. However, it could briefly mention that the result is typically used to select a language for transcript retrieval, linking it to sibling tools. Otherwise, it is complete for a straightforward tool.

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 the schema already documents the 'url' parameter. The description adds no additional semantics beyond what the schema provides, merely repeating that it is for a video. This meets the baseline expectation of high schema coverage.

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 action ('retrieves') and the resource ('available languages for the video'). It effectively distinguishes from sibling tools like get_timed_transcript and get_transcript, which deal with transcript content rather than language options.

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. There is no mention of prerequisites, such as needing to call this before selecting a language for transcripts, or any comparison with sibling tools. This leaves an AI agent without context for decision-making.

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

get_timed_transcriptA

Retrieves the transcript of a YouTube video with timestamps.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL of the YouTube video
langNoThe preferred language for the transcripten
next_cursorNoCursor to retrieve the next page of the transcript

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleYesTitle of the video
snippetsYesTranscript snippets of the video
next_cursorNoCursor to retrieve the next page of the transcript

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description does not disclose behavioral traits such as pagination (despite the next_cursor parameter), rate limits, or authentication requirements. The basic retrieval purpose is clear, but critical context for the agent is missing.

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?

A single 7-word sentence that is perfectly concise and front-loaded with the essential action and distinguishing feature.

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 the presence of an output schema, the description is minimally adequate. However, it lacks context about pagination, language fallback, and error handling, which are relevant for a tool with three parameters and a cursor.

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%, and the description adds no extra meaning beyond what the schema already provides for each parameter. Baseline score of 3 applies.

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 'retrieves' and resource 'transcript of a YouTube video with timestamps', distinguishing it from the sibling 'get_transcript' which presumably lacks timestamps.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives like 'get_transcript' or 'get_available_languages'. Purpose clarity provides implicit distinction but no direct recommendation.

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

get_transcriptC

Retrieves the transcript of a YouTube video.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL of the YouTube video
langNoThe preferred language for the transcripten
next_cursorNoCursor to retrieve the next page of the transcript

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleYesTitle of the video
transcriptYesTranscript of the video
next_cursorNoCursor to retrieve the next page of the transcript

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, so the description should carry the burden. It says 'retrieves' but does not disclose pagination (next_cursor parameter), language handling default, or output format. The schema hints at pagination, but the description omits this behavioral trait.

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 sentence, very concise and to the point. However, it may be too terse given the complexity (pagination, language option). Still, it earns its place with no filler.

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 that an output schema exists (mentioned in context signals) and input schema covers all parameters, the description covers the core purpose. However, it lacks details on pagination behavior, language fallback, and comparison with siblings, leaving some gaps for a complete understanding.

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%, and the descriptions for url, lang, and next_cursor are already informative. The tool description adds no additional semantic value beyond what the schema provides, so baseline 3 is appropriate.

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 retrieves a YouTube video transcript, but lacks differentiation from sibling tools like get_timed_transcript or get_available_languages. The verb 'retrieves' and resource 'transcript' are specific, but without context on what format (plain vs timed) or scope, it's not fully distinguished.

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?

No guidance is provided on when to use this tool versus siblings. For example, get_timed_transcript might return timestamps, while this one might return plain text. The agent has no criteria to choose among them.

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

get_video_infoC

Retrieves the video information.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL of the YouTube video

Output Schema

ParametersJSON Schema
NameRequiredDescription
titleYesTitle of the video
durationYesDuration of the video
uploaderYesUploader of the video
descriptionYesDescription of the video
upload_dateYesUpload date of the video

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so the description must disclose behavioral traits. It only says 'retrieves' without confirming read-only nature, side effects, or any constraints.

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

Conciseness3/5

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

The description is a single short sentence, which is minimal but does not provide enough detail to be useful; it sacrifices informativeness for brevity.

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 the presence of an output schema (not shown) and sibling tools, the description is adequate but could specify the scope of 'video information' and how it relates to the transcript-focused siblings.

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% for the sole parameter 'url', and the description adds no extra meaning beyond what the schema already provides.

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 action (retrieves) and resource (video information), but it does not specify what type of information (e.g., metadata, statistics) nor differentiate from sibling tools focused on transcripts.

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?

No guidance on when to use this tool versus siblings like get_transcript or get_available_languages. No context on prerequisites or alternatives.

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

TDQS

A3.5/5.0
Disambiguation4/5

Most tools are distinct: get_available_languages and get_video_info have clear purposes. get_transcript and get_timed_transcript overlap but differ by timestamps, creating slight ambiguity.

Naming Consistency5/5

All tools follow a consistent 'get_' prefix with descriptive nouns in snake_case, making the pattern predictable.

Tool Count5/5

Four tools cover core operations (transcript, timed transcript, languages, video info) without excess or deficiency for a transcript-focused server.

Completeness4/5

The tool set covers essential transcript retrieval and video information. Missing features like search or playlist support are outside the stated domain, so completeness is high but not maximal.

Maintenance

ActivityMaintained
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/jkawamoto/mcp-youtube-transcript'

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