Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

iamkw0n/youtube-mcp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

2 Commits

Repository files navigation

youtube-mcp

YouTube video search · channels · playlists · comments
Scrape YouTube in your MCP clients — no official API key required

Stars Forks Issues License

MCP Node TypeScript YouTube

Quick Start · Tools · Client Setup · Examples · FAQ · Report Bug


📑 Table of contents (Click to show)

⚠️ Important Notices

Important

This project does not use the official YouTube Data API v3. It parses public web pages (ytInitialData). If YouTube changes its page structure, some features may break. Personal, non-commercial use is recommended.

Warning

Excessive requests may get blocked by YouTube. If that happens often, enable the Zyte proxy with the ZYTE_API_KEY environment variable.


✨ Features

🔍 Video search Keyword search with sort, date, and duration filters
📺 Video details Views, likes, duration, and more by ID or URL
📡 Channels Look up channels by ID, @handle, or URL
📋 Playlists Playlist metadata and video lists
💬 Comments Top and recent comments on a video
🔌 stdio MCP Works with Cursor, Claude, Codex, and other local clients
🔑 No API key No Google Cloud API key required

🚀 Quick Start

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

Or run directly with tsx:

npx tsx src/index.ts

🛠 Tools

Tool Description
search_videos Search videos by keyword
get_video Get video details by ID or URL
get_videos Batch-fetch multiple videos
search_channels Search channels by keyword
get_channel Get channel info by ID, @handle, or URL
get_channel_videos List recent videos from a channel
get_playlist Get playlist metadata
get_playlist_items List videos in a playlist
get_video_comments Fetch video comments
api_status Check scraping and proxy status

💬 One-Click Install Prompt

Paste this into Cursor, Claude Code, or Codex to ask the agent to install the MCP server:

Clone iamkw0n/youtube-mcp from GitHub and set up the MCP server for me.

🔧 Client Setup

Client Config file stdio
Cursor .cursor/mcp.json
Claude Code .mcp.json
Claude Desktop claude_desktop_config.json
Codex .codex/config.toml
ChatGPT Connector URL

Cursor

Add to .cursor/mcp.json in your project root:

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

With Zyte proxy (optional):

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

Claude Code

Add to .mcp.json in your project root:

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

CLI:

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

Claude Desktop

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

Windows: %APPDATA%\Claude\claude_desktop_config.json

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

Warning

Claude Desktop does not support ${workspaceFolder}. Use absolute paths.

OpenAI Codex

In .codex/config.toml or ~/.codex/config.toml:

[mcp_servers.youtube-mcp]
command = "node"
args = ["/absolute/path/to/youtube-mcp/dist/index.js"]
cwd = "/absolute/path/to/youtube-mcp"
enabled = true

CLI:

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

Verify in a Codex session with /mcp.

ChatGPT

Important

ChatGPT connectors only support HTTPS MCP endpoints. This repo is a local stdio server and cannot be connected to ChatGPT directly.


💡 Examples

Search YouTube for TypeScript tutorial videos
Get details for this video: https://www.youtube.com/watch?v=dQw4w9WgXcQ
Show me the 5 most recent videos from @GoogleDevelopers
What videos are in this playlist? https://www.youtube.com/playlist?list=PL...

⚙️ How It Works

flowchart LR
 A[MCP Client] -->|stdio| B[youtube-mcp]
 B -->|fetch HTML| C[www.youtube.com]
 B -->|parse| D[ytInitialData]
 B -->|pagination| E[InnerTube continuation]
Loading
Step Description
Page fetch Download public YouTube HTML pages
Data extraction Parse ytInitialData and ytInitialPlayerResponse JSON
Pagination Load more results via InnerTube continuation tokens

📄 License

MIT © iamkw0n

Built with ❤️ by iamkw0n · Unofficial project, not affiliated with YouTube or Google

About

YouTube MCP Server

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /