🚀 YouTube終極工具包 - 模型上下文協議(MCP)服務器
這是一個強大的模型上下文協議(MCP)服務器,它能讓Claude AI全面訪問YouTube的內容,包括視頻文字記錄、元數據、評論、截圖和音頻片段。該服務器同時支持Claude桌面版(本地)和Claude網頁版(通過OAuth遠程訪問)。
🚀 快速開始
選項1:本地模式(Claude桌面版)
git clone https://github.com/Comzee/Youtube-Ultimate-Toolkit-MCP.git
cd Youtube-Ultimate-Toolkit-MCP
npm install
npm run build
node dist/index.js
將以下配置添加到Claude桌面版的配置文件中(Linux系統路徑為 ~/.config/claude/claude_desktop_config.json,macOS系統路徑為 ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"youtube": {
"command": "node",
"args": ["/path/to/Youtube-Ultimate-Toolkit-MCP/dist/index.js"]
}
}
}
選項2:遠程模式(Claude網頁版)
遠程模式需要進行OAuth設置和一個公共URL。具體設置步驟請參考下面的 遠程模式設置。
✨ 主要特性
與其他MCP的對比
| 特性 |
本MCP |
其他多數MCP |
| 文字記錄 |
✅ |
✅ |
| 時間戳 |
✅ |
部分支持 |
| 時間範圍過濾 |
✅ |
極少支持 |
| 文字記錄搜索 |
✅ |
極少支持 |
| 關鍵片段(開頭/結尾) |
✅ |
❌ |
| 元數據 |
✅ |
✅ |
| 播放列表 |
✅ |
部分支持 |
| 評論 |
✅ |
極少支持 |
| 截圖 |
✅ |
僅1 - 2個支持 |
| 音頻片段 |
✅ |
❌ |
| 所有URL格式 |
✅ |
部分支持 |
| OAuth 2.1 + PKCE |
✅ |
❌ |
| 密碼保護 |
✅ |
❌ |
| 速率限制 |
✅ |
❌ |
| Claude網頁版支持 |
✅ |
極少支持 |
工具特性
| 工具 |
描述 |
get_video |
獲取視頻元數據和文字記錄,支持搜索、時間戳和時間範圍 |
get_playlist |
列出播放列表中的所有視頻 |
get_comments |
獲取帶有點贊和回覆數量的熱門評論 |
get_screenshot |
在任意時間戳捕獲視頻幀 |
get_audio |
提取音頻片段(最長120秒)用於語音/音樂分析 |
📦 安裝指南
前提條件
- Node.js 18+
- yt-dlp - YouTube內容獲取工具(必須保持更新)
- ffmpeg - 用於截圖和音頻提取(可選)
- YouTube API密鑰 - 僅用於評論功能(可選)
安裝前提條件
Ubuntu/Debian系統
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
pip3 install --upgrade yt-dlp
sudo apt install ffmpeg
macOS系統
brew install node yt-dlp ffmpeg
Windows系統
保持yt-dlp更新
YouTube經常更改其API。如果文字記錄功能失效,請更新yt-dlp:
pip3 install --upgrade yt-dlp
pip3 install --upgrade --break-system-packages yt-dlp
安裝步驟
git clone https://github.com/Comzee/Youtube-Ultimate-Toolkit-MCP.git
cd Youtube-Ultimate-Toolkit-MCP
npm install
npm run build
💻 使用示例
get_video
node dist/index.js get_video --url https://www.youtube.com/watch?v=dQw4w9WgXcQ --includeTimestamps true
get_playlist
node dist/index.js get_playlist --url https://www.youtube.com/playlist?list=PL1234567890 --limit 20
get_comments
node dist/index.js get_comments --url https://www.youtube.com/watch?v=dQw4w9WgXcQ --maxResults 50
get_screenshot
node dist/index.js get_screenshot --url https://www.youtube.com/watch?v=dQw4w9WgXcQ --timestamp 30
get_audio
node dist/index.js get_audio --url https://www.youtube.com/watch?v=dQw4w9WgXcQ --startTime 10 --endTime 60
📚 詳細文檔
遠程模式設置
遠程模式允許你通過HTTPS和OAuth認證將此MCP與Claude網頁版(claude.ai)一起使用。
1. 配置環境
cp .env.example .env
編輯 .env 文件:
OAUTH_CLIENT_ID=youtube-mcp-client
OAUTH_CLIENT_SECRET=your-secret-here
AUTH_PASSWORD_HASH=$2b$12$...your-hash-here...
YOUTUBE_API_KEY=your-api-key-here
2. 啟動服務器
npm run start:remote
sudo cp youtube-mcp.service /etc/systemd/system/
sudo nano /etc/systemd/system/youtube-mcp.service
sudo systemctl daemon-reload
sudo systemctl enable youtube-mcp
sudo systemctl start youtube-mcp
3. 設置HTTPS(必需)
Claude網頁版需要HTTPS。使用nginx作為反向代理:
server {
listen 443 ssl;
server_name your-domain.com;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
location / {
proxy_pass http://localhost:3010;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_buffering off;
proxy_cache off;
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
proxy_set_header X-Accel-Buffering no;
}
}
4. 連接Claude網頁版
- 轉到 設置 → 連接器 → 添加自定義連接器
- 輸入URL:
https://your-domain.com/mcp
- 開始新聊天並啟用MCP
- 讓Claude獲取YouTube視頻 - 授權彈出窗口將出現
- 在同意頁面輸入你的密碼並點擊 "授權"
工具參考
get_video
獲取視頻元數據和英文文字記錄。
參數:
| 參數 |
是否必需 |
描述 |
url |
是 |
YouTube URL(任何格式)或視頻ID |
includeTimestamps |
否 |
為每行添加 [M:SS] 時間戳 |
startTime |
否 |
文字記錄範圍的開始時間(例如,"60", "1:00") |
endTime |
否 |
文字記錄範圍的結束時間 |
searchTerm |
否 |
搜索文字記錄並突出顯示匹配項 |
keySegmentsOnly |
否 |
僅返回開頭(前40秒)和結尾(後30秒) |
支持的URL格式:
youtube.com/watch?v=VIDEO_ID
youtu.be/VIDEO_ID
youtube.com/shorts/VIDEO_ID
youtube.com/live/VIDEO_ID
youtube.com/embed/VIDEO_ID
m.youtube.com/watch?v=VIDEO_ID
music.youtube.com/watch?v=VIDEO_ID
- 直接的視頻ID:
dQw4w9WgXcQ
get_playlist
列出YouTube播放列表中的視頻。
參數:
| 參數 |
是否必需 |
描述 |
url |
是 |
YouTube播放列表URL |
limit |
否 |
最多返回的視頻數量(默認: 50,最大: 200) |
get_comments
獲取視頻的熱門評論。需要在 .env 文件中設置 YOUTUBE_API_KEY。
參數:
| 參數 |
是否必需 |
描述 |
url |
是 |
YouTube視頻URL或ID |
maxResults |
否 |
評論數量(默認: 25,最大: 100) |
order |
否 |
排序方式: "relevance"(默認)或 "time" |
get_screenshot
捕獲視頻的一幀。需要安裝ffmpeg。
參數:
| 參數 |
是否必需 |
描述 |
url |
是 |
YouTube視頻URL |
timestamp |
否 |
捕獲時間(默認: "0")。格式: "30", "1:30", "1:30:00" |
返回值: Base64編碼的JPEG圖像
get_audio
提取音頻片段用於分析。需要安裝ffmpeg。
參數:
| 參數 |
是否必需 |
描述 |
url |
是 |
YouTube視頻URL |
startTime |
否 |
開始時間(默認: "0") |
endTime |
否 |
結束時間(可選) |
maxDuration |
否 |
最大時長(默認: 60,最大: 120) |
返回值: Base64編碼的MP3音頻(128kbps)
OAuth與安全
遠程模式實現了帶有PKCE的OAuth 2.1進行安全認證。
工作原理
- Claude連接到
/mcp - 發現/握手方法無需認證即可工作
- 當你使用工具時,Claude會收到一個帶有OAuth發現信息的401響應
- Claude執行動態客戶端註冊
- 瀏覽器打開同意頁面 - 你輸入密碼
- Claude用授權碼交換訪問令牌
- 後續請求使用Bearer令牌
安全特性
| 特性 |
保護作用 |
| 密碼保護的同意頁面 |
只有你可以授權訪問 |
| Bcrypt密碼哈希 |
密碼安全存儲 |
| 速率限制 |
每個IP 5次嘗試,然後鎖定10分鐘 |
| XSS保護 |
所有OAuth參數進行HTML轉義 |
| 命令注入保護 |
使用 shell: false 啟動yt-dlp |
| PKCE (S256) |
防止授權碼攔截 |
故障排除
"No English transcript available"
更新yt-dlp - YouTube經常更改:
pip3 install --upgrade yt-dlp
MCP無法從Claude網頁版連接
- 確保HTTPS配置正確
- 檢查服務狀態:
sudo systemctl status youtube-mcp
- 檢查日誌:
sudo journalctl -u youtube-mcp -f
OAuth流程未啟動
- 驗證
.well-known/ 端點返回200(而不是401)
- 檢查瀏覽器控制檯是否有CORS錯誤
- 確保
/register 返回有效憑證
授權窗口未出現
- OAuth在首次 使用工具 時觸發,而不是在連接時
- 開始聊天,啟用MCP,然後讓Claude獲取YouTube視頻
Claude使用錯誤/舊工具
在Claude設置中斷開並重新連接MCP以刷新工具列表。
Claude項目提示
在Claude項目中使用此提示以自動利用MCP:
You have access to the YouTube MCP server. When I share a YouTube URL:
1. Automatically fetch the transcript with get_video
2. Provide a summary, key takeaways, and notable quotes
3. For long videos (10+ min), consider using keySegmentsOnly=true first
Available tools:
- get_video: Transcript and metadata (supports timestamps, time ranges, search)
- get_playlist: List videos in a playlist
- get_comments: Top comments (requires API key)
- get_screenshot: Capture frames at any timestamp
- get_audio: Extract audio clips for analysis (max 120s)
架構
- 傳輸協議: 可流式傳輸的HTTP(MCP規範2025 - 03 - 26)
- 會話管理: 有狀態,使用UUID標識符(內存中)
- OAuth: 授權碼 + PKCE,動態客戶端註冊
- 令牌管理: 內存存儲(重啟後丟失)
🔧 技術細節
傳輸協議
採用可流式傳輸的HTTP協議(MCP規範2025 - 03 - 26),確保數據的高效傳輸和處理。
會話管理
使用有狀態的會話管理,通過UUID標識符在內存中存儲會話信息,方便對不同會話進行跟蹤和管理。
OAuth認證
實現了帶有PKCE的OAuth 2.1認證機制,包括授權碼模式和動態客戶端註冊,保障用戶數據的安全和授權過程的可靠性。
令牌存儲
令牌採用內存存儲方式,但在服務器重啟後會丟失,需要重新進行授權。
📄 許可證
本項目採用MIT許可證,詳情請參閱 LICENSE 文件。
貢獻說明
歡迎貢獻代碼!請在GitHub上提交問題或拉取請求。