YouTube数据API服务器

一个基于Go语言的YouTube数据API v3服务器,提供视频搜索、频道信息获取、视频详情检索等功能,适用于AI助手和其他MCP客户端。

  • by GeLi2001
  • Go
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 GeLi2001/youtube-mcp

使用说明

YouTube MCP服务器

一个基于Go-based Model Context Protocol(MCP)的服务器,提供对YouTube Data API v3的访问。该服务器允许AI助手和其他MCP客户端搜索视频、获取频道信息、检索视频详细信息等。

特性

  • 视频搜索:使用过滤选项搜索YouTube视频
  • 频道信息:获取有关YouTube频道的详细信息
  • 视频详细信息:检索特定视频的全面详细信息
  • 播放列表项目:从YouTube播放列表中获取项目
  • 频道搜索:搜索YouTube频道

先决条件

  1. 转到1.19或更高版本 安装在您的系统上
  2. YouTube数据API v3凭据 从谷歌云控制台

设置

1.获取YouTube API证书

  1. 转到 谷歌云控制台
  2. 创建新项目或选择现有项目
  3. 启用YouTube数据API v3:
    • 导航到“API和服务”→ “图书馆”
    • 搜索“YouTube数据API v3”
    • 点击“启用”
  4. 创建凭据:
    • 转到“API和服务”→ “凭据”
    • 点击“创建凭据”→ “API密钥”(用于公共数据访问)
    • 或者创建“OAuth客户端ID”(用于用户特定的数据)

2.安装依赖项

go mod tidy

3.配置

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

  1. 创建一个 .env 示例中的文件:
cp .env.example .env
  1. 编辑 .env 使用API密钥:
# YouTube Data API v3 Configuration
YOUTUBE_API_KEY=your_actual_api_key_here

# OAuth2 Configuration (optional, for user-specific data)
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
# Edit config.json with your settings
# Run with: ./youtube-mcp-server -json-config

用法

构建并运行

# Build the server
go build -o youtube-mcp-server ./cmd/server

# Run the server (uses .env file)
./youtube-mcp-server

# Or run with JSON config file
./youtube-mcp-server -json-config -config config.json

使用Docker运行(即将推出)

# Build Docker image
docker build -t youtube-mcp-server .

# Run with environment variables
docker run -e YOUTUBE_API_KEY="your_api_key" youtube-mcp-server

可用的MCP工具

1.搜索_视频

根据查询搜索YouTube视频。

参数:

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

例子:

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

2.get_channel_info

获取有关YouTube频道的信息。

参数:

  • channel_id (字符串,可选):用于获取信息的通道ID(如果为空,则使用经过身份验证的用户的通道)

例子:

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

3.获取_视频_详细信息

获取有关YouTube视频的详细信息。

参数:

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

例子:

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

4.获取播放列表项目

从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.搜索频道

根据查询搜索YouTube频道。

参数:

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

例子:

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

配置选项

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

设置 环境变量 说明
youtube_api_key YOUTUBE_API_KEY YouTube数据API v3密钥
oauth2_credentials_file - OAuth2凭据文件的路径
token_file - 存储OAuth2令牌的路径
server_name - MCP服务器名称
server_version - MCP服务器版本
server_description MCP服务器描述

发展

项目结构

youtube-mcp/
├── cmd/
│   └── server/
│       └── main.go              # Main server entry point
├── pkg/
│   ├── config/
│   │   └── config.go            # Configuration management
│   ├── youtube/
│   │   └── youtube_client.go    # YouTube API client wrapper
│   └── mcp/
│       └── mcp_tools.go         # MCP tool definitions
├── .env.example                 # Example environment file
├── config.example.json          # Example configuration file (legacy)
├── go.mod                       # Go module definition
└── README.md                   # This file

添加新工具

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

测试

# Run tests
go test ./...

# Run with race detection
go test -race ./...

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 如果适用,添加测试
  5. 提交拉取请求

许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。

故障排除

常见问题

  1. “超出配额”错误:您已超过您的YouTube API配额。等待它重置或升级您的配额。

  2. “无效的API密钥”错误:检查您的API密钥是否正确,并且为您的项目启用了YouTube Data API v3。

  3. OAuth2身份验证问题:确保您的 client_secret.json 文件位于正确的位置并且格式正确。

获取帮助

资源