YouTube MCP
This server gives Claude/MCP clients access to YouTube transcripts, search, video/channel/playlist/comment data, and trending videos.
Get transcripts for any public video with no API key, including pagination, timestamps, time-range extraction, translation, and configurable page size.
List available caption tracks for a video.
Search YouTube for videos, channels, or playlists with filters like region, channel, date, and sort order.
Fetch details and stats for up to 50 videos at once.
Get channel info and stats by ID or @handle, and list a channel's latest uploads with performance stats.
Read top-level comments on a video.
Get the videos in a playlist, in order.
See trending videos by region and YouTube category.
All video/channel/playlist tools accept IDs or full YouTube URLs.
Provides tools for interacting with YouTube, including transcripts, search, video and channel stats, comments, playlists, and trending videos.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@YouTube MCPSummarise this video: https://youtu.be/dQw4w9WgXcQ"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Install (Claude Desktop)
Download
YouTube.mcpbfrom the latest release.Double-click it (or drag it into Claude Desktop) and click Install.
Optionally paste a YouTube API key in the settings form. Skip it if you only need transcripts.
That's it. No Node, Python or terminal needed: Claude Desktop runs the extension on its built-in runtime.
Try asking Claude:
"Summarise this video: https://youtu.be/..."
"Pull the transcript with timestamps and write chapter markers for the description."
"What are people saying in the comments on this video?"
"Show me @somechannel's last 20 uploads and which ones overperformed."
"What's trending in Australia in Science & Tech right now?"
Related MCP server: YouTube MCP Server
Tools
Tool | What it does | Needs API key | Quota cost |
| Transcript of any public video, paginated for long videos. Options: timestamps, time range ( | No | None |
| Caption tracks available for a video | No | None |
| Search videos, channels or playlists | Yes | 100 |
| Details and stats for up to 50 videos | Yes | 1 |
| Channel info and stats by ID or | Yes | 1 |
| A channel's latest uploads with stats | Yes | ~2 to 3 |
| Top-level comments on a video | Yes | 1 |
| Videos in a playlist, in order | Yes | 1 per 50 |
| Most popular videos by region and category | Yes | 1 |
All tools accept video IDs or any YouTube URL (watch, youtu.be, shorts, live, embed).
Transcript track selection: manual captions are preferred over auto-generated ones, and regional variants count (asking for en will pick a manual en-CA track over an auto-generated en one).
Getting a YouTube API key (optional)
Go to Google Cloud Console and create or pick a project.
APIs & Services > Library, search for YouTube Data API v3, click Enable.
APIs & Services > Credentials > Create credentials > API key.
Recommended: restrict the key to YouTube Data API v3.
The free quota is 10,000 units per day. search costs 100 units, so Claude is told to prefer list_channel_videos when it already knows the channel.
In Claude Desktop you can add or change the key any time under Settings > Extensions > YouTube.
Other MCP clients
The server is a standard stdio MCP server, so it works with Claude Code, Cursor, VS Code, Windsurf and others. Clone the repo and build it:
git clone https://github.com/Promethic-Labs/youtube-mcp.git
cd youtube-mcp
npm install
npm run buildClaude Code
claude mcp add youtube -e YOUTUBE_API_KEY=your_key -- node /absolute/path/to/youtube-mcp/dist/server/index.mjsJSON config (Cursor, Windsurf and most other clients)
{
"mcpServers": {
"youtube": {
"command": "node",
"args": ["/absolute/path/to/youtube-mcp/dist/server/index.mjs"],
"env": { "YOUTUBE_API_KEY": "your_key" }
}
}
}Requires Node 18 or newer. Leave out YOUTUBE_API_KEY if you only want transcripts.
How transcripts work, and their limits
The official YouTube Data API only lets you download captions for videos you own, via OAuth. To support any public video, this server reads the same caption tracks the YouTube web player uses. That means:
Run it locally. YouTube blocks these requests from most cloud and datacenter IPs, so hosting this on a server will usually fail. On a home or office connection it works normally.
It can break. YouTube can change its internal endpoints without notice. If transcripts stop working, check for a new release or open an issue.
Heavy use can get rate limited. If you see a captcha error, wait a while before trying again.
Long videos are paginated. Transcripts come back in pages of about 8,000 words (roughly 11k tokens), well under the tool response limits of Claude Desktop and Claude Code. If there's more, the result includes a
next_cursorand Claude fetches the next page. Usepage_wordsto change the page size, orstartandendto grab a specific section.
Everything except transcripts goes through the official YouTube Data API v3.
Privacy Policy
The extension runs entirely on your computer. It sends requests only to YouTube (www.youtube.com) and the Google YouTube Data API (www.googleapis.com), directly from your machine. It has no analytics or telemetry, stores nothing, and sends nothing to Promethic Labs or any other third party. Your API key is stored by Claude Desktop as a sensitive setting and is never logged.
Full policy, covering data collection, use, storage, sharing, retention and contact: PRIVACY.md
Development
npm install
npm start # run the server from source over stdio
npm run build # bundle into dist/
npm run pack # build and create youtube-mcp.mcpb
npm run validate # validate manifest.json against the MCPB specProject layout:
src/index.js server source (all tools)
manifest.json MCPB manifest (version is synced from package.json on build)
scripts/build.mjs bundles the server with esbuild and assembles dist/
.github/workflows/ CI on every push, release build on version tagsThe server is bundled into a single file, so the .mcpb has no node_modules and stays around 235 KB.
Releasing
Bump
versioninpackage.jsonand add a note toCHANGELOG.md.Commit, then tag and push:
git tag v1.0.2
git push origin main --tagsGitHub Actions builds YouTube.mcpb and attaches it to a new release.
Contributing
Issues and pull requests are welcome. For anything larger than a bug fix, please open an issue first so we can agree on the approach. Please run npm run validate and npm run pack before submitting.
Disclaimer
Not affiliated with, endorsed by, or sponsored by YouTube or Google. YouTube is a trademark of Google LLC. You are responsible for using this tool in line with the YouTube Terms of Service and the YouTube API Services Terms.
About
Built and maintained by Promethic Labs, an AI research lab in Sydney. More of our tools and research at promethic.xyz.
License
Available Tools
9 toolsget_channelGet channel detailsARead-onlyIdempotent
Channel info and stats by channel ID (UC...) or @handle. 1 quota unit.
| Name | Required | Description | Default |
|---|---|---|---|
| channel | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior, so the description does not need to restate that. It adds value beyond annotations by disclosing the quota cost ('1 quota unit') and accepted identifier formats, which are useful operational details even if the return shape is not described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence: purpose first, accepted identifier forms second, and quota cost last. Every word earns its place, and there is no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, read-only lookup, the description covers the purpose, identifier format, and cost, which is enough for an agent to select and call the tool. It does not enumerate the returned stats, but the tool has no output schema and the narrow resource makes that a minor gap rather than a blocking omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage for the single 'channel' parameter is 0%, so the description carries the semantic burden. It does so by explaining that the parameter accepts a UC-prefixed channel ID or an @handle, giving the agent concrete guidance beyond the bare string type. It could add more detail, like examples, but it is sufficient for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific resource ('channel info and stats') and the identifier forms used to locate it (channel ID or @handle). This clearly separates it from sibling tools that operate on videos, playlists, comments, or transcripts, so an agent can distinguish it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the clear selection condition: use this when you need channel-level information or statistics for a channel identified by a UC... ID or @handle. It does not name sibling alternatives or provide when-not-to-use exclusions, so it stops short of fully explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_commentsGet video commentsARead-onlyIdempotent
Top-level comments on a video (ID or URL). 1 quota unit.
| Name | Required | Description | Default |
|---|---|---|---|
| order | No | relevance | |
| video | Yes | ||
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior. The description adds useful behavioral context beyond that: it returns only top-level comments, accepts ID or URL, and costs 1 quota unit. It does not cover pagination or error behavior, but those are minor given the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler: the first states the operation and input, the second the cost. Essential information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, read-only tool with a small schema, the description covers the core behavior, input form, and quota. With annotations supplying the safety profile and the schema supplying constraints, little is missing; the only gap is explaining order semantics or output shape, but those are not critical for invoking it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 clarifies the required 'video' parameter as an ID or URL, but says nothing about the meaning of 'order' (relevance vs time) or 'max_results' beyond what the schema's names, enum, and constraints already show. Partial compensation for a low-coverage schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific resource (video comments), restricts to top-level comments, and accepts ID or URL. This clearly distinguishes it from sibling tools like get_videos, get_channel, and get_transcript.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'on a video' implies use when you have a video ID or URL, but there is no explicit guidance about when to choose this over alternatives, when not to use it, or how it relates to list_transcripts or search. Usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_playlistGet playlist videosBRead-onlyIdempotent
Videos in a playlist, in order. 1 quota unit per 50.
| Name | Required | Description | Default |
|---|---|---|---|
| max_results | No | ||
| playlist_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds a useful non-schema behavior: '1 quota unit per 50', which informs agents about cost per result. It also states ordering behavior. Since annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, the description does not need to repeat those.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one short phrase stating the result and one clause giving the quota cost. There is no wasted text and the core purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read-only tool, the description covers the core return value and cost. However, it omits parameter details and any guidance distinguishing it from related siblings, leaving an agent to infer usage from the tool name and schema alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate, but it does not explain playlist_id or max_results semantics. The word 'playlist' makes playlist_id inferable, and 'per 50' hints at max_results, but no explicit parameter meaning or value guidance is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource ('playlist') and the result ('videos, in order'), and the title adds the 'get' verb. It is easy to tell this tool from generic tools like search or get_channel, though it does not explicitly contrast with list_channel_videos.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool vs alternatives such as list_channel_videos, get_videos, or search. The purpose implies use for playlist videos, but no exclusions or selection criteria are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transcriptGet video transcriptARead-onlyIdempotent
Get a video's transcript (ID or URL). No API key or quota needed. Long transcripts are split into pages of about page_words words; when the result includes next_cursor, more of the transcript remains and can be fetched by calling again with the same arguments plus cursor. timestamps=false gives clean text for summarising; true gives [m:ss] chunks for citing moments or making chapters. start/end (seconds) limit to a section of the video.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | Only include up to this many seconds | |
| start | No | Only include from this many seconds in | |
| video | Yes | ||
| cursor | No | next_cursor from a previous call, to fetch the next page | |
| languages | No | Preference order, e.g. ['en','en-AU'] | |
| page_words | No | Approximate words per page (8000 is roughly 11k tokens) | |
| timestamps | No | ||
| translate_to | No | Machine-translate into this language code, e.g. 'en' | |
| chunk_seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the operation as read-only and idempotent nont-destructive. The description adds substantial behavioral detail beyond that: transcripts are paginated with page_words and next_cursor, timestamps=false returns clean text versus true returning [m:ss] chunks, and start/end restrict to a time range. This is exactly the kind of context agents need.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and every sentence adds value. It leads with the core function, then covers authentication/quota, pagination, timestamp modes, and time-range limiting. No redundant phrases or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even without an output schema, the description tells the agent about the pagination cursor, the format of timestamped chunks, and how to limit by time. It also explains the tradeoff between clean text and timestamped text, which is essential for selecting the right invocation. Combined with schema descriptions for the remaining parameters, this is complete enough for correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, and the description compensates for the undocumented 'video' parameter by clarifying it accepts an ID or URL. It also explains the behavior of page_words, cursor, timestamps, start, and end. Some parameters like languages, translate_to, and chunk_seconds are not described in prose, but the schema already covers them, so the overall parameter semantics are strong.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Get a video's transcript (ID or URL).' It is immediately clear what the tool does and how it differs from sibling tools like list_transcripts, which likely lists available transcripts rather than fetching content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: no API key or quota needed, pagination with cursor, and parameter-driven modes for summarizing vs citing. It does not explicitly name alternative tools or exclusion conditions, but the practical guidance is strong enough for an agent to know when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_videosGet video detailsARead-onlyIdempotent
Full details and stats for up to 50 videos (IDs or URLs). 1 quota unit.
| Name | Required | Description | Default |
|---|---|---|---|
| videos | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safe read-only behavior is covered. The description adds the useful '1 quota unit' cost note, but it does not describe response shape, error handling, or behavior for invalid IDs. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no filler. The core behavior and input constraint are front-loaded, and the quota note is placed last. Every word contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read-only tool with informative annotations, this description is nearly complete: it covers input types, limits, result scope, and cost. Without an output schema, a more explicit return-shape note would be helpful, but 'Full details and stats' provides adequate orientation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description is the only documentation of the 'videos' parameter. It adds essential meaning by stating that strings can be IDs or URLs and that up to 50 are allowed. It stops short of concrete URL format examples but compensates well for the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (videos) and the operation's scope: retrieving full details and stats for up to 50 videos. The 'IDs or URLs' qualifier helps distinguish this from tools like search or list_channel_videos, though it does not explicitly name those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'IDs or URLs' phrase implies this tool is for callers who already have specific video references rather than for discovery via search or channel listing. However, the description gives no explicit when-to-use or when-not-to-use guidance and never mentions sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_channel_videosList channel videosARead-onlyIdempotent
Latest uploads for a channel (ID or @handle), newest first, with stats. ~2-3 quota units.
| Name | Required | Description | Default |
|---|---|---|---|
| channel | Yes | ||
| with_stats | No | ||
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish read-only and idempotent behavior, and the description adds useful beyond-annotation context: results are ordered newest first, statistics are included, and the call costs roughly 2-3 quota units. It does not mention pagination or exact return fields, but the core behavioral traits are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one front-loaded sentence that packs the essential purpose, sort order, stats, channel format, and quota cost without any filler. Every clause contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for selecting and invoking the tool, especially with the annotations covering safety and the schema providing defaults and bounds for max_results. However, because there is no output schema and the parameter descriptions are absent, the agent is left without explicit details about return shape or the exact meaning of with_stats and max_results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description needed to carry parameter meaning, but it only clarifies the required channel parameter (ID or @handle). The with_stats and max_results parameters are left to inference from their names and defaults, so the description only partially compensates for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists a channel's latest uploads, newest first, with statistics, and notes the channel can be identified by ID or @handle. It is specific about the resource and sort order, though it does not explicitly contrast itself with sibling tools like search or get_videos.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Latest uploads for a channel' implies this is the tool to use when you need a channel's recent videos, which provides contextual guidance. It does not, however, state when to prefer an alternative or when not to use this tool, leaving the usage boundary to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_transcriptsList transcript tracksARead-onlyIdempotent
List caption tracks available for a video (ID or URL). No API key or quota needed.
| Name | Required | Description | Default |
|---|---|---|---|
| video | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds genuinely useful operational context beyond annotations: the video may be passed as an ID or URL and no API key or quota is consumed. It doesn't describe return format, but that is secondary for a simple read-only listing operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, with the action front-loaded and no filler. The auth/quota note is a meaningful extra detail rather than repetition of the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one simple parameter, rich safety annotations, and no output schema, the description supplies the essential invocation details: what the tool lists and how to specify the video. It could mention the shape of the returned track list, but an agent can still call the tool correctly without that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. The parenthetical 'ID or URL' defines what the 'video' parameter means, which is the main semantic an agent needs beyond the property name. For a single-parameter tool, this is adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'List caption tracks available for a video', which clearly names the verb and resource. The word 'available' distinguishes it from get_transcript, which would fetch the transcript content, so an agent can tell them apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies a natural workflow of listing tracks before fetching a transcript, but it never names the sibling tool get_transcript or states when not to use this tool. The 'ID or URL' and 'No API key or quota needed' details give practical context but do not explicitly compare alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch YouTubeARead-onlyIdempotent
Search YouTube for videos, channels or playlists by keyword, with optional filters for date, region, channel and sort order. Uses 100 of the 10,000 daily YouTube API quota units per call (other tools use about 1).
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | video | |
| order | No | relevance | |
| query | Yes | ||
| channel_id | No | ||
| max_results | No | ||
| region_code | No | e.g. AU, US | |
| published_after | No | RFC3339, e.g. 2026-01-01T00:00:00Z |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context beyond annotations by disclosing the high API quota cost: 100 of 10,000 units per call, compared to about 1 for other tools. This is valuable for an agent deciding whether to use search liberally. It doesn't mention pagination or response shape, but the annotation coverage lowers the bar.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. The core purpose and filters are front-loaded in the first sentence, and the quota warning is placed second as a relevant operational note. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with 7 parameters, no output schema, and moderate complexity, the description covers the purpose, scope, filter dimensions, and an important quota caveat. It does not describe the result format or pagination, which an agent might need, but the annotations cover safety/idempotence and the schema covers parameter constraints. The description is mostly complete for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 29%, so the description must compensate. It does: 'date' maps to published_after, 'region' maps to region_code, 'channel' maps to channel_id, and 'sort order' maps to order. It also treats 'query' as the keyword and 'videos, channels or playlists' maps to the type enum. max_results is not semantically explained in the description, but the schema's minimum/maximum/default provide enough operational detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the verb 'search', the resource 'YouTube', and the exact scope: videos, channels, or playlists by keyword. It also lists the filter dimensions (date, region, channel, sort order), which distinguishes it from sibling tools like get_videos or trending that suggest direct retrieval rather than keyword search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the primary use case clearly: keyword-based discovery across YouTube content types. It does not explicitly name when to prefer search over siblings such as get_videos or trending, nor does it state exclusions, so it falls short of explicit when/when-not guidance. However, the keyword framing provides enough context for an agent to select this tool over direct retrieve-by-ID siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trendingGet trending videosARead-onlyIdempotent
Most popular videos right now in a region. Optional category_id (28 Science & Tech, 20 Gaming, 22 People & Blogs, 24 Entertainment). 1 quota unit.
| Name | Required | Description | Default |
|---|---|---|---|
| category_id | No | ||
| max_results | No | ||
| region_code | No | AU |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds a quota cost ('1 quota unit') and category examples, which are useful. It does not describe pagination or response format, but the bar is lower given annotations. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The core purpose is front-loaded, followed by a useful parameter hint and a quota note. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with all optional parameters, the description covers the essential purpose and one parameter's meaning, but lacks details on the other parameters and return format. Given no output schema and low schema coverage, it is partially complete but leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 provides examples for category_id (28, 20, 22, 24) but does not explain max_results (beyond schema default/max) or region_code format. This leaves two of three parameters without semantic guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the most popular videos in a region, with a specific verb ('Get' implied) and resource (trending videos). It distinguishes from siblings like search or get_videos by focusing on popularity and regional scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the primary use case clear—retrieving trending videos—and implicitly signals it is not for searching or fetching specific videos. However, it does not explicitly state when to avoid it or name alternatives, though context is sufficient for an agent to infer the appropriate scenario.
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.
9 tool updates
v1.2.0- First observed
get_channel - First observed
get_comments - First observed
get_playlist - First observed
get_transcript - First observed
get_videos - First observed
list_channel_videos - First observed
list_transcripts - First observed
search - First observed
trending
TDQS
Scored across 9 tools
Each tool targets a clearly distinct resource or action: videos, search, channels, channel uploads, comments, playlists, trending, and transcripts. There is no meaningful overlap that would confuse an agent.
Most tools follow a predictable get_/list_ convention, and the list_ versus get_ distinction is sensible. Search and trending are standalone verbs rather than verb_noun names, but they are still clear and not jarring.
Nine tools is a well-scoped size for a YouTube MCP server. Each tool covers a major YouTube data access need without unnecessary bloat.
The surface covers the core read-only YouTube domain thoroughly: search, video details, channels, channel uploads, comments, playlists, trending content, and transcripts. There are no obvious dead ends for common discovery and analysis workflows.
Maintenance
Related MCP Connectors
YouTube transcripts, search, channel/playlist listings and upload tracking for AI agents.
YouTube transcripts, search, channels, playlists and bulk transcript jobs for AI agents. 14 tools.
YouTube transcripts, search, channel browsing, and playlists for AI agents via MCP.
YouTube discovery, transcripts, library search, and monitors with API keys or OAuth.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables YouTube integration with Claude Code, including video search, metadata retrieval, transcript fetching, channel exploration, and trending videos.81MIT
- FlicenseNot gradedqualityCmaintenanceEnables bringing YouTube into Claude Code for video transcripts, search, metadata, channel info, playlists, comments, trending videos, engagement analytics, chapters, SponsorBlock clean transcripts, and most-replayed heatmaps.19 npm-
- FlicenseAqualityCmaintenanceEnables Claude Code to access YouTube features such as video transcripts, search, metadata, channel info, playlists, comments, trending videos, engagement analytics, chapters, SponsorBlock, and most-replayed heatmaps.1519 npm1-
- FlicenseAqualityCmaintenanceEnables Claude Code to retrieve YouTube transcripts, search videos and channels, fetch metadata, playlists, comments, trending videos, engagement analytics, chapters, SponsorBlock-cleaned transcripts, and most-replayed heatmaps.1519 npm-