Skip to main content
Glama
aranej

YouTube MCP Server Enhanced

by aranej

YouTube MCP Server Enhanced

Enhanced fork of sfiorini/youtube-mcp with fixes and improvements.

A Model Context Protocol (MCP) server implementation for YouTube, enabling AI language models to interact with YouTube content through a standardized interface.

What's Enhanced

  • All video responses include direct YouTube URLs (url and videoId fields)

  • Shared utilities architecture (single source of truth)

  • Lazy initialization for better performance

  • 90% code deduplication

  • Better error handling

  • Works reliably with Claude Code CLI on Windows

Related MCP server: YouTube MCP Server

Features

Video Information

  • Get video details (title, description, duration, etc.) with direct URLs

  • List channel videos with direct URLs

  • Get video statistics (views, likes, comments)

  • Search videos across YouTube with direct URLs

  • NEW: Enhanced video responses include url and videoId fields for easy integration

Transcript Management

  • Retrieve video transcripts

  • Support for multiple languages

  • Get timestamped captions

  • Search within transcripts

Direct Resources & Prompts

  • Resources:

    • youtube://transcript/{videoId}: Access transcripts directly via resource URIs

    • youtube://info: Server information and usage documentation (Smithery discoverable)

  • Prompts:

    • summarize-video: Automated workflow to get and summarize video content

    • analyze-channel: Comprehensive analysis of a channel's content strategy

  • Annotations: All tools include capability hints (read-only, idempotent) for better LLM performance

Channel Management

  • Get channel details

  • List channel playlists

  • Get channel statistics

  • Search within channel content

Playlist Management

  • List playlist items

  • Get playlist details

  • Search within playlists

  • Get playlist video transcripts

Installation

For a Windows 11 + Codex App setup guide, see docs/windows-codex-app-setup-sk.md.

  1. Clone this repository:

git clone https://github.com/aranej/youtube-mcp-enhanced.git
cd youtube-mcp-enhanced
npm install
npm run build
  1. Add to your Claude Desktop or Claude Code configuration:

Claude Desktop (%APPDATA%\Claude\claude_desktop_config.json on Windows):

{
  "mcpServers": {
    "youtube": {
      "command": "node",
      "args": ["/path/to/youtube-mcp-enhanced/dist/cli.js"],
      "env": {
        "YOUTUBE_API_KEY": "your_youtube_api_key_here"
      }
    }
  }
}

Claude Code CLI (~/.claude.json):

{
  "mcpServers": {
    "youtube": {
      "command": "node",
      "args": ["/path/to/youtube-mcp-enhanced/dist/cli.js"],
      "env": {
        "YOUTUBE_API_KEY": "your_youtube_api_key_here"
      }
    }
  }
}

Configuration

Set the following environment variables:

  • YOUTUBE_API_KEY: Your YouTube Data API key (required)

  • YOUTUBE_TRANSCRIPT_LANG: Default language for transcripts (optional, defaults to 'en')

Local transcript fallback

This local Windows setup now uses a yt-dlp fallback for transcript extraction because YouTube's web transcript responses can fail unpredictably for Node-based scraping.

Requirements for this fallback:

  • Python available on PATH

  • yt-dlp installed for that Python environment (python -m pip install yt-dlp)

YouTube API Setup

  1. Go to Google Cloud Console

  2. Create a new project or select an existing one

  3. Enable the YouTube Data API v3

  4. Create API credentials (API key)

  5. Copy the API key for configuration

Examples

Managing Videos

// Get video details (now includes URL)
const video = await youtube.videos.getVideo({
  videoId: "dQw4w9WgXcQ"
});

// Enhanced response now includes:
// - video.url: "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
// - video.videoId: "dQw4w9WgXcQ"
// - All original YouTube API data

// Get video transcript
const transcript = await youtube.transcripts.getTranscript({
  videoId: "video-id",
  language: "en"
});

// Search videos (results now include URLs)
const searchResults = await youtube.videos.searchVideos({
  query: "search term",
  maxResults: 10
});

// Each search result includes:
// - result.url: "https://www.youtube.com/watch?v={videoId}"
// - result.videoId: "{videoId}"
// - All original YouTube search data

Managing Channels

// Get channel details
const channel = await youtube.channels.getChannel({
  channelId: "channel-id"
});

// List channel videos
const videos = await youtube.channels.listVideos({
  channelId: "channel-id",
  maxResults: 50
});

Managing Playlists

// Get playlist items
const playlistItems = await youtube.playlists.getPlaylistItems({
  playlistId: "playlist-id",
  maxResults: 50
});

// Get playlist details
const playlist = await youtube.playlists.getPlaylist({
  playlistId: "playlist-id"
});

Enhanced Response Structure

Video Objects with URLs

All video-related responses now include enhanced fields for easier integration:

interface EnhancedVideoResponse {
  // Original YouTube API fields
  kind?: string;
  etag?: string;
  id?: string | YouTubeSearchResultId;
  snippet?: YouTubeSnippet;
  contentDetails?: any;
  statistics?: any;

  // NEW: Enhanced fields
  url: string;           // Direct YouTube video URL
  videoId: string;       // Extracted video ID
}

Example Enhanced Response

{
  "kind": "youtube#video",
  "id": "dQw4w9WgXcQ",
  "snippet": {
    "title": "Never Gonna Give You Up",
    "channelTitle": "Rick Astley",
    "description": "Official video for \"Never Gonna Give You Up\""
  },
  "statistics": {
    "viewCount": "1.5B",
    "likeCount": "15M"
  },
  // Enhanced fields:
  "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
  "videoId": "dQw4w9WgXcQ"
}

Benefits

  • Easy URL Access: No need to manually construct URLs

  • Consistent Structure: Both search and individual video responses include URLs

  • Backward Compatible: All existing YouTube API data is preserved

  • Type Safe: Full TypeScript support available

Development

# Install dependencies
npm install

# Build TypeScript to JavaScript
npm run build

# Development mode with auto-rebuild and hot reload
npm run dev

# Start the server (requires YOUTUBE_API_KEY)
npm start

# Publish to npm (runs build first)
npm run prepublishOnly

Architecture

This project uses a dual-architecture service-based design with the following features:

  • Shared Utilities: Single source of truth for all MCP server configuration (src/server-utils.ts)

  • Modern McpServer: Updated from deprecated Server class to the new McpServer

  • Dynamic Version Management: Version automatically read from package.json

  • Type-Safe Tool Registration: Uses zod schemas for input validation

  • ES Modules: Full ES module support with proper .js extensions

  • Enhanced Video Responses: All video operations include url and videoId fields

  • Lazy Initialization: YouTube API client initialized only when needed

  • Code Deduplication: Eliminated 90% code duplication through shared utilities (407 β†’ 285 lines)

Project Structure

src/
β”œβ”€β”€ server-utils.ts        # πŸ†• Shared MCP server utilities (single source of truth)
β”œβ”€β”€ index.ts              # Smithery deployment entry point
β”œβ”€β”€ server.ts             # CLI deployment entry point
β”œβ”€β”€ services/             # Core business logic
β”‚   β”œβ”€β”€ video.ts         # Video operations (search, getVideo)
β”‚   β”œβ”€β”€ transcript.ts    # Transcript retrieval
β”‚   β”œβ”€β”€ playlist.ts      # Playlist operations
β”‚   └── channel.ts       # Channel operations
β”œβ”€β”€ types.ts             # TypeScript interfaces
└── cli.ts               # CLI wrapper for standalone execution

Key Features

  • Smithery Optimized: Achieved 90%+ Smithery quality score with comprehensive resources, prompts, and configuration

  • Shared Utilities Architecture: Eliminated 90% code duplication with single source of truth

  • Enhanced Video Responses: All video objects include direct YouTube URLs

  • Flexible Configuration: Optional config via Smithery UI or environment variables

  • Type-Safe Development: Full TypeScript support with zod validation

  • Modern MCP Tools: Uses registerTool instead of manual request handlers

  • Comprehensive Resources: Discoverable resources and prompts for better LLM integration

  • Error Handling: Comprehensive error handling with descriptive messages

Contributing

See CONTRIBUTING.md for information about contributing to this repository.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Available Tools

14 tools
channels_getChannelGet Channel InformationB
Read-onlyIdempotent

Get information about a YouTube channel

ParametersJSON Schema
NameRequiredDescriptionDefault
channelIdYesThe YouTube channel ID

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare read-only and idempotent behavior. Description adds no further behavioral context, but also no contradiction.

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?

Extremely concise single sentence, but a bit too sparse; could include return value hints without losing conciseness.

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?

With no output schema, the description does not explain what information is returned, leaving the agent without critical usage details.

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

Parameters3/5

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

Schema coverage is 100%, so the description adds no meaning beyond what the schema already provides for the single parameter.

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

Purpose4/5

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

The description clearly states the action (Get) and resource (YouTube channel), but does not differentiate from sibling tools like channels_listVideos.

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

Usage Guidelines2/5

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

No guidance on when to use this tool instead of alternatives, or any prerequisites or context.

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

channels_listVideosList Channel VideosB
Read-onlyIdempotent

Get videos from a specific channel

ParametersJSON Schema
NameRequiredDescriptionDefault
channelIdYesThe YouTube channel ID
maxResultsNoMaximum number of results to return

TDQS

B3.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint and idempotentHint. Description adds no behavioral traits beyond rephrasing the resource scope.

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?

Single sentence with 6 words, no redundancy. Highly concise and front-loaded.

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?

Adequate for a simple list operation with annotations indicating safety. Could mention output type or pagination, but not critical given low complexity.

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 already describes both parameters (channelId, maxResults) with 100% coverage. Description adds no further semantics, meeting 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?

Verb 'get' and resource 'videos from a specific channel' clearly states purpose. Distinguishes from siblings like channels_getChannel and videos_searchVideos.

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

Usage Guidelines2/5

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

No guidance on when to use vs alternatives like videos_searchVideos. No exclusions or prerequisites provided.

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

playlists_addVideoAdd Video to PlaylistB

Add a video to a YouTube playlist (requires OAuth authentication)

ParametersJSON Schema
NameRequiredDescriptionDefault
playlistIdYesThe playlist ID
videoIdYesThe video ID to add
positionNoPosition in playlist (0-indexed)

TDQS

B3.3/5.0
Behavior3/5

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

Annotations indicate this is a non-read-only and non-idempotent operation, which the description does not contradict. The description adds value by specifying the OAuth authentication requirement, which is not covered by annotations. However, it lacks details on behavioral aspects like error handling, rate limits, or side effects beyond authentication.

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, efficient sentence that front-loads the core purpose and includes essential authentication information. There is no wasted verbiage, and every word contributes to understanding the tool's function and requirements.

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

Completeness3/5

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

Given the tool's moderate complexity (mutation with authentication) and lack of an output schema, the description is minimally adequate. It covers the basic purpose and authentication need but omits details on return values, error conditions, or interaction with sibling tools, leaving gaps in contextual understanding.

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

Parameters3/5

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

Schema description coverage is 100%, meaning all parameters are documented in the schema. The description does not add any semantic details beyond what the schema provides, such as explaining the implications of the 'position' parameter or format requirements for IDs. Baseline score of 3 is appropriate as the schema handles parameter documentation adequately.

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

Purpose4/5

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

The description clearly states the action ('Add a video') and resource ('to a YouTube playlist'), which is specific and unambiguous. However, it does not explicitly differentiate from its sibling 'playlists_addVideos' (which likely adds multiple videos), leaving some room for improvement in sibling distinction.

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

Usage Guidelines2/5

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

The description mentions that OAuth authentication is required, which provides some context for usage prerequisites. However, it offers no guidance on when to use this tool versus alternatives like 'playlists_addVideos' or 'playlists_create', nor does it specify any exclusions or scenarios where this tool is preferred.

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

playlists_addVideosAdd Multiple Videos to PlaylistB

Add multiple videos to a YouTube playlist (requires OAuth authentication)

ParametersJSON Schema
NameRequiredDescriptionDefault
playlistIdYesThe playlist ID
videoIdsYesArray of video IDs to add

TDQS

B3.3/5.0
Behavior3/5

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

Annotations indicate this is not read-only and not idempotent, which the description doesn't contradict. The description adds value by specifying the OAuth requirement, which isn't covered by annotations. However, it lacks details on rate limits, error handling, or what happens on partial failures (e.g., if some video IDs are invalid).

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, efficient sentence that front-loads the core purpose and includes the key constraint (OAuth). There's no wasted verbiage, and every word contributes to understanding the tool's function and requirements.

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

Completeness3/5

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

Given the mutation nature (annotations show not read-only), lack of output schema, and 2 required parameters, the description is minimally adequate. It covers authentication but misses behavioral aspects like response format or error scenarios. With annotations providing some safety context, it's passable but could be more complete for a write operation.

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 clear parameter descriptions in the schema. The description doesn't add any semantic details beyond what's in the schema (e.g., format of IDs, constraints on array size). Baseline 3 is appropriate since the schema fully documents parameters.

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

Purpose4/5

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

The description clearly states the action ('Add multiple videos') and resource ('to a YouTube playlist'), which is specific and actionable. However, it doesn't explicitly differentiate from its sibling 'playlists_addVideo', which appears to be a single-video version, though the 'multiple' distinction is implied.

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

Usage Guidelines2/5

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

The description mentions OAuth authentication as a requirement, which provides some context, but it doesn't offer guidance on when to use this tool versus alternatives like 'playlists_addVideo' or 'playlists_create'. No explicit when-not-to-use or prerequisite information is included.

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

playlists_createCreate PlaylistB

Create a new YouTube playlist (requires OAuth authentication)

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesThe playlist title
descriptionNoThe playlist description
privacyStatusNoPrivacy status (default: private)

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and idempotentHint=false, correctly indicating this is a non-idempotent write operation. The description adds the OAuth authentication requirement, which is valuable context beyond annotations. However, it doesn't describe other behavioral aspects like rate limits, error conditions, or what happens on duplicate playlist creation attempts. The description complements but doesn't fully compensate for the lack of output 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?

The description is a single, efficient sentence that communicates the core action and key constraint. Every word earns its place - 'Create' (action), 'new YouTube playlist' (resource), and 'requires OAuth authentication' (critical constraint). No wasted words or unnecessary elaboration. Perfectly front-loaded with essential information.

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

Completeness3/5

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

For a creation tool with 3 parameters, 100% schema coverage, and annotations covering read/write/idempotency, the description provides the minimum viable information. The OAuth requirement is important context, but without an output schema, the description doesn't explain what gets returned (playlist ID, success confirmation, etc.). It's adequate but leaves gaps about the creation result and error handling.

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 all parameters well-documented in the schema itself. The description adds no parameter-specific information beyond what's already in the schema. According to scoring rules, when schema_description_coverage is high (>80%), the baseline is 3 even with no param info in description. The description doesn't compensate but doesn't need to given the comprehensive schema.

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

Purpose4/5

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

The description clearly states the verb 'Create' and resource 'new YouTube playlist', making the purpose unambiguous. It distinguishes from siblings like playlists_getPlaylist (read) and playlists_addVideo (modify), but doesn't explicitly contrast with all sibling tools. The description is specific but could be more precise about differentiation.

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

Usage Guidelines2/5

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

The description mentions 'requires OAuth authentication' which provides some context about prerequisites, but offers no guidance on when to use this tool versus alternatives. It doesn't indicate when to create a playlist versus using existing ones, or how it relates to sibling tools like playlists_addVideo for modifying playlists. No explicit when/when-not statements or alternative recommendations are provided.

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

playlists_getPlaylistGet Playlist InformationA
Read-onlyIdempotent

Get information about a YouTube playlist

ParametersJSON Schema
NameRequiredDescriptionDefault
playlistIdYesThe YouTube playlist ID

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true and idempotentHint=true, indicating a safe read operation. The description adds no further behavioral traits (e.g., rate limits, return structure), but does not contradict annotations.

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

Conciseness5/5

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

The description is a single, concise sentence that contains no redundant information, making it easy to parse and effective.

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 tool with one parameter and safety annotations, the description is adequate but lacks details on what information the playlist includes (e.g., title, description, privacy status). Without an output schema, the agent is left guessing the return content.

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 the parameter 'playlistId' clearly described as 'The YouTube playlist ID'. The tool description adds no additional meaning beyond the schema, meeting 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 explicitly states 'Get information about a YouTube playlist', using a clear verb and resource. This distinguishes it from sibling playlists_getPlaylistItems which returns playlist items, making the purpose clear.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives. The purpose is implied, but no direction is given for choosing between playlists_getPlaylist and playlists_getPlaylistItems or other siblings.

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

playlists_getPlaylistItemsGet Playlist ItemsB
Read-onlyIdempotent

Get videos in a YouTube playlist

ParametersJSON Schema
NameRequiredDescriptionDefault
playlistIdYesThe YouTube playlist ID
maxResultsNoMaximum number of results to return

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and idempotentHint, so the tool's safety is clear. The description adds no additional behavioral context (e.g., pagination, return format, ordering). It is adequate but does not exceed the structured data.

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

Conciseness4/5

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

The description is a single short sentence, front-loaded with the core action. No wasted words. However, it could afford a bit more detail without losing conciseness.

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 read tool with no output schema, the description is minimal but functional. It lacks details about what video information is returned (snippet, contentDetails?) and pagination behavior. Adequate for basic use but not comprehensive.

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 beyond what is in the schema. Baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action ('Get') and resource ('videos in a YouTube playlist'), distinguishing it from siblings like playlists_getPlaylist (playlist metadata) and videos_getVideo (single video). It is concise and unambiguous.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as videos_searchVideos or playlists_getPlaylist. The description does not mention context, prerequisites, or exclusion criteria.

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

transcripts_getTranscriptGet Video TranscriptA
Read-onlyIdempotent

Get the transcript of a YouTube video

ParametersJSON Schema
NameRequiredDescriptionDefault
videoIdYesThe YouTube video ID
languageNoLanguage code for the transcript

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and idempotentHint, so description does not need to restate safety. However, it omits potential edge cases such as missing transcripts or auto-generated content, which would aid the agent.

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?

Single sentence, no extraneous words, front-loaded purpose. Efficient and clear.

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?

No output schema, but the tool is simple. Missing info on transcript format (e.g., plain text with timestamps) or that language is optional. Adequate for basic use but lacks detail.

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?

Input schema has 100% coverage for both parameters (videoId, language), so description adds no additional meaning. 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 clearly states the verb 'Get' and the resource 'transcript of a YouTube video', distinguishing it from sibling tools like channels_getChannel or videos_searchVideos.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives, nor any mention of prerequisites like video availability or language support. The description implies usage context but does not provide exclusions.

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

videos_getCommentsGet Video CommentsA
Read-onlyIdempotent

Get comments from a YouTube video with pagination support

ParametersJSON Schema
NameRequiredDescriptionDefault
videoIdYesThe YouTube video ID
maxResultsNoNumber of comments to return (max 100, default 20)
orderNoSort order: relevance (default) or time
pageTokenNoPage token for pagination

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, indicating a safe, repeatable read operation. The description adds value by specifying 'with pagination support,' which clarifies behavioral traits beyond annotations (e.g., handling large datasets via pageToken). It doesn't detail rate limits or auth needs, but this is acceptable given the annotations cover core 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?

The description is a single, efficient sentence that front-loads the core purpose ('Get comments from a YouTube video') and adds key behavioral context ('with pagination support'). Every word earns its place, with no redundancy or fluff, making it appropriately sized and well-structured.

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 moderate complexity (4 parameters, 1 required), rich annotations (readOnlyHint, idempotentHint), and 100% schema coverage, the description is reasonably complete. It lacks an output schema, but the description doesn't need to explain return values. It could benefit from more usage context, but overall it's adequate for the tool's profile.

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 each parameter well-documented in the schema (e.g., videoId, maxResults with limits, order with enum, pageToken). The description adds no additional parameter semantics beyond what's in the schema, so it meets the baseline of 3 for high coverage without extra value.

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

Purpose4/5

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

The description clearly states the action ('Get comments') and resource ('from a YouTube video'), distinguishing it from sibling tools like videos_getVideo or transcripts_getTranscript. However, it doesn't explicitly differentiate from other comment-related tools (though none are listed among siblings), making it clear but not fully sibling-differentiated.

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 for retrieving comments from a specific video, but provides no explicit guidance on when to use this tool versus alternatives (e.g., for searching videos or getting channel info). It mentions pagination support, which hints at use for large datasets, but lacks clear when/when-not instructions or named alternatives.

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

videos_getVideoGet Video DetailsA
Read-onlyIdempotent

Get detailed information about a YouTube video including URL

ParametersJSON Schema
NameRequiredDescriptionDefault
videoIdYesThe YouTube video ID
partsNoParts of the video to retrieve

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already indicate readonly and idempotent. Description adds that the response includes URL, which is useful context, but does not disclose other behavioral traits like rate limits or permissions.

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?

Single sentence, front-loaded with action, no unnecessary words. Perfectly concise.

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 no output schema, the description provides some detail about the response (includes URL). However, it omits other possible response fields like statistics or metadata, which could be inferred from the 'parts' parameter. Still adequate for a simple get tool.

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

Parameters3/5

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

Schema descriptions already cover both parameters (videoId and parts) with 100% coverage. The description does not add additional parameter-level meaning beyond that.

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?

Description uses specific verb 'Get' and resource 'detailed information about a YouTube video including URL', clearly distinguishing it from sibling tools like videos_searchVideos which searches for videos.

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

Usage Guidelines2/5

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

No guidance on when to use this vs alternatives (e.g., videos_searchVideos). Does not specify that it requires a known videoId, nor when not to use it.

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

videos_searchVideosSearch VideosA
Read-onlyIdempotent

Search for videos on YouTube and return results with URLs

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query
maxResultsNoMaximum number of results to return

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and idempotentHint, which cover the main behavioral traits. The description adds no further behavioral details (e.g., rate limits, default maxResults, error handling). With annotations present, the bar is lower, and the description does not contradict them. Score is neutral.

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

Conciseness4/5

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

The description is a single, concise sentence that efficiently conveys the tool's purpose. It is front-loaded and lacks unnecessary fluff, but could be slightly more structured (e.g., include output details) without becoming verbose.

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 lack of an output schema, the description should provide more context about the return format. It only mentions 'URLs' but does not clarify if other fields (e.g., video ID, title) are included. For a search tool, this omission reduces completeness.

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?

Input schema has 100% coverage with descriptions for both parameters ('query' and 'maxResults'). The description does not add any additional meaning beyond what the schema already provides, so it meets 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 the tool's action ('Search for videos on YouTube') and what it returns ('results with URLs'). It is specific and distinguishes this from sibling tools like channels_getChannel or playlists_getPlaylistItems, which focus on other resources.

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 does not provide explicit guidance on when to use this tool versus alternatives. While the sibling tools are different, there is no mention of when search is preferred over listing or getting specific videos. 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.

youtube_checkAuthCheck YouTube AuthenticationA
Read-onlyIdempotent

Check if OAuth is configured and we have valid credentials for write operations

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, indicating a safe, repeatable read operation. The description adds value by clarifying that it checks for OAuth configuration and credentials specifically for write operations, which provides context beyond the annotations. No contradictions exist.

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, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded with the core action ('Check if OAuth is configured') and includes essential context ('for write operations'), making it highly concise and well-structured.

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 simplicity (0 parameters, no output schema) and rich annotations, the description is complete enough for an AI agent to understand when and how to use it. It could slightly improve by specifying the return format or error conditions, but it adequately covers the tool's role in the context of sibling authentication tools.

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 0 parameters and 100% schema description coverage, the schema fully documents the input structure. The description appropriately does not add parameter details, as none are needed, and instead focuses on the tool's functional intent, which is sufficient for this case.

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 tool's purpose with specific verbs ('Check if OAuth is configured' and 'we have valid credentials') and identifies the resource ('write operations'). It distinguishes itself from sibling tools like 'youtube_getAuthUrl' and 'youtube_startAuth' by focusing on verification rather than authentication initiation.

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 implies usage context by specifying 'for write operations,' suggesting this tool should be used before attempting write actions. However, it does not explicitly state when not to use it or name alternatives, such as checking authentication status separately from other tools.

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

youtube_getAuthUrlGet YouTube OAuth URLA
Read-onlyIdempotent

Get the OAuth authorization URL. User needs to visit this URL to authorize the app.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=true and idempotentHint=true, which the description doesn't contradict. The description adds valuable context beyond annotations by explaining that the URL is for user authorization, clarifying the tool's role in the OAuth process. However, it doesn't detail behavioral aspects like rate limits or error handling, keeping it from a perfect score.

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 highly concise and front-loaded: two sentences that directly state the tool's function and its purpose in the authorization flow. Every sentence earns its place with no wasted words, making it easy to understand quickly.

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 low complexity (0 parameters, no output schema) and rich annotations (readOnlyHint, idempotentHint), the description is mostly complete. It explains what the tool does and its role in OAuth, but could benefit from mentioning the relationship to sibling auth tools or what happens after authorization for better context.

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 input schema has no parameters (parameter count: 0), with 100% schema description coverage. The description doesn't add parameter details, which is unnecessary here. A baseline of 4 is appropriate as the schema fully covers the lack of parameters, and the description doesn't need to compensate.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Get the OAuth authorization URL' specifies the verb (get) and resource (URL), and 'User needs to visit this URL to authorize the app' explains its role in the OAuth flow. However, it doesn't explicitly differentiate from sibling tools like 'youtube_checkAuth' or 'youtube_startAuth', which appear related to authentication but have different functions.

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 by stating 'User needs to visit this URL to authorize the app', suggesting this tool is for initiating OAuth authorization. However, it lacks explicit guidance on when to use this versus alternatives like 'youtube_startAuth' or 'youtube_checkAuth', and doesn't specify prerequisites or exclusions, leaving some ambiguity.

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

youtube_startAuthStart YouTube OAuth FlowA

Start OAuth authentication flow. Opens a local server and waits for callback.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false and idempotentHint=false, but the description adds valuable behavioral context: it specifies that the tool opens a local server and waits for a callback, which reveals implementation details and interactive behavior not covered by annotations. This helps the agent understand this is a blocking, interactive operation with side effects.

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 that efficiently convey the core action and key behavioral detail. Every word earns its place with no redundancy or fluff, making it easy to parse and front-loaded with essential information.

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 (OAuth flow initiation), annotations cover safety hints, but no output schema exists. The description provides enough context about the interactive nature (local server, callback waiting) to guide usage, though it could benefit from mentioning typical next steps or error handling. It's reasonably complete for a 0-parameter tool with behavioral annotations.

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 0 parameters and 100% schema description coverage, the baseline is 4. The description doesn't need to explain parameters, and it doesn't add any parameter-specific information, which is appropriate given the empty schema.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Start OAuth authentication flow' specifies the verb (start) and resource (OAuth flow). It distinguishes from siblings like youtube_checkAuth and youtube_getAuthUrl by focusing on initiating the flow rather than checking status or getting URLs. However, it doesn't explicitly differentiate from all authentication-related siblings.

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 by mentioning 'Opens a local server and waits for callback,' suggesting this is for initiating authentication when no existing session exists. However, it doesn't explicitly state when to use this vs. alternatives like youtube_checkAuth (to verify existing auth) or youtube_getAuthUrl (to get URL without starting flow), nor does it mention prerequisites or exclusions.

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. 14 tool updatesv1.0.0
    • First observedchannels_getChannel
    • First observedchannels_listVideos
    • First observedplaylists_addVideo
    • First observedplaylists_addVideos
    • First observedplaylists_create
    • First observedplaylists_getPlaylist
    • First observedplaylists_getPlaylistItems
    • First observedtranscripts_getTranscript
    • First observedvideos_getComments
    • First observedvideos_getVideo
    • First observedvideos_searchVideos
    • First observedyoutube_checkAuth
    • First observedyoutube_getAuthUrl
    • First observedyoutube_startAuth

TDQS

A3.8/5.0

Scored across 14 tools

Disambiguation5/5

Each tool has a clearly distinct purpose targeting specific YouTube resources and actions, with no overlap. For example, channels_getChannel retrieves channel info, channels_listVideos lists videos from a channel, and videos_getVideo gets video details, all serving unique functions.

Naming Consistency5/5

Tool names follow a consistent verb_noun pattern with clear resource-action pairs, such as channels_getChannel, playlists_create, and videos_searchVideos. All tools use snake_case consistently, making them predictable and easy to understand.

Tool Count5/5

With 14 tools, the set is well-scoped for YouTube operations, covering channels, playlists, videos, transcripts, comments, search, and authentication. Each tool earns its place by addressing a specific need without being excessive or insufficient.

Completeness4/5

The tool surface provides comprehensive coverage for core YouTube workflows, including CRUD operations for playlists, retrieval for channels and videos, and authentication. Minor gaps exist, such as no tools for updating or deleting playlists or videos, but agents can work around these with the available tools.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers