YouTube音乐MCP服务器

YouTube音乐MCP服务器是一个功能全面的服务,支持搜索、管理播放列表以及通过AI助手创建智能推荐。

  • by CaullenOmdahl
  • JavaScript
  • 本地部署
  • 15 星标
  • 更新于
在 GitHub 查看 CaullenOmdahl/youtube-music-mcp-server

使用说明

YouTube音乐MCP服务器

用于YouTube音乐的全功能MCP服务器 --搜索、管理播放列表,并通过人工智能助手创建智能推荐。

亮点

  • 完整的播放列表控制 --通过批处理操作创建、编辑、删除播放列表
  • 智能推荐 --使用ListenBrainz创建AI驱动的播放列表(无偏见,无报酬)
  • 元数据 --每个回复都包括艺术家、专辑、年份和持续时间
  • 安全认证 --OAuth 2.1+具有加密令牌存储的PKCE
  • 速率限制 -遵守API配额的可配置限制

快速开始

npm install
cp .env.example .env
# Add your Google OAuth credentials to .env
npm run build
npm start

MCP配置

{
  "mcpServers": {
    "youtube-music": {
      "command": "node",
      "args": ["path/to/youtube-music-mcp-server/dist/index.js"],
      "env": {
        "GOOGLE_OAUTH_CLIENT_ID": "your-client-id",
        "GOOGLE_OAUTH_CLIENT_SECRET": "your-client-secret"
      }
    }
  }
}

工具

搜索与发现

工具 说明
search_songs 搜索具有可配置限制的歌曲
search_albums 搜索相册
search_artists 搜索艺术家
get_song_info 歌曲详细信息
get_album_info 包含所有曲目的专辑
get_artist_info 拥有热门歌曲的艺术家
get_library_songs 用户喜欢的音乐(过滤非音乐)

播放列表管理

工具 说明
get_playlists 列出用户的播放列表
get_playlist_details 包含所有曲目的播放列表
create_playlist 创建新播放列表
edit_playlist 更新元数据
delete_playlist 删除播放列表
add_songs_to_playlist 批量添加歌曲
remove_songs_from_playlist 批量删除歌曲

智能播放列表

工具 说明
start_smart_playlist 开始创建会话
add_seed_artist 添加艺术家影响力
add_seed_track 将曲目添加为种子
refine_recommendations 设置偏好(排除、标签、多样性)
get_recommendations 生成建议
preview_playlist 创建前预览
create_smart_playlist 在YouTube上创建音乐
get_user_taste_profile 分析听力习惯

响应格式

所有工具都返回带元数据的结构化JSON:

{
  "songs": [{
    "videoId": "abc123",
    "title": "Song Title",
    "artists": [{"id": "...", "name": "Artist"}],
    "album": {"id": "...", "name": "Album", "year": 2023},
    "duration": "3:45",
    "durationSeconds": 225
  }],
  "metadata": {
    "returned": 20,
    "hasMore": true
  }
}

示例工作流

“为我制作一个基于Radiohead和Boards of Canada的播放列表”

→ start_smart_playlist()
→ add_seed_artist("Radiohead")
→ add_seed_artist("Boards of Canada")
→ get_recommendations()
→ create_smart_playlist("Late Night Electronica")

“将这些歌曲添加到我的锻炼播放列表中”

→ search_songs("high energy workout")
→ add_songs_to_playlist(playlistId, [videoId1, videoId2, ...])

建筑

src/
├── index.ts              # Entry point
├── server.ts             # MCP server setup
├── youtube-music/        # Custom YTM client
│   ├── client.ts         # API methods
│   └── parsers.ts        # Response parsing
├── musicbrainz/          # MusicBrainz integration
├── listenbrainz/         # ListenBrainz recommendations
├── recommendations/      # Smart playlist engine
├── auth/                 # OAuth 2.1 + PKCE
└── tools/                # MCP tool definitions

码头工人

docker build -t youtube-music-mcp .
docker run -p 8081:8081 \
  -e GOOGLE_OAUTH_CLIENT_ID="..." \
  -e GOOGLE_OAUTH_CLIENT_SECRET="..." \
  youtube-music-mcp

发展

npm run dev                           # Development mode
BYPASS_AUTH_FOR_TESTING=true npm run dev  # Skip OAuth for testing

链接

许可证

麻省理工学院