返回市场
YouTube-MCP服务器

YouTube-MCP服务器

作者:GeLi20012 星标更新:2025-08-26

项目介绍

YouTube MCP Server

基于Go语言的模型上下文协议(MCP)服务器,提供对YouTube Data API v3的访问。此服务器允许AI助手和其他MCP客户端搜索视频、获取频道信息、检索视频详情等。

功能

  • 视频搜索:根据过滤选项搜索YouTube视频
  • 频道信息:获取YouTube频道的详细信息
  • 视频详情:检索特定视频的全面详情
  • 播放列表项目:获取YouTube播放列表中的项目
  • 频道搜索:搜索YouTube频道

预备条件

  1. 在系统上安装了Go 1.19或更高版本
  2. 从Google Cloud Console获取YouTube Data API v3凭证

设置

1. 获取YouTube API凭证

  1. 访问Google Cloud Console
  2. 创建一个新项目或选择现有项目
  3. 启用YouTube Data API v3:
    • 导航到“API和服务”→“库”
    • 搜索“YouTube Data API v3”
    • 点击“启用”
  4. 创建凭证:
    • 导航到“API和服务”→“凭证”
    • 点击“创建凭证”→“API密钥”(用于公开数据访问)
    • 或者创建“OAuth客户端ID”(用于用户特定的数据)

2. 安装依赖项

go mod tidy

3. 配置

选项A:使用.env文件(推荐)

  1. 从示例创建.env文件:
cp .env.example .env
  1. 使用您的API密钥编辑.env
# YouTube Data API v3配置
YOUTUBE_API_KEY=your_actual_api_key_here

# OAuth2配置(可选,用于用户特定数据)
OAUTH2_CREDENTIALS_FILE=client_secret.json
TOKEN_FILE=token.json

选项B:使用环境变量

export YOUTUBE_API_KEY="your_api_key_here"

选项C:使用JSON配置文件(遗留)

cp config.example.json config.json
# 编辑config.json以添加您的设置
# 运行:./youtube-mcp-server -json-config

使用方法

构建和运行

# 构建服务器
go build -o youtube-mcp-server ./cmd/server

# 运行服务器(使用.env文件)
./youtube-mcp-server

# 或使用JSON配置文件运行
./youtube-mcp-server -json-config -config config.json

使用Docker运行(即将推出)

# 构建Docker镜像
docker build -t youtube-mcp-server .

# 使用环境变量运行
docker run -e YOUTUBE_API_KEY="your_api_key" youtube-mcp-server

可用的MCP工具

1. search_videos

根据查询搜索YouTube视频。

参数:

  • query(字符串,必需):视频搜索查询
  • max_results(整数,可选):结果的最大数量(默认:110)
  • channel_id(字符串,可选):限制搜索到特定频道

示例:

{
  "method": "tools/call",
  "params": {
    "name": "search_videos",
    "arguments": {
      "query": "golang教程",
      "max_results": 5
    }
  }
}

2. get_channel_info

获取YouTube频道的信息。

参数:

  • channel_id(字符串,可选):要获取信息的频道ID(如果为空,则使用已认证用户的频道)

示例:

{
  "method": "tools/call",
  "params": {
    "name": "get_channel_info",
    "arguments": {
      "channel_id": "UCBUKHRdFNRo2gPXRXCKnN7w"
    }
  }
}

3. get_video_details

获取YouTube视频的详细信息。

参数:

  • video_id(字符串,必需):YouTube视频ID

示例:

{
  "method": "tools/call",
  "params": {
    "name": "get_video_details",
    "arguments": {
      "video_id": "dQw4w9WgXcQ"
    }
  }
}

4. get_playlist_items

获取YouTube播放列表中的项目。

参数:

  • playlist_id(字符串,必需):YouTube播放列表ID
  • max_results(整数,可选):结果的最大数量(默认:10)

示例:

{
  "method": "tools/call",
  "params": {
    "name": "get_playlist_items",
    "arguments": {
      "playlist_id": "PLrAXtmRdnEQy4jrMVwm9wRbWqz4_0dmSh",
      "max_results": 10
    }
  }
}

5. search_channels

根据查询搜索YouTube频道。

参数:

  • query(字符串,必需):频道搜索查询
  • max_results(整数,可选):结果的最大数量(默认:10)

示例:

{
  "method": "tools/call",
  "params": {
    "name": "search_channels",
    "arguments": {
      "query": "编程",
      "max_results": 5
    }
  }
}

配置选项

服务器可以通过JSON文件或环境变量进行配置:

设置环境变量描述
youtube_api_keyYOUTUBE_API_KEYYouTube Data API v3密钥
oauth2_credentials_file-OAuth2凭证文件路径
token_file-存储OAuth2令牌的路径
server_name-MCP服务器名称
server_version-MCP服务器版本
server_description-MCP服务器描述

开发

项目结构

youtube-mcp/
├── cmd/
│   └── server/
│       └── main.go              # 主服务器入口点
├── pkg/
│   ├── config/
│   │   └── config.go            # 配置管理
│   ├── youtube/
│   │   └── youtube_client.go    # YouTube API客户端封装
│   └── mcp/
│       └── mcp_tools.go         # MCP工具定义
├── .env.example                 # 示例环境文件
├── config.example.json          # 示例配置文件(遗留)
├── go.mod                       # Go模块定义
└── README.md                   # 本文件

添加新工具

  1. pkg/mcp/mcp_tools.go中添加新的参数结构
  2. pkg/youtube/youtube_client.go中实现YouTube API逻辑
  3. SetupMCPTools函数中注册新工具

测试

# 运行测试
go test ./...

# 带有竞态检测运行测试
go test -race ./...

贡献

  1. 分叉仓库
  2. 创建功能分支
  3. 进行更改
  4. 如适用,添加测试
  5. 提交拉取请求

许可证

本项目采用MIT许可证——详见LICENSE文件。

故障排除

常见问题

  1. “超出配额”错误:您已超出YouTube API配额。等待配额重置或升级配额。
  2. “无效API密钥”错误:检查您的API密钥是否正确且YouTube Data API v3已为您的项目启用。
  3. OAuth2身份验证问题:确保您的client_secret.json文件位于正确位置并格式正确。

获取帮助

资源