Skip to main content
Glama
ChristophLanganke

youtube-mcp

youtube-mcp

MCP server that gives Claude Desktop access to YouTube transcripts and your own YouTube account data.

Built for the case "let Claude read/summarize this video": get_transcript pulls the subtitle track of any public video and hands it over as plain text, so Claude can summarize, translate or quote it without you watching the video.

What you need

Most of what people install this for needs no Google account at all. The three tiers:

You want

You need

Transcripts, caption languages, video metadata

Nothing. Clone, npm install && npm run build, register with your MCP client

Full-text search, a channel's uploads, public playlists

A Google account, a Cloud project and an API key — no OAuth, no consent screen

Your own subscription feed, playlists, uploads and captions

The above plus the OAuth sign-in in step 3

Transcripts come from the InnerTube endpoint the YouTube player itself uses, not from the YouTube Data API, which is why the first tier needs no credentials and consumes no quota. If summarising videos is all you are after, do step 1, then jump straight to step 4 — steps 2 and 3 do not apply to you.

Related MCP server: YouTube MCP

Capabilities

Tool

Needs sign-in

Purpose

get_transcript

no

Transcript of any public video, as text / timestamps / SRT / VTT / JSON

list_transcript_languages

no

Which caption tracks exist, auto vs human, translatable

get_video_info

no

Title, channel, duration, description, view count

list_channel_uploads

API key or sign-in

Recent uploads of any channel (ID, @handle or URL) — 1 quota unit

get_subscription_feed

yes

Merged newest-first feed across all your subscriptions

search_videos

API key or sign-in

Full-text search — 100 quota units

get_playlist_items

public: API key

Videos in a playlist

get_auth_status

no

What the server can currently do

list_my_subscriptions

yes

Channels you follow

list_my_playlists

yes

Your own playlists

list_my_uploads

yes

Videos you uploaded

list_my_video_captions

yes

Official caption tracks of your own videos, incl. drafts

download_my_caption

yes

Download an official caption track you own

Transcripts do not consume YouTube Data API quota — they come from the caption endpoint the player itself uses. Only the tools marked as using quota do.

Quota

The daily budget is 10 000 units, and search.list costs 100 of them per call — 100 calls a day. Listing a channel's videos does not need search at all: every channel has an auto-maintained uploads playlist whose ID is the channel ID with UC swapped for UU, and playlistItems.list on it costs 1 unit while returning uploads completely rather than best-effort.

get_subscription_feed uses that: a feed over 120 subscriptions costs roughly 123 units instead of the 12 000 the search route would need — which would not fit in a day at all. Results are cached on disk (subscriptions 24 h, uploads 12 min), so a repeated feed call usually costs nothing, and dead channels are cached as failures so they are not re-requested on every call.

search_videos stays for genuine full-text search. Calling it with channel_id but no query is routed to the cheap path automatically.

Setup

1. Install and build

git clone https://github.com/ChristophLanganke/youtube-mcp.git
cd youtube-mcp
npm install
npm run build

At this point transcripts already work — skip to step 4 and register the server with your MCP client. Steps 2 and 3 exist only for the Data API tools, and you need them only if you want search or your own account data.

2. Google Cloud credentials (optional — for search and account access)

The old "OAuth consent screen" page is gone — Google replaced it with the Google Auth Platform section. German console labels are given in parentheses.

  1. Open the Google Cloud Console and create a project.

  2. APIs & Services → Library (Bibliothek) → enable YouTube Data API v3.

  3. Google Auth Platform → Get started (Erste Schritte). The wizard asks for an app name, your support email, the audience — choose External (Extern) — and a contact email. The app name must not contain a Google trademark: anything with YouTube, Google or Gmail in it is rejected, because the name would imply a partnership. The wizard still accepts such a name, but every later attempt to save the branding form fails with "Name der Anwendung entspricht nicht den Anforderungen von Google". Pick a neutral name up front — the reference deployment of this server is registered as Langanke Media MCP.

  4. Google Auth Platform → Audience (Zielgruppe) → Test users (Testnutzer): add your own Google address. Without this, sign-in fails with access_denied.

  5. Google Auth Platform → Data access (Datenzugriff) → Add or remove scopes: add .../auth/youtube.readonly and .../auth/youtube.force-ssl, then save.

  6. Google Auth Platform → Clients → Create client (Client erstellen) → application type Desktop app (Desktop-App).

  7. Copy the client ID and secret into .env:

cp .env.example .env
GOOGLE_CLIENT_ID=...apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=...

Optionally add YOUTUBE_API_KEY so search works without signing in.

Two things to expect, both normal for a personal project:

  • The consent screen warns that the app is not verified. Click Advanced (Erweitert)Go to … (unsafe). Verification only matters for apps offered to other people.

  • While the app's publishing status is Testing, the refresh token expires after 7 days, so you have to re-run npm run auth weekly. Setting the status to In production (In Produktion) under Google Auth Platform → Audience removes that limit; the unverified warning stays.

Publishing to production is not just a button, though. Audience → Publish app stays greyed out until the Branding page is complete, and for scopes Google classes as sensitive — both YouTube scopes are — that means four fields that need real, reachable URLs on a domain you control:

Field

Example

Authorized domain (Autorisierte Domain)

yourname.github.io

Application home page

https://yourname.github.io/youtube-mcp/

Privacy policy link

https://yourname.github.io/youtube-mcp/privacy.html

Terms of service link

https://yourname.github.io/youtube-mcp/terms.html

localhost and file paths are rejected, and so is a bare github.io — that one is on the Public Suffix List, so the authorized domain has to be the full host including your user name.

The cheapest way to get those URLs is to fork this repository: docs/ already contains a home page, a privacy policy and terms of service. Enable Settings → Pages → Deploy from a branch → main → /docs on your fork, wait for the first build, then adjust the operator name, the contact address and the app name in those three files to your own. Publishing to production also makes the test-user list irrelevant: anyone with a Google account can then consent — though only if they have your client ID and secret, which stay in your local .env.

3. Sign in once (optional — only for your own account data)

An API key from step 2 already covers search and public playlists. Sign in only if you want the tools that read your own subscriptions, playlists, uploads or captions.

npm run auth

This opens a browser, asks for consent, and stores the token at ~/.youtube-mcp/token.json (mode 0600). The server refreshes it automatically afterwards.

Sign out again with:

npm run auth -- --logout

4. Register with your MCP client

Requires Node 20 or newer. For Claude Desktop, add the server to ~/Library/Application Support/Claude/claude_desktop_config.json on macOS, or to %APPDATA%\Claude\claude_desktop_config.json on Windows:

{
  "mcpServers": {
    "youtube": {
      "command": "node",
      "args": ["/absolute/path/to/youtube-mcp/dist/index.js"]
    }
  }
}

The path must be absolute and must point at the built dist/index.js, not at src/. On Windows, write the path with escaped backslashes (C:\\Users\\you\\youtube-mcp\\dist\\index.js) or with forward slashes. Then restart Claude Desktop.

Any other MCP client works the same way — the server speaks MCP over stdio and is started with node dist/index.js. In Claude Code, for example:

claude mcp add youtube -- node /absolute/path/to/youtube-mcp/dist/index.js

Usage examples

Fasse mir dieses Video zusammen: https://www.youtube.com/watch?v=...

Welche Untertitelsprachen hat das Video? Hol das deutsche Transkript.

Was wird zwischen Minute 12 und 18 gesagt? — uses start_seconds / end_seconds

Zeig mir die letzten 10 Videos meiner Abos und fasse das neueste zusammen.

For long videos the transcript is capped at max_chars (default 100 000). The response says so explicitly; ask for a later start_seconds to continue, or set max_chars: 0 to lift the cap.

Authentication design

Sign-in uses Google OAuth 2.0 for installed apps (loopback redirect + PKCE), not your YouTube password. Reasons:

  • Your password is never handled or stored — only a revocable token is.

  • Revoke access any time at myaccount.google.com/permissions.

  • Automating a password login would violate YouTube's Terms of Service and break on every login-flow change.

Scopes requested: youtube.readonly and youtube.force-ssl (the latter is required by captions.download). The server never writes to your account — no tool uploads, edits or deletes.

How transcripts are fetched

The YouTube WEB InnerTube client stopped returning caption tracks to unauthenticated callers, so src/innertube.ts tries the ANDROID client, then IOS, then falls back to scraping ytInitialPlayerResponse from the watch page. The first transport that returns caption tracks wins. Cues are requested in json3 format and parsed in src/transcript.ts.

If all three fail, the video is usually private, age-restricted, region-blocked or deleted.

Limitations

  • Videos without captions (many live streams, some uploads) yield nothing — there is no speech-to-text fallback.

  • captions.download works only for videos owned by the signed-in account; that is a YouTube restriction. Use get_transcript for third-party videos.

  • YouTube rate-limits the caption endpoint (HTTP 429) if hit rapidly in a loop.

  • Search and playlist tools share the default 10 000 units/day API quota; a search costs 100.

License

ISC — see LICENSE. The transcripts and video metadata this server retrieves are not covered by it; they belong to the rights holders of the respective videos.

Available Tools

13 tools
download_my_captionA

Download an official caption track as SRT or VTT. Only works for videos owned by the signed-in account — use get_transcript for anything else.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNosrt
caption_idYesCaption ID from list_my_video_captions

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavioral burden. It discloses a critical restriction (only works for owned videos) and indicates the output format. It does not detail failure modes or the exact response envelope, but for a simple download tool this is adequate and goes beyond the schema.

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 sentences with no fluff. The core action is front-loaded, the ownership constraint is stated clearly, and the alternative tool is referenced in the second half. Every word earns its place.

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

Completeness5/5

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

With one required parameter, a format enum, and no output schema, the description provides enough: purpose, scope limitation, output formats, and the correct alternative when the ownership condition fails. An agent can invoke this tool correctly without needing more context.

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 50%; only caption_id is described in the schema, while format has an enum and default. The description mentions SRT/VTT, mirroring the enum, but adds no new parameter-level 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.

Purpose5/5

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

The description states a specific verb ('Download'), a resource ('official caption track'), and the output formats ('SRT or VTT'). It also explicitly distinguishes itself from get_transcript by naming the ownership restriction, making the tool's purpose unmistakable.

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

Usage Guidelines5/5

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

It says exactly when to use this tool versus the alternative: 'Only works for videos owned by the signed-in account — use get_transcript for anything else.' This is an explicit conditional with a named sibling, leaving no ambiguity for an agent.

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

get_auth_statusA

Report whether the server is signed in to a Google account and which capabilities are available.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavioral burden. It explicitly frames this as a reporting/status operation, implying a non-mutating read. It could add detail about whether the status check triggers network calls, but for such a simple status tool the transparency is reasonable.

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, focused sentence with no filler. It front-loads the purpose and uses concise wording that conveys both the resource and the output.

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

Completeness5/5

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

Given a zero-parameter tool, no output schema, and a simple boolean/capabilities status purpose, the description is complete enough for an agent to select and invoke the tool correctly.

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?

The tool has zero parameters, so the baseline is 4. There are no parameter semantics to document, and the description correctly describes the tool's scope without pretending there are parameters.

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 states a specific action ('Report') on a specific resource (server Google account authentication) and the exact content (signed-in status and available capabilities). It is clearly distinct from the sibling tools, which all perform listing/search/transcript operations rather than status checks.

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?

There are no sibling tools with similar purpose, so no alternative routing is needed. The context is clear: use this when you need to know whether the server is authenticated and what it can do. It does not prescribe an explicit 'use before X' pattern, but for a status-reporting tool this is adequate.

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

get_playlist_itemsA

List the videos in a playlist. Public playlists work with an API key; private ones need sign-in. Combine with get_transcript to summarize a whole playlist.

ParametersJSON Schema
NameRequiredDescriptionDefault
playlistYesPlaylist ID or a URL containing ?list=
page_tokenNo
max_resultsNo1-50

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are present, so the description carries the full behavioral burden. It does disclose an important auth behavior (API key for public, sign-in for private) beyond the schema. However, it does not reveal that results are paginated (page_token exists) or what items the call returns beyond 'videos', leaving some operational behavior implied.

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 short sentences, each earning its place: purpose first, then auth condition, then a cross-tool workflow hint. No filler, no restating of schema defaults, and the most decisive information is front-loaded.

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 3-param list tool with no annotations and no output schema, the description covers purpose, auth, and the transcript workflow, which covers the happy-path call. But pagination is unmentioned despite the page_token param being undocumented in the schema, leaving an agent to invent or miss paging behavior on long playlists.

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 coverage is 67% and the description adds essentially no parameter meaning: it does not explain playable page_token pagination or how max_results relates to page size. The 'Playlist ID or URL with ?list=' guidance already lives in the schema, so the description only adds marginal value over the structured field text.

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 opens with 'List the videos in a playlist' — a specific verb and resource that an agent can act on. This clearly distinguishes the tool from its siblings such as list_channel_uploads (channel-scoped), search_videos, and get_transcript, without needing to open any schema.

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 gives practical usage context: public playlists work with an API key while private ones need sign-in, which tells the agent the authentication precondition. It also offers a workflow hint (combine with get_transcript to summarize a playlist). It does not explicitly name alternatives or state when-not-to-use, but the condition is reasonably clear.

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

get_subscription_feedA

Merged newest-first feed of recent uploads across the signed-in account's subscriptions — the "what is new from the channels I follow" view. Requires sign-in. Results are cached, so repeated calls are nearly free. Combine with get_transcript to summarize what is new.

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNoISO 8601 datetime; only videos published after this moment
channelsNoOptional: restrict to these channels (IDs, @handles or URLs) instead of all subscriptions
max_resultsNoVideos in the merged result, 1-100
per_channelNoUploads fetched per channel before merging, 1-50

TDQS

A4.2/5.0
Behavior4/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 explicitly notes that sign-in is required and that results are cached (making repeated calls cheap), which materially affects how an agent plans calls. It stops short of explaining pagination, return format, or what happens with zero subscriptions, but covers the main operational traits.

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 short sentences carry the core purpose, the sign-in requirement, caching behavior, and a cross-tool suggestion. Information is front-loaded and every sentence earns its place.

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 there is no output schema summary, the description conveys the operation's purpose fact. It also signals important operational context (sign-in required, cached results) that an agent needs for repeated calls. It does not spell out response shape or rate-limit implications of caching, and with four parameters all covered by the schema it is still fairly complete for a read-only feed tool. Minor gap around exactly how merged ordering/filtering is resolved, but the description is sufficient for an agent to select and call it.

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%, so all four parameters are already documented with types, defaults, and constraints. The description adds the 'merged' context and the cached behavior but doesn't need to repeat schema-level parameter details beyond that. Baseline 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 names a specific resource ('subscriptions' feed) and a specific action ('merged newest-first feed of recent uploads'), clearly distinguishing it from sibling tools like list_channel_uploads and search_videos. It also explains the user-facing concept ('what is new from the channels I follow'), leaving no ambiguity about what the tool returns.

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 states when to use the tool (after sign-in, to see new uploads from followed channels) and suggests composing it with get_transcript. It does not explicitly state when NOT to use it or list alternatives (e.g., search_videos for query-based discovery), but the context is clear enough for an agent to route correctly.

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

get_transcriptA

Fetch the transcript/subtitles of a YouTube video for reading, summarizing or quoting. Works for any public video without sign-in. Accepts a video ID or any YouTube URL. Long transcripts are truncated at max_chars — request a later start_seconds to continue.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoPreferred caption language code, e.g. de or en. Defaults to the video's default track.
videoYesVideo ID or URL (watch, youtu.be, shorts, embed)
formatNotext = plain prose (cheapest, best for summarizing); timestamped = [mm:ss] lines for citing momentstext
max_charsNoCharacter budget for the transcript body. Set 0 for no limit.
end_secondsNoOnly include cues at or before this timestamp
translate_toNoMachine-translate the track into this language code, e.g. de. Only for translatable tracks.
prefer_manualNoPrefer human-written captions over auto-generated ones when both exist
start_secondsNoOnly include cues at or after this timestamp
include_metadataNoPrefix the output with title, channel, duration and track info

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 carries the behavioral disclosure burden. It discloses the access requirement (no sign-in), the input formats accepted, and the critical truncation behavior: long transcripts are cut at max_chars and can be continued by requesting a later start_seconds. It does not mention error cases or rate limits, but covers the most agent-relevant behaviors.

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 four short sentences, each earning its place: purpose, access scope, accepted input shapes, and truncation behavior. It is front-loaded with the core purpose and contains no filler or repetition.

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 the tool's complexity (9 parameters, no annotations, no output schema), the description is admirably complete for invocation purposes. It covers purpose, auth, input, and pagination behavior. It could go further by briefly describing the return shape or error cases, but the schema already documents all parameters and formats.

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 the baseline is 3. The description adds value beyond the schema by explaining the interaction between max_chars and start_seconds for continuing truncated transcripts, and by clarifying that the tool works for any public video regardless of auth. This extra semantic context justifies a 4.

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 uses a specific verb and resource: 'Fetch the transcript/subtitles of a YouTube video.' It states the intended uses (reading, summarizing, quoting) and the scope (any public video, no sign-in), which distinguishes it from siblings like list_transcript_languages and download_my_caption.

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 gives a clear context for use: works for any public video without sign-in, and accepts a video ID or any YouTube URL. It does not explicitly name sibling alternatives for edge cases like private videos or the user's own captions, so it falls short of full when/when-not guidance.

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

get_video_infoA

Get metadata for a video: title, channel, duration, description, view count and whether captions exist. Needs no sign-in and no API quota.

ParametersJSON Schema
NameRequiredDescriptionDefault
videoYesVideo ID or URL
full_descriptionNoReturn the whole description instead of the first 1000 characters

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses that no authentication and no API quota are required, which is meaningful access context. It does not cover error cases or invalid video behavior, but the read-only nature of metadata retrieval is reasonably clear.

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 two sentences with no filler. The primary purpose and key fields are front-loaded, and the access requirement is stated efficiently in the second sentence.

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?

For a simple two-parameter read tool with no output schema, the description lists the returned metadata fields and states access requirements. It is complete enough for an agent to invoke correctly, though it does not describe the exact response structure or error behavior.

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%, so the schema already explains both parameters. The description adds no extra meaning about the video parameter format or the full_description boolean beyond what the schema 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 a specific verb ('Get metadata for a video') and enumerates the returned fields (title, channel, duration, description, view count, captions existence). It does not explicitly name sibling tools, but the metadata focus is semantically distinct from transcript and upload tools.

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 provides clear context by stating it needs no sign-in and no API quota, which tells an agent when this public-access tool is appropriate. It does not explicitly state when not to use it or name alternatives, so it stops short of full exclusion guidance.

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

list_channel_uploadsA

List a channel's most recent uploads, newest first. Prefer this over search_videos whenever you want "the latest videos from channel X" — it costs 1 quota unit instead of 100 and returns uploads completely, including videos whose title does not contain any particular word.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelYesChannel ID (UC...), uploads playlist ID (UU...), @handle, or channel URL
page_tokenNonextPageToken from a previous call
max_resultsNo1-50
published_afterNoISO 8601 datetime; only return videos published at or after this moment

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 carries the behavioral disclosure burden. It adds meaningful context beyond the schema: quota cost, completeness of results, ordering, and a contrast with search_videos. It does not mention auth requirements or rate limits, but for a read-oriented list operation the disclosed behaviors are substantive.

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 two sentences, front-loads the action and ordering, and devotes the second sentence to high-value usage differentiation. Every clause earns its place with no filler or redundancy.

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?

For a relatively simple list tool with full schema coverage and no output schema, the description provides enough to call it correctly: resource, ordering, parameter semantics via schema, and a usage caveat. It could be more explicit about the exact response shape, but the behavior described is sufficient for correct invocation.

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%, so all four parameters are already documented in the input schema. The description reinforces that the 'channel' parameter refers to the channel whose uploads are listed, but does not add new parameter-level meaning beyond the schema. Baseline 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 starts with a specific verb and resource: 'List a channel's most recent uploads, newest first.' It clearly distinguishes itself from the sibling search_videos by positioning this as the channel-uploads listing tool, so an agent knows exactly what it does.

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

Usage Guidelines5/5

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

The description explicitly says to prefer this tool over search_videos when fetching 'the latest videos from channel X,' and gives concrete reasons: lower quota cost (1 vs 100 units) and complete upload coverage including videos whose titles don't match a keyword. This is direct when-to-use guidance with an alternative named.

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

list_my_playlistsB

List the signed-in account's own playlists. Requires sign-in.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_tokenNo
max_resultsNo1-50

TDQS

B3.1/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 only states 'Requires sign-in,' which is a minimal behavioral note. It does not disclose pagination behavior, whether the list is ordered, whether it includes only public playlists or also private ones, or any side effects. For a read-only listing tool, the lack of behavioral context beyond sign-in is a notable gap.

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 two short sentences with no wasted words. The core purpose is front-loaded, and the sign-in requirement is stated efficiently. It earns a 4 for being concise and clear, though it could add a bit more useful context without becoming bloated.

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 has no annotations, no output schema, and a partially documented parameter, the description is incomplete. An agent would not know what the response looks like, how pagination works, or what page_token means. For a simple listing tool, this is a moderate gap, but the lack of any return-format or pagination guidance makes it insufficient for confident invocation.

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 50%: max_results has a description ('1-50') but page_token has none. The description does not add any parameter-level meaning beyond the schema. With 50% coverage, the description should compensate for the undocumented page_token, but it does not. Baseline 3 is appropriate because the schema covers half the parameters, but the gap remains.

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 states a specific verb ('List') and resource ('the signed-in account's own playlists'), which clearly distinguishes it from sibling tools like search_videos or get_playlist_items. It does not explicitly name a sibling, but the scope is clear enough to differentiate.

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 implies usage context: it requires sign-in and is for the signed-in account's own playlists. It does not explicitly state when to use this tool versus alternatives like get_playlist_items or list_my_subscriptions, nor does it mention exclusions. The sign-in requirement is a useful contextual cue but not a full usage guideline.

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

list_my_subscriptionsB

List the channels the signed-in account is subscribed to. Requires sign-in.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_tokenNonextPageToken from a previous call
max_resultsNo1-50

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden of behavioral disclosure. It states the auth requirement and scoping, but omits pagination behavior, response shape, error semantics, and any explicit statement about read-only safety.

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 with no filler; the main purpose is stated first and the auth prerequisite is front-loaded. Every word contributes to describing the tool.

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?

This is a simple list operation, but with no output schema the description should provide more context about what the response contains and how pagination flows. The schema covers the page_token parameter, but the description alone leaves the return structure and retrieval pattern under-specified.

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%, with both page_token and max_results fully described in the input schema. The description adds no parameter-specific detail, so the baseline score of 3 applies.

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 identifies the verb ('List'), the resource ('channels the signed-in account is subscribed to'), and the auth context. It allows an agent to distinguish this from siblings like get_subscription_feed based on the channel focus, though it does not explicitly name any alternative.

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 only usage guidance is 'Requires sign-in,' which is a prerequisite but not a directive about when to select this tool versus alternatives such as get_subscription_feed or list_channel_uploads. No exclusions or condition-based routing is provided.

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

list_my_uploadsB

List videos uploaded by the signed-in account, newest first. Requires sign-in.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_tokenNo
max_resultsNo1-50

TDQS

B3.3/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 discloses the sign-in requirement and ordering, but does not mention pagination behavior, rate limits, or what happens if the user is not signed in. For a read-only list operation, the lack of explicit safety disclosure is a gap.

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 with no filler. The core action and ordering are front-loaded, and the sign-in requirement is stated efficiently.

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 simple list tool with two optional parameters and no output schema, the description is mostly adequate. However, it lacks guidance on pagination behavior and error handling for the sign-in requirement, which an agent would need for robust invocation.

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 50%: max_results has a description ('1-50') but page_token has none. The description adds the 'newest first' ordering context, which helps interpret pagination, but it does not explain page_token semantics beyond what the schema provides. 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 states a specific verb ('List'), resource ('videos uploaded by the signed-in account'), and ordering ('newest first'). It clearly distinguishes from siblings like list_channel_uploads and search_videos, though it doesn't explicitly name them.

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 implies usage context: it is for the signed-in account's uploads, and it notes 'Requires sign-in.' It does not explicitly state when to use alternatives like list_channel_uploads or search_videos, but the scope is clear enough for an agent to infer.

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

list_my_video_captionsA

List the official caption tracks of a video owned by the signed-in account, including drafts that are not publicly served. Requires sign-in and video ownership.

ParametersJSON Schema
NameRequiredDescriptionDefault
videoYesVideo ID or URL of a video you own

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description takes on the full disclosure burden. It states the sign-in and ownership requirements and the non-public draft behavior, which are key behavioral traits. It does not detail error handling or return format, but for a simple read operation these are less critical.

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 two concise sentences with no redundancy, front-loading the main purpose and adding the draft inclusion and auth requirements without filler. Every sentence earns its place.

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?

For a single-parameter list operation with no output schema, the description covers the essential usage: what it lists, ownership scope, and auth prerequisite. It doesn't specify the exact output structure, but an agent can infer it will return caption track metadata; the simplicity of the tool makes this sufficient.

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%: the parameter 'video' is described as 'Video ID or URL of a video you own'. The description reiterates the ownership aspect but adds no new syntax or format details beyond the schema, so it sits at the baseline for 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 (list), resource (official caption tracks), and ownership scope (video owned by the signed-in account). It also mentions the inclusion of drafts, which distinguishes it from siblings like get_transcript or download_my_caption, making the purpose precise.

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 gives clear context for use: it is for owned videos and explicitly notes that it includes drafts not publicly served. It doesn't name alternatives explicitly, but the ownership requirement and draft inclusion indirectly differentiate it from other caption-related tools, so no exclusions are needed.

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

list_transcript_languagesA

List the caption tracks available for a video (language, human-written vs auto-generated, translatable) plus the languages YouTube can machine-translate into. Use before get_transcript when unsure.

ParametersJSON Schema
NameRequiredDescriptionDefault
videoYesVideo ID or URL

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description helpfully enumerates the shape of what the tool returns: human-written vs auto-generated captions and translatable languages. It could add a note about read-only behavior or missing captions, but the single verb 'List' makes the non-mutating nature reasonably clear.

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 sentences, no filler. The first sentence front-loads the exact output categories, the second provides actionable selection guidance by referencing get_transcript.

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?

For a listing/discovery tool, the description covers what data to expect and when to call it, which is enough for an agent to use it correctly. It does not specify auth requirements or behavior when no captions exist, but those are secondary for this 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?

The schema already describes the only parameter ('Video ID or URL') with 100% coverage, so the description does not need to add parameter-level detail. No extra semantic guidance is provided, which is acceptable at the baseline.

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 what the tool does: lists available caption tracks (language, human-written vs auto-generated, translatable) and the languages YouTube can machine-translate into. It is unambiguous and distinct from transcript-fetching or metadata tools.

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

Usage Guidelines5/5

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

Explicitly tells the agent when to use this tool—'Use before get_transcript when unsure'—and names the relevant sibling tool, which is the main decision it needs to make.

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

search_videosA

Full-text search across YouTube. Costs 100 quota units per call, so use list_channel_uploads instead when you just want a channel's recent videos. Requires sign-in or YOUTUBE_API_KEY. Passing channel_id without query is routed to the cheap uploads path automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault
orderNorelevance
queryNoSearch terms. Optional if channel_id is given.
channel_idNoRestrict results to this channel
max_resultsNo1-50
published_afterNoISO 8601 datetime, e.g. 2026-01-01T00:00:00Z

TDQS

A4.8/5.0
Behavior5/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 goes beyond the basic read-only implication by disclosing the concrete quota cost, the sign-in/API-key requirement, and the surprising auto-routing behavior. These are exactly the kind of behavioral traits an agent needs to compare with alternatives before calling.

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 sentences with no filler: purpose, cost-plus-alternative, auth, and routing. Each sentence earns its place and the most important differentiator (cost/alternative) comes first.

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 the lack of annotations and output schema, the description covers the crucial facts: what it does, when not to use it, auth, cost, and a non-obvious parameter interaction. It doesn't spell out the exact return format, but the primary invocation requirements are fully addressed.

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?

With 80% schema description coverage, the baseline is 3. The description adds valuable inter-parameter behavior — query is optional when channel_id is present, and channel_id without query routes to the cheap uploads path. This goes beyond the schema's individual parameter descriptions and explains how parameters interact.

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 says 'Full-text search across YouTube' — a specific verb and resource. It distinguishes the tool from list_channel_uploads by drawing a sharp contrast: use that when you only want recent channel uploads. An agent can identify the tool's role 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.

Usage Guidelines5/5

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

Explicitly instructs when to avoid this tool and use list_channel_uploads instead, states the auth requirements up front, and explains the automatic routing when channel_id is given without query. Nothing is left for the agent to infer.

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. 13 tool updatesv1.0.0
    • First observeddownload_my_caption
    • First observedget_auth_status
    • First observedget_playlist_items
    • First observedget_subscription_feed
    • First observedget_transcript
    • First observedget_video_info
    • First observedlist_channel_uploads
    • First observedlist_my_playlists
    • First observedlist_my_subscriptions
    • First observedlist_my_uploads
    • First observedlist_my_video_captions
    • First observedlist_transcript_languages
    • First observedsearch_videos

TDQS

A3.8/5.0

Scored across 13 tools

Disambiguation3/5

Most tools are distinct (get_transcript, get_video_info, search_videos, playlists, etc.), but overlap exists: get_transcript vs download_my_caption both fetch captions, though ownership differs; list_my_uploads and list_channel_uploads are similar but differ by account vs channel. The distinctions are clear enough but require careful reading.

Naming Consistency4/5

The naming follows a consistent verb_noun pattern: get_*, list_*, search_*, download_*. The pattern is consistent, with only a minor deviation in 'download_my_caption' vs 'get_transcript' where 'get' and 'download' both imply fetching, but still readable.

Tool Count5/5

13 tools is well within the ideal range for a YouTube-focused server. Each tool serves a specific purpose (transcripts, video info, channel uploads, playlists, subscriptions, auth), and none seem redundant or unnecessary.

Completeness4/5

The server covers core YouTube interactions: searching, video metadata, transcripts, channel uploads, playlists, and subscriptions. Minor gaps include lack of tools for liking/disliking videos, commenting, or managing playlists (create/delete), but these are not essential for read-only and summarize use cases.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to search videos, read channels, browse playlists, fetch comments, and get transcripts from YouTube using the YouTube Data API v3 and InnerTube API for captions.
    2
    GPL 3.0
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI tools to access YouTube content, including transcript extraction, video/channel info, and search.
    4
    14
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to read transcripts of any public video, research channels, analyze performance, read comments, and manage multiple owned channels.
    16
    19
    MIT