YouTube播放列表生成器MCP服务器
一个模型上下文协议(MCP)服务器,使人工智能应用程序能够搜索YouTube音乐视频,并使用官方的YouTube Data API v3管理播放列表。
特性
- 搜索音乐视频:使用可自定义的搜索参数在YouTube上查找音乐视频
- 获取视频详细信息:检索有关特定视频的全面信息
- 获取播放列表项目:列出公共播放列表中的视频
- 播放列表管理:完整的播放列表管理,包括创建、编辑和管理播放列表(需要OAuth设置)
设置
先决条件
- Node.js 18或更高版本
- 启用YouTube数据API v3的Google云项目
- YouTube数据API密钥
- OAuth 2.0客户端凭据(可选,播放列表管理功能所需)
安装
- 克隆此存储库:
git clone https://github.com/danisss9/yt-playlist-generator-mcp-server- 安装依赖项:
npm install- 获取YouTube数据API密钥:
- 转到 谷歌云控制台 - 创建新项目或选择现有项目 - 启用YouTube数据API v3 - 创建凭据(API密钥) - 复制API密钥
- 设置环境变量:
# Create a .env file
echo "YOUTUBE_API_KEY=your_api_key_here" > .env
echo "YOUTUBE_CLIENT_ID=your_client_id_here" >> .env
echo "YOUTUBE_CLIENT_SECRET=your_client_secret_here" >> .env- 构建TypeScript代码:
npm run build运行服务器
对于自动重建的开发:
npm run dev生产:
npm start与MCP客户端一起使用
此服务器使用stdio传输,因此它可以与任何支持stdio的MCP客户端一起使用。
Claude桌面配置
添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"youtube-playlist-generator": {
"command": "node",
"args": ["/absolute/path/to/yt-playlist-generator/build/index.js"],
"env": {
"YOUTUBE_API_KEY": "your_youtube_api_key_here",
"YOUTUBE_CLIENT_ID": "your_client_id_here",
"YOUTUBE_CLIENT_SECRET": "your_client_secret_here"
}
}
}
}Visual Studio代码与GitHub副本配置
要在Visual Studio Code中将此MCP服务器与GitHub Copilot一起使用,您需要在VS Code设置中对其进行配置:
- 打开VS代码设置:新闻
Ctrl+,(Windows/Linux)或Cmd+,(macOS)
- 搜索MCP:在搜索栏中键入“mcp”
- 添加MCP服务器配置:将以下内容添加到您的VS代码设置JSON中:
{
"github.copilot.chat.mcp.servers": {
"youtube-playlist-generator": {
"command": "node",
"args": ["/absolute/path/to/yt-playlist-generator/build/index.js"],
"env": {
"YOUTUBE_API_KEY": "your_youtube_api_key_here",
"YOUTUBE_CLIENT_ID": "your_client_id_here",
"YOUTUBE_CLIENT_SECRET": "your_client_secret_here"
}
}
}
}替代方案:使用设置UI
- 首选 文件>首选项>设置 (或使用
Ctrl+,) - 搜索“GitHub Copilot MCP”
- 点击“Github›Copilot \\8250 Chat:Mcp服务器”旁边的“在settings.json中编辑”
- 添加如上所示的服务器配置
环境变量设置
为了安全起见,您还可以在系统范围内设置环境变量,而不是在配置中设置:
Windows(PowerShell):
[Environment]::SetEnvironmentVariable("YOUTUBE_API_KEY", "your_api_key_here", "User")
[Environment]::SetEnvironmentVariable("YOUTUBE_CLIENT_ID", "your_client_id_here", "User")
[Environment]::SetEnvironmentVariable("YOUTUBE_CLIENT_SECRET", "your_client_secret_here", "User")Windows(命令提示符):
setx YOUTUBE_API_KEY "your_api_key_here"
setx YOUTUBE_CLIENT_ID "your_client_id_here"
setx YOUTUBE_CLIENT_SECRET "your_client_secret_here"macOS/Linux:
export YOUTUBE_API_KEY="your_api_key_here"
export YOUTUBE_CLIENT_ID="your_client_id_here"
export YOUTUBE_CLIENT_SECRET="your_client_secret_here"
# Add to ~/.bashrc, ~/.zshrc, or ~/.profile to persist
echo 'export YOUTUBE_API_KEY="your_api_key_here"' >> ~/.bashrc
echo 'export YOUTUBE_CLIENT_ID="your_client_id_here"' >> ~/.bashrc
echo 'export YOUTUBE_CLIENT_SECRET="your_client_secret_here"' >> ~/.bashrc然后移除 env VS代码配置中的部分:
{
"github.copilot.chat.mcp.servers": {
"youtube-playlist-generator": {
"command": "node",
"args": ["/absolute/path/to/yt-playlist-generator/build/index.js"]
}
}
}VS代码中的用法
配置后,您可以通过GitHub Copilot Chat使用MCP服务器:
- 打开Copilot聊天(
Ctrl+Alt+I或点击聊天图标) - 使用自然语言与YouTube互动:
- “搜索有关爵士乐的音乐视频” - “创建一个名为“我的收藏夹”的新播放列表” - “将此视频添加到我的播放列表” - “显示此YouTube视频的详细信息”
可用工具
只读工具(API密钥验证)
搜索音乐视频
在YouTube上搜索符合指定条件的音乐视频。
参数:
query(string):音乐视频搜索查询maxResults(数字,1-50,默认值:10):最大结果数order(枚举):排序顺序-“相关性”、“日期”、“评级”、“视图计数”、“标题”
获取_视频_详细信息
获取特定YouTube视频的详细信息。
参数:
videoId(string):YouTube视频ID
get_playlist_items
从公共YouTube播放列表中检索视频。
参数:
playlistId(string):YouTube播放列表IDmaxResults(数字,1-50,默认值:25):最大项目数
OAuth所需工具(播放列表管理)
认证\_ youtube
使用YouTube OAuth进行身份验证以启用播放列表管理功能。
参数:
getAuthUrl(boolean,默认值:false):设置为true以获取授权URLauthCode(字符串,可选):来自OAuth流的授权代码
获取auth_status
检查当前OAuth身份验证状态。
参数: 无
创建播放列表
创建新的YouTube播放列表(需要OAuth身份验证)。
参数:
title(string):播放列表标题description(字符串,可选):播放列表描述privacy(enum):“私有”、“公共”或“未上市”
edit_playlist
编辑现有播放列表信息(需要OAuth身份验证)。
参数:
playlistId(string):要编辑的播放列表的IDtitle(字符串,可选):播放列表的新标题description(字符串,可选):播放列表的新描述privacy(枚举,可选):新的隐私设置-“私有”、“公共”或“未列出”
注: 必须至少提供一个字段(标题、描述或隐私)才能更新。
add_to_playlist
将视频添加到现有播放列表中(需要OAuth身份验证)。
参数:
playlistId(string):目标播放列表IDvideoId(string):要添加的视频ID
list_playlists
列出用户的播放列表(需要OAuth身份验证)。
参数:
maxResults(数字,1-50,默认值:25):播放列表的最大数量mine(boolean,默认值:true):列出经过身份验证的用户的播放列表
remove_from_playlist
从播放列表中删除视频(需要OAuth身份验证)。
参数:
playlistItemId(string):要删除的播放列表项的ID(从get_playlist_items获取)
OAuth身份验证设置
要获得完整的播放列表管理功能,您需要设置OAuth 2.0:
1.谷歌云控制台设置
- 首选 谷歌云控制台
- 创建新项目或选择现有项目
- 启用YouTube数据API v3
- 转到“凭据”→ “创建凭据”→ “OAuth 2.0客户端ID”
- 选择“桌面应用程序”作为应用程序类型
- 下载凭据或复制客户端ID和客户端密码
2.环境配置
将您的OAuth凭据添加到 .env 文件:
YOUTUBE_API_KEY=your_api_key_here
YOUTUBE_CLIENT_ID=your_client_id_here
YOUTUBE_CLIENT_SECRET=your_client_secret_here3.身份验证流程
- 使用
authenticate_youtube工具与getAuthUrl: true - 在浏览器中打开提供的URL
- 登录您的Google帐户并授予权限
- 复制授权码
- 使用
authenticate_youtube再次使用工具authCode参数
4.使用经过身份验证的功能
一旦通过身份验证,您可以:
- 创建新播放列表
- 编辑现有播放列表信息(标题、描述、隐私)
- 将视频添加到播放列表
- 列出您的私人播放列表
- 从播放列表中删除视频
API限制
- 配额限制:YouTube API有每日配额限制(默认为10000个单位/天)
- 速率限制:API调用受速率限制
- OAuth令牌:访问令牌过期并需要刷新(自动处理)
- 权限:OAuth作用域决定可用操作
发展
建筑
npm run build发展模式
npm run dev项目结构
src/
└── index.ts # Main server implementation
build/ # Compiled JavaScript output贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 彻底测试
- 提交拉取请求
许可证
MIT许可证-有关详细信息,请参阅许可证文件
故障排除
常见问题
- “YOUTUBE_API_KEY环境变量是必需的”
- 确保已设置YOUTUBE_API_KEY环境变量 - 验证API密钥是否有效,以及是否可以访问YouTube数据API
- “超出配额”错误
- 您已达到每日API配额限制 - 等待配额重置或请求配额增加
- “未找到播放列表”错误
- 确保播放列表ID正确 - 验证播放列表是否为公共播放列表(私人播放列表需要OAuth)
- 构建错误
- 请确保您已安装Node.js 18+ - 跑 npm install 确保所有依赖项都已安装 - 检查TypeScript编译 npm run build
安全考虑
- 永远不要将API密钥提交到版本控制
- 使用环境变量进行敏感配置
- 验证所有用户输入
- 实施适当的错误处理和日志记录
______________________________________________________________________
*此项目是使用GitHub Copilot创建的*
