使用说明
YouTube MCP服务器
一个基于Go-based Model Context Protocol(MCP)的服务器,提供对YouTube Data API v3的访问。该服务器允许AI助手和其他MCP客户端搜索视频、获取频道信息、检索视频详细信息等。
特性
- 视频搜索:使用过滤选项搜索YouTube视频
- 频道信息:获取有关YouTube频道的详细信息
- 视频详细信息:检索特定视频的全面详细信息
- 播放列表项目:从YouTube播放列表中获取项目
- 频道搜索:搜索YouTube频道
先决条件
- 转到1.19或更高版本 安装在您的系统上
- YouTube数据API v3凭据 从谷歌云控制台
设置
1.获取YouTube API证书
- 转到 谷歌云控制台
- 创建新项目或选择现有项目
- 启用YouTube数据API v3:
- 导航到“API和服务”→ “图书馆”
- 搜索“YouTube数据API v3”
- 点击“启用”
- 创建凭据:
- 转到“API和服务”→ “凭据”
- 点击“创建凭据”→ “API密钥”(用于公共数据访问)
- 或者创建“OAuth客户端ID”(用于用户特定的数据)
2.安装依赖项
go mod tidy
3.配置
选项A:使用.env文件(推荐)
- 创建一个
.env示例中的文件:
cp .env.example .env
- 编辑
.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播放列表IDmax_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
添加新工具
- 在中添加新的参数结构
pkg/mcp/mcp_tools.go - 在中实现YouTube API逻辑
pkg/youtube/youtube_client.go - 在中注册新工具
SetupMCPTools函数
测试
# Run tests
go test ./...
# Run with race detection
go test -race ./...
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
故障排除
常见问题
-
“超出配额”错误:您已超过您的YouTube API配额。等待它重置或升级您的配额。
-
“无效的API密钥”错误:检查您的API密钥是否正确,并且为您的项目启用了YouTube Data API v3。
-
OAuth2身份验证问题:确保您的
client_secret.json文件位于正确的位置并且格式正确。
获取帮助
- 检查 YouTube数据API文档
- 查看 MCP规范
- 在GitHub上发布bug或功能请求