基于Go语言的模型上下文协议(MCP)服务器,提供对YouTube Data API v3的访问。此服务器允许AI助手和其他MCP客户端搜索视频、获取频道信息、检索视频详情等。
go mod tidy
.env文件:cp .env.example .env
.env:# YouTube Data API v3配置
YOUTUBE_API_KEY=your_actual_api_key_here
# OAuth2配置(可选,用于用户特定数据)
OAUTH2_CREDENTIALS_FILE=client_secret.json
TOKEN_FILE=token.json
export YOUTUBE_API_KEY="your_api_key_here"
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 build -t youtube-mcp-server .
# 使用环境变量运行
docker run -e YOUTUBE_API_KEY="your_api_key" youtube-mcp-server
根据查询搜索YouTube视频。
参数:
query(字符串,必需):视频搜索查询max_results(整数,可选):结果的最大数量(默认:110)channel_id(字符串,可选):限制搜索到特定频道示例:
{
"method": "tools/call",
"params": {
"name": "search_videos",
"arguments": {
"query": "golang教程",
"max_results": 5
}
}
}
获取YouTube频道的信息。
参数:
channel_id(字符串,可选):要获取信息的频道ID(如果为空,则使用已认证用户的频道)示例:
{
"method": "tools/call",
"params": {
"name": "get_channel_info",
"arguments": {
"channel_id": "UCBUKHRdFNRo2gPXRXCKnN7w"
}
}
}
获取YouTube视频的详细信息。
参数:
video_id(字符串,必需):YouTube视频ID示例:
{
"method": "tools/call",
"params": {
"name": "get_video_details",
"arguments": {
"video_id": "dQw4w9WgXcQ"
}
}
}
获取YouTube播放列表中的项目。
参数:
playlist_id(字符串,必需):YouTube播放列表IDmax_results(整数,可选):结果的最大数量(默认:10)示例:
{
"method": "tools/call",
"params": {
"name": "get_playlist_items",
"arguments": {
"playlist_id": "PLrAXtmRdnEQy4jrMVwm9wRbWqz4_0dmSh",
"max_results": 10
}
}
}
根据查询搜索YouTube频道。
参数:
query(字符串,必需):频道搜索查询max_results(整数,可选):结果的最大数量(默认:10)示例:
{
"method": "tools/call",
"params": {
"name": "search_channels",
"arguments": {
"query": "编程",
"max_results": 5
}
}
}
服务器可以通过JSON文件或环境变量进行配置:
| 设置 | 环境变量 | 描述 |
|---|---|---|
youtube_api_key | YOUTUBE_API_KEY | YouTube 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 # 本文件
pkg/mcp/mcp_tools.go中添加新的参数结构pkg/youtube/youtube_client.go中实现YouTube API逻辑SetupMCPTools函数中注册新工具# 运行测试
go test ./...
# 带有竞态检测运行测试
go test -race ./...
本项目采用MIT许可证——详见LICENSE文件。
client_secret.json文件位于正确位置并格式正确。