YouTube播放列表生成器

一个基于YouTube Data API v3的MCP服务器,用于搜索音乐视频和管理播放列表。

  • by danisss9
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 danisss9/yt-playlist-generator-mcp-server

使用说明

YouTube播放列表生成器MCP服务器

一个模型上下文协议(MCP)服务器,使人工智能应用程序能够搜索YouTube音乐视频,并使用官方的YouTube Data API v3管理播放列表。

特性

  • 搜索音乐视频:使用可自定义的搜索参数在YouTube上查找音乐视频
  • 获取视频详细信息:检索有关特定视频的全面信息
  • 获取播放列表项目:列出公共播放列表中的视频
  • 播放列表管理:完整的播放列表管理,包括创建、编辑和管理播放列表(需要OAuth设置)

设置

先决条件

  • Node.js 18或更高版本
  • 启用YouTube数据API v3的Google云项目
  • YouTube数据API密钥
  • OAuth 2.0客户端凭据(可选,播放列表管理功能所需)

安装

  1. 克隆此存储库:
git clone https://github.com/danisss9/yt-playlist-generator-mcp-server
  1. 安装依赖项:
npm install
  1. 获取YouTube数据API密钥:

    • 转到 谷歌云控制台
    • 创建新项目或选择现有项目
    • 启用YouTube数据API v3
    • 创建凭据(API密钥)
    • 复制API密钥
  2. 设置环境变量:

# 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
  1. 构建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设置中对其进行配置:

  1. 打开VS代码设置:新闻 Ctrl+, (Windows/Linux)或 Cmd+, (macOS)

  2. 搜索MCP:在搜索栏中键入“mcp”

  3. 添加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

  1. 首选 文件>首选项>设置 (或使用 Ctrl+,)
  2. 搜索“GitHub Copilot MCP”
  3. 点击“Github›Copilot \8250 Chat:Mcp服务器”旁边的“在settings.json中编辑”
  4. 添加如上所示的服务器配置

环境变量设置

为了安全起见,您还可以在系统范围内设置环境变量,而不是在配置中设置:

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服务器:

  1. 打开Copilot聊天(Ctrl+Alt+I 或点击聊天图标)
  2. 使用自然语言与YouTube互动:
    • “搜索有关爵士乐的音乐视频”
    • “创建一个名为“我的收藏夹”的新播放列表”
    • “将此视频添加到我的播放列表”
    • “显示此YouTube视频的详细信息”

可用工具

只读工具(API密钥验证)

搜索音乐视频

在YouTube上搜索符合指定条件的音乐视频。

参数:

  • query (string):音乐视频搜索查询
  • maxResults (数字,1-50,默认值:10):最大结果数
  • order (枚举):排序顺序-“相关性”、“日期”、“评级”、“视图计数”、“标题”

获取_视频_详细信息

获取特定YouTube视频的详细信息。

参数:

  • videoId (string):YouTube视频ID

get_playlist_items

从公共YouTube播放列表中检索视频。

参数:

  • playlistId (string):YouTube播放列表ID
  • maxResults (数字,1-50,默认值:25):最大项目数

OAuth所需工具(播放列表管理)

认证_ youtube

使用YouTube OAuth进行身份验证以启用播放列表管理功能。

参数:

  • getAuthUrl (boolean,默认值:false):设置为true以获取授权URL
  • authCode (字符串,可选):来自OAuth流的授权代码

获取auth_status

检查当前OAuth身份验证状态。

参数: 无

创建播放列表

创建新的YouTube播放列表(需要OAuth身份验证)。

参数:

  • title (string):播放列表标题
  • description (字符串,可选):播放列表描述
  • privacy (enum):“私有”、“公共”或“未上市”

edit_playlist

编辑现有播放列表信息(需要OAuth身份验证)。

参数:

  • playlistId (string):要编辑的播放列表的ID
  • title (字符串,可选):播放列表的新标题
  • description (字符串,可选):播放列表的新描述
  • privacy (枚举,可选):新的隐私设置-“私有”、“公共”或“未列出”

注: 必须至少提供一个字段(标题、描述或隐私)才能更新。

add_to_playlist

将视频添加到现有播放列表中(需要OAuth身份验证)。

参数:

  • playlistId (string):目标播放列表ID
  • videoId (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.谷歌云控制台设置

  1. 首选 谷歌云控制台
  2. 创建新项目或选择现有项目
  3. 启用YouTube数据API v3
  4. 转到“凭据”→ “创建凭据”→ “OAuth 2.0客户端ID”
  5. 选择“桌面应用程序”作为应用程序类型
  6. 下载凭据或复制客户端ID和客户端密码

2.环境配置

将您的OAuth凭据添加到 .env 文件:

YOUTUBE_API_KEY=your_api_key_here
YOUTUBE_CLIENT_ID=your_client_id_here
YOUTUBE_CLIENT_SECRET=your_client_secret_here

3.身份验证流程

  1. 使用 authenticate_youtube 工具与 getAuthUrl: true
  2. 在浏览器中打开提供的URL
  3. 登录您的Google帐户并授予权限
  4. 复制授权码
  5. 使用 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

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 彻底测试
  5. 提交拉取请求

许可证

MIT许可证-有关详细信息,请参阅许可证文件

故障排除

常见问题

  1. “YOUTUBE_API_KEY环境变量是必需的”

    • 确保已设置YOUTUBE_API_KEY环境变量
    • 验证API密钥是否有效,以及是否可以访问YouTube数据API
  2. “超出配额”错误

    • 您已达到每日API配额限制
    • 等待配额重置或请求配额增加
  3. “未找到播放列表”错误

    • 确保播放列表ID正确
    • 验证播放列表是否为公共播放列表(私人播放列表需要OAuth)
  4. 构建错误

    • 请确保您已安装Node.js 18+
    • 跑 npm install 确保所有依赖项都已安装
    • 检查TypeScript编译 npm run build

安全考虑

  • 永远不要将API密钥提交到版本控制
  • 使用环境变量进行敏感配置
  • 验证所有用户输入
  • 实施适当的错误处理和日志记录

此项目是使用GitHub Copilot创建的