youtube-mcp

搜索与获取

by sfiorini

支持搜索和浏览视频、频道、播放列表,获取标题、简介、统计与时长;还能提取多语言时间戳字幕并在 captions 中精准检索。

什么是 youtube-mcp

支持搜索和浏览视频、频道、播放列表,获取标题、简介、统计与时长;还能提取多语言时间戳字幕并在 captions 中精准检索。

核心功能 (7 个工具)

videos_getVideo

Get detailed information about a YouTube video including URL

videos_searchVideos

Search for videos on YouTube and return results with URLs

transcripts_getTranscript

Get the transcript of a YouTube video

channels_getChannel

Get information about a YouTube channel

channels_listVideos

Get videos from a specific channel

playlists_getPlaylist

Get information about a YouTube playlist

playlists_getPlaylistItems

Get videos in a YouTube playlist

README

YouTube MCP Server

smithery badge

A Model Context Protocol (MCP) server implementation for YouTube, enabling AI language models to interact with YouTube content through a standardized interface. Optimized for 90% Smithery quality score with comprehensive resources, prompts, and flexible configuration.

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

Quick Setup for Claude Desktop

  1. Install the package:
bash
npm install -g @sfiorini/youtube-mcp
  1. Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS or %APPDATA%\Claude\claude_desktop_config.json on Windows):
json
{
  "mcpServers": {
    "youtube-mcp": {
      "command": "youtube-mcp",
      "env": {
        "YOUTUBE_API_KEY": "your_youtube_api_key_here"
      }
    }
  }
}

Alternative: Using NPX (No Installation Required)

Add this to your Claude Desktop configuration:

json
{
  "mcpServers": {
    "youtube": {
      "command": "npx",
      "args": ["-y", "@sfiorini/youtube-mcp"],
      "env": {
        "YOUTUBE_API_KEY": "your_youtube_api_key_here"
      }
    }
  }
}

Installing via Smithery

To install YouTube MCP Server for Claude Desktop automatically via Smithery:

bash
npx -y @smithery/cli@latest install @sfiorini/youtube-mcp --client claude

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')

Using with VS Code

For one-click installation, click one of the install buttons below:

Install with NPX in VS Code Install with NPX in VS Code Insiders

Manual Installation

If you prefer manual installation, first check the install buttons at the top of this section. Otherwise, follow these steps:

Add the following JSON block to your User Settings (JSON) file in VS Code. You can do this by pressing Ctrl + Shift + P and typing Preferences: Open User Settings (JSON).

json
{
  "mcp": {
    "inputs": [
      {
        "type": "promptString",
        "id": "apiKey",
        "description": "YouTube API Key",
        "password": true
      }
    ],
    "servers": {
      "youtube": {
        "command": "npx",
        "args": ["-y", "@sfiorini/youtube-mcp"],
        "env": {
          "YOUTUBE_API_KEY": "${input:apiKey}"
        }
      }
    }
  }
}

Optionally, you can add it to a file called .vscode/mcp.json in your workspace:

json
{
  "inputs": [
    {
      "type": "promptString",
      "id": "apiKey",
      "description": "YouTube API Key",
      "password": true
    }
  ],
  "servers": {
    "youtube": {
      "command": "npx",
      "args": ["-y", "@sfiorini/youtube-mcp"],
      "env": {
        "YOUTUBE_API_KEY": "${input:apiKey}"
      }
    }
  }
}

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

javascript
// 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

javascript
// 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

javascript
// 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:

typescript
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

json
{
  "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

bash
# 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

diagram
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.

常见问题

youtube-mcp 是什么?

支持搜索和浏览视频、频道、播放列表,获取标题、简介、统计与时长;还能提取多语言时间戳字幕并在 captions 中精准检索。

youtube-mcp 提供哪些工具?

提供 7 个工具,包括 videos_getVideo、videos_searchVideos、transcripts_getTranscript

相关 Skills

agent-browser

by chulla-ceja

热门

Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction.

搜索与获取
未扫描3.7k

接口规范

by alexxxiong

热门

API 规范管理工具 - 跨项目 API 文档的初始化、更新、查询与搜索。Triggers: 'API文档', 'API规范', '接口文档', '路由解析', 'apispec', 'API lookup', 'API search'.

搜索与获取
未扫描3.7k

investment-research

by caijichang212

热门

Perform structured investment research (投研分析) for a company/stock/ETF/sector using a repeatable framework: fundamentals (basic/财务报表与商业模式), technical analysis (技术指标与关键价位), industry research (行业景气与竞争格局), valuation (估值对比/情景), catalysts and risks, and produce a professional research report + actionable plan. Use when the user asks for: equity/ETF analysis, earnings/financial statement breakdown, peer/industry comparison, valuation ranges, bull/base/bear scenarios, technical trend/support-resistance, or a full research memo.

搜索与获取
未扫描3.7k

相关 MCP Server

by Anthropic

热门

Puppeteer 是让 Claude 自动操作浏览器进行网页抓取和测试的 MCP 服务器。

这个服务器解决了手动编写 Puppeteer 脚本的繁琐问题,适合需要自动化网页交互的开发者,比如抓取动态内容或做端到端测试。不过,作为参考实现,它可能缺少生产级的安全防护,建议在可控环境中使用。

搜索与获取
82.9k

网页抓取

编辑精选

by Anthropic

热门

Fetch 是 MCP 官方参考服务器,让 AI 能抓取网页并转为 Markdown 格式。

这个服务器解决了 AI 直接处理网页内容时格式混乱的问题,适合需要让 Claude 分析在线文档或新闻的开发者。不过作为参考实现,它缺乏生产级的安全配置,你得自己处理反爬虫和隐私风险。

搜索与获取
82.9k

Brave 搜索

编辑精选

by Anthropic

热门

Brave Search 是让 Claude 直接调用 Brave 搜索 API 获取实时网络信息的 MCP 服务器。

如果你想让 AI 助手帮你搜索最新资讯或技术文档,这个工具能绕过传统搜索的限制,直接返回结构化数据。特别适合需要实时信息的开发者,比如查 API 更新或竞品动态。不过它依赖 Brave 的 API 配额,高频使用可能受限。

搜索与获取
82.9k

评论