YouTube模型上下文协议服务器
一个通过模型上下文协议(Model Context Protocol)启用与YouTube数据交互的服务器,允许用户搜索视频、检索有关视频/频道的详细信息以及获取评论。
服务介绍
YouTube MCP 服务器
这是一个用于与 YouTube 数据交互的 Model Context Protocol (MCP) 服务器。该服务器提供了通过 stdio 接口查询 YouTube 视频、频道、评论和字幕的资源和工具。
功能
- 通过高级过滤选项搜索 YouTube 视频
- 获取特定视频和频道的详细信息
- 比较多个视频的统计数据
- 按地区和类别发现热门视频
- 分析频道表现和视频统计数据
- 检索视频评论和字幕/说明
- 生成视频分析和字幕摘要
前提条件
- Node.js (v16+)
- YouTube Data API 密钥
安装
通过 Smithery 安装
要通过 Smithery 自动为 Claude Desktop 安装 YouTube MCP 服务器:
npx -y @smithery/cli install @coyaSONG/youtube-mcp-server --client claude
手动安装
-
克隆此仓库:
git clone https://github.com/coyaSONG/youtube-mcp-server.git cd youtube-mcp-server -
安装依赖项:
npm install -
在根目录中创建一个
.env文件:YOUTUBE_API_KEY=your_youtube_api_key_here PORT=3000
使用
构建和运行
-
构建项目:
npm run build -
运行服务器:
npm start -
以开发模式运行:
npm run dev -
清理构建产物:
npm run clean
Docker 部署
该项目包含一个用于容器化部署的 Dockerfile:
# Build the Docker image
docker build -t youtube-mcp-server .
# Run the container
docker run -p 3000:3000 --env-file .env youtube-mcp-server
API 参考
资源
youtube://video/{videoId}- 获取特定视频的详细信息youtube://channel/{channelId}- 获取特定频道的信息youtube://transcript/{videoId}- 获取特定视频的字幕- 可选查询参数:
?language=LANGUAGE_CODE(例如,en,ko,ja)
- 可选查询参数:
工具
基本工具
search-videos- 通过高级过滤选项搜索 YouTube 视频get-video-comments- 获取特定视频的评论get-video-transcript- 获取特定视频的字幕,并可选择语言enhanced-transcript- 提供过滤、搜索和多视频功能的高级字幕提取get-key-moments- 从视频字幕中提取带有时间戳的关键时刻,以便于导航get-segmented-transcript- 将视频字幕分成段落,便于分析
统计工具
get-video-stats- 获取特定视频的统计信息get-channel-stats- 获取订阅者数量、观看次数等频道统计数据compare-videos- 比较多个视频的统计数据
发现工具
get-trending-videos- 按地区和类别检索热门视频get-video-categories- 获取特定地区的可用视频类别
分析工具
analyze-channel-videos- 分析特定频道视频的表现趋势
提示词
video-analysis- 生成YouTube视频的分析报告transcript-summary- 根据视频的文字记录生成摘要,可自定义长度和关键词提取segment-by-segment-analysis- 通过分析视频的每个片段提供详细的内容分解
示例
访问视频文字记录
youtube://transcript/dQw4w9WgXcQ
获取特定语言的文字记录
youtube://transcript/dQw4w9WgXcQ?language=en
使用统计工具
// Get video statistics
{
"type": "tool",
"name": "get-video-stats",
"parameters": {
"videoId": "dQw4w9WgXcQ"
}
}
// Compare multiple videos
{
"type": "tool",
"name": "compare-videos",
"parameters": {
"videoIds": ["dQw4w9WgXcQ", "9bZkp7q19f0"]
}
}
使用文字记录摘要提示
{
"type": "prompt",
"name": "transcript-summary",
"parameters": {
"videoId": "dQw4w9WgXcQ",
"language": "en"
}
}
使用增强型文字记录工具
// Basic multi-video transcript extraction
{
"type": "tool",
"name": "enhanced-transcript",
"parameters": {
"videoIds": ["dQw4w9WgXcQ", "9bZkp7q19f0"],
"format": "timestamped"
}
}
// With search and time filtering
{
"type": "tool",
"name": "enhanced-transcript",
"parameters": {
"videoIds": ["dQw4w9WgXcQ"],
"filters": {
"timeRange": {
"start": 60, // Start at 60 seconds
"end": 180 // End at 180 seconds
},
"search": {
"query": "never gonna",
"contextLines": 2
}
},
"format": "merged"
}
}
// With smart segmentation for easier analysis
{
"type": "tool",
"name": "enhanced-transcript",
"parameters": {
"videoIds": ["dQw4w9WgXcQ"],
"filters": {
"segment": {
"count": 5,
"method": "smart" // Breaks at natural pauses
}
},
"format": "timestamped",
"language": "en"
}
}
使用增强型文字记录分析功能
// Get key moments from a video
{
"type": "tool",
"name": "get-key-moments",
"parameters": {
"videoId": "dQw4w9WgXcQ",
"maxMoments": "5"
}
}
// Get a segmented transcript
{
"type": "tool",
"name": "get-segmented-transcript",
"parameters": {
"videoId": "dQw4w9WgXcQ",
"segmentCount": "4"
}
}
// Get a segment-by-segment analysis
{
"type": "prompt",
"name": "segment-by-segment-analysis",
"parameters": {
"videoId": "dQw4w9WgXcQ",
"segmentCount": "4"
}
}
// Get customized transcript summary
{
"type": "prompt",
"name": "transcript-summary",
"parameters": {
"videoId": "dQw4w9WgXcQ",
"language": "en",
"summaryLength": "detailed",
"includeKeywords": "true"
}
}
错误处理
服务器处理各种错误情况,包括:
- 无效的API密钥
- 视频或频道未找到
- 文字记录不可用
- 网络问题
许可证
MIT