Skip to main content
Glama

@inlustris/youtube-mcp

Ground your AI agents in YouTube's best content — no API keys, zero config.

NPM Version License: MIT

YouTube is the world's largest library of expert knowledge — tutorials, talks, reviews, deep dives. But AI agents can't watch videos.

This MCP server bridges that gap. It gives your agent access to YouTube transcripts, search, channel data, and video screenshots through simple tools. No Google API keys. No OAuth. No setup.

Built with FastMCP and youtubei.js.

Why YouTube for AI grounding?

Web search is noisy. YouTube content is ranked, reviewed, and curated — videos with high view counts, reputable creators, and timestamped transcripts that make it ideal for LLM context. Instead of scraping forums or blogs, your agent can pull the exact transcript from a relevant video, search across channels, or capture a screenshot of a specific moment.

This isn't another "AI skill" you have to maintain. It's a single npm package that works immediately.

Related MCP server: youtube-mcp

What you get

Tool

Purpose

get_transcript

Video transcript with timestamps, or plain text via plainText. Optionally strip sponsor segments via skipSponsor. Transcripts are cached in-memory — subsequent fetches are instant.

get_video_frame

Screenshot at any timestamp. Full quality when yt-dlp is available; falls back gracefully.

search_videos

Search YouTube with sort by relevance, date, rating, view count.

search_channels

Find channels by query.

get_channel_videos

List every video from a channel.

Install

npm install -g @inlustris/youtube-mcp

Add to any MCP client:

{
  "mcpServers": {
    "youtube": {
      "command": "npx",
      "args": ["-y", "@inlustris/youtube-mcp@latest"]
    }
  }
}

Works with Claude Desktop, Cursor, opencode, VS Code Copilot, and any MCP-compatible agent.

Full-quality screenshots (optional)

get_video_frame works out of the box using YouTube storyboards (320×180). For full-resolution captures (720p, 1080p, 4K), install the system tools:

brew install yt-dlp ffmpeg

The tool detects yt-dlp automatically and upgrades itself — no config changes needed.

SponsorBlock

Pass skipSponsor: true to get_transcript. It fetches sponsor timestamps from the SponsorBlock API (no auth, free) and removes sponsored content from the transcript. Great for getting clean, ad-free video context.

Use cases

  • Research agents: Pull transcripts from expert talks, conference presentations, or technical deep-dives instead of skimming blog posts.

  • Content analysis: Search for relevant YouTube content by topic, then extract transcripts at scale.

  • Visual grounding: Capture screenshots at key moments alongside transcripts for multimodal understanding.

  • Learning tools: Let users ask questions about specific video timestamps and get grounded answers.

Development

npm install
npm run dev        # hot-reload
npm test           # 31 tests
npm run build      # production bundle
src/
├── index.ts
├── server/server.ts
├── core/
│   ├── tools.ts
│   ├── resources.ts
│   └── services/
│       ├── youtube-service.ts
│       ├── sponsorblock-service.ts
│       └── screenshot-service.ts
└── __tests__/

License

MIT

Available Tools

5 tools
get_channel_videosA

Retrieves a list of videos from a specified YouTube channel. This tool is useful for getting all videos uploaded by a specific channel.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelIdYesThe YouTube channel ID from which to retrieve videos. You can get this from search_channels results or from a channel URL.
maxResultsNoMaximum number of videos to retrieve (default: 50, max: 200).

TDQS

A3.5/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. It does not disclose pagination, default ordering, rate limits, or what happens with large channels. The maxResults parameter hints at limits but no explicit behavior is described.

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 consists of two efficient sentences with no wasted words. The first sentence immediately states the purpose, and the second adds context. It is well-structured for quick comprehension.

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 simple nature of the tool (2 parameters, no output schema), the description is somewhat complete. However, it could mention the return format (e.g., video details) and any authentication requirements to be fully 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 coverage is 100%, so the schema already documents both parameters. The description does not add any information beyond what is in the schema, so it meets the baseline but does not exceed it.

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 it retrieves videos from a specified YouTube channel, using a specific verb and resource. It distinguishes itself from sibling tools like search_channels and search_videos by focusing on a single channel's uploads.

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?

The description says it's useful for getting all videos uploaded by a specific channel, which provides some context. However, it does not explicitly state when not to use it or mention alternatives, such as search_videos for cross-channel searching.

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

get_transcriptB

Retrieves the full transcript of a specified YouTube video. This tool is useful for understanding video content without watching it, or for extracting textual information from videos. FORMATTING GUIDANCE (optional - user instructions override): When creating summaries, consider using: Key Points with Timestamps: Use [MM:SS] or [HH:MM:SS] inline references. Structure: Break into logical sections. Context: Include video title and channel. Example: 'The speaker explains TypeScript generics [05:30] and shows practical examples [08:15].' This formatting is optional - always follow any specific user instructions instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
videoUrlYesThe full URL of the YouTube video from which to retrieve the transcript. This is the standard URL you would use to watch the video in a browser (e.g., 'https://www.youtube.com/watch?v=dQw4w9WgXcQ').
chunkSizeNoOptional: The maximum number of characters for each transcript chunk. If provided, the transcript will be split into chunks of this size. Useful for processing very long transcripts in smaller, manageable parts.
plainTextNoOptional: If true, returns the full transcript as a single plain text string without timestamp data. This uses less context than the default timestamped format and is better for summarization. If you later need timestamps, subsequent calls are cached.
skipSponsorNoOptional: If true, removes sponsor/ad segments from the transcript using the SponsorBlock API. Fetches sponsor timestamps and filters out transcript text that falls within sponsored sections.
chunkBySilenceNoOptional: If true, the transcript will be chunked based on periods of silence in the audio. This can help in segmenting the transcript into more natural conversational or thematic breaks.
silenceThresholdNoOptional: When chunkBySilence is true, this specifies the minimum duration of silence (in milliseconds) to consider as a chunk break. A higher value means longer pauses are required to create a new chunk.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as rate limits, authentication needs, or potential transcript unavailability. It only mentions caching for plainText, which is a minor trait.

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

Conciseness2/5

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

The description includes a lengthy block of formatting guidance that is unnecessary for tool invocation, making it verbose and not front-loaded. The core purpose is stated in the first sentence, but the extra content detracts.

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 there is no output schema, the description should explain what the tool returns (e.g., transcript chunks, timestamps). It does not, leaving the agent uncertain about the response structure.

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 describes all parameters in detail. The description adds no extra meaning beyond the schema, meeting the baseline of 3.

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 'Retrieves the full transcript of a specified YouTube video,' which is a specific verb+resource. It distinguishes from sibling tools (get_channel_videos, etc.) by focusing on transcript extraction.

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?

The description says it is 'useful for understanding video content without watching it, or for extracting textual information,' implying when to use, but no explicit when-not or alternative tools are mentioned.

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

get_video_frameA

Captures a screenshot from a YouTube video at a specified timestamp. Requires yt-dlp for full-quality captures; falls back to lower-resolution YouTube storyboards (320x180 max) if yt-dlp is not installed.

ParametersJSON Schema
NameRequiredDescriptionDefault
qualityNoOptional: yt-dlp format selector. Default is 'bestvideo[height<=720]'. Use 'bestvideo' for the best available quality. Only used when yt-dlp is available.bestvideo[height<=720]
videoUrlYesThe full URL of the YouTube video from which to capture a frame (e.g., 'https://www.youtube.com/watch?v=dQw4w9WgXcQ').
timestampYesThe time in seconds from which to capture the frame. Accepts both integer and decimal values (e.g., 30, 92.5).

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description discloses key behavioral traits: dependency on yt-dlp and fallback resolution limit (320x180). This gives the agent essential information about possible output quality.

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 short sentences, each packed with critical information. No wasted words; the dependency and fallback are efficiently communicated.

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?

The description is complete enough for a simple screenshot tool: purpose, dependency, fallback. It does not mention return format or error cases, but that is acceptable given the lack of output schema and the tool's straightforward nature.

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

Parameters4/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 adds meaning to the 'quality' parameter by explaining its default and conditional use (only when yt-dlp is available), improving semantics beyond the schema.

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 ('Captures a screenshot from a YouTube video at a specified timestamp') and distinguishes it from siblings like search or transcript tools. The mention of full-quality vs. fallback adds specificity.

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?

The description explains that yt-dlp is required for full-quality and that fallback occurs without it, providing clear usage context. It does not explicitly state when not to use, but the sibling tools are sufficiently different so confusion is unlikely.

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

search_channelsC

Searches YouTube for channels matching the specified query. You can specify a sort order for the results (default: rating).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe search query to find YouTube channels.
sortByNoSort order for search results: relevance, date, rating (default), viewCount, title, or videoCount.rating

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 carry full burden. It mentions default sort order but omits details such as result limits, pagination, rate limits, or error behavior. Minimal behavioral disclosure.

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 concise sentences that front-load the core purpose and cover the main parameter. No redundant information; every sentence adds value.

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?

Missing critical context: no output schema, so description should explain return format or behavior. Also lacks details on result count, pagination, or the nature of 'channels'. Incomplete for a search 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%, and the description adds only a note about default sort order, which is already in the schema. No additional meaning beyond what the input schema provides, earning a baseline score.

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 (searches) and resource (channels), with explicit query and sort order. However, it does not differentiate from the sibling 'search_videos' tool, missing an opportunity to clarify scope.

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 alternatives like 'search_videos'. The description implies it's for channels but does not state exclusions or prerequisites.

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

search_videosA

Searches YouTube for videos matching the specified query. Returns a list of video results with title, video ID, and channel information. Results are sorted by rating by default for better quality content.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe search query to find YouTube videos. Can include keywords, phrases, or specific terms related to the content you're looking for.
sortByNoOptional: How to sort the search results. Options are: 'relevance' (most relevant), 'date' (newest first), 'rating' (highest rated first - default), 'viewCount' (most viewed), 'title' (alphabetical).rating

TDQS

A3.6/5.0
Behavior3/5

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

No annotations provided, so the description must cover behavioral traits. It states the sorting default and return fields, but does not disclose potential limitations (e.g., pagination, rate limits, authentication). The description is adequate but not exhaustive.

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?

Three concise sentences that front-load the purpose, then describe return value and default sorting. No unnecessary words or repetition. Highly efficient.

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?

No output schema is provided, so the description must explain return values, which it does (list with title, video ID, channel info). It also notes the default sorting. However, it lacks mention of pagination or result limits, which would improve completeness for a search 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% (both parameters have descriptions in the input schema). The description adds no new semantic information beyond the schema, as it only restates the query and default sortBy value. Baseline score of 3 is appropriate.

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 'Searches YouTube for videos matching the specified query' and specifies the resource (YouTube videos) and return fields (title, video ID, channel information). It distinguishes from sibling tools like search_channels and get_channel_videos by focusing on video search.

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 does not provide guidance on when to use this tool versus alternatives (e.g., search_channels, get_channel_videos). It mentions default sorting by rating but lacks explicit context for usage scenarios or when not to use it.

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

TDQS

A3.7/5.0
Disambiguation5/5

Each tool targets a distinct resource and action: channel videos, video transcript, video frame, channel search, and video search. No overlap in purpose.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case (e.g., get_transcript, search_channels). No mixing of styles.

Tool Count5/5

Five tools is appropriate for a YouTube MCP server, covering core content retrieval and search without being excessive or insufficient.

Completeness4/5

The set covers content extraction well (videos, transcripts, frames, search) but lacks metadata operations like get_video_info or channel details, which are minor gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues

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

  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that enables interaction with the YouTube Data API, allowing users to search videos, get video and channel details, analyze trends, and fetch video transcripts.
  • A
    license
    A
    quality
    C
    maintenance
    An MCP server that enables the extraction of transcripts and detailed metadata from YouTube videos. It allows users to retrieve video information like titles and descriptions, as well as transcripts with optional timestamps and language selection.
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that enables searching YouTube and retrieving high-accuracy video transcripts using local Whisper AI transcription without requiring an API key. It supports single or batch processing and provides transcripts in multiple formats including text, JSON, and SRT.
    2
    Apache 2.0

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/adshaa/youtube-mcp'

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