这是一个用于与YouTube数据交互的模型上下文协议(MCP)服务器。该服务器提供了通过标准输入输出接口查询YouTube视频、频道、评论和字幕的资源和工具。
要通过Smithery自动安装YouTube MCP服务器到Claude桌面:
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
运行服务器(HTTP传输):
npm start
服务器将在端口3000(或PORT环境变量)上监听,并在/mcp端点接受MCP请求。
开发模式运行:
npm run dev
清理构建产物:
npm run clean
迁移状态:✅ 完成 - 成功从STDIO迁移到可流式传输的HTTP传输
此服务器已更新为使用现代的可流式传输的HTTP传输,这是Smithery托管平台的要求。迁移包括:
/mcp端点处理本地测试:
# 启动服务器
npm start
# 使用MCP Inspector测试
npx @modelcontextprotocol/inspector
# 连接到:http://localhost:3000/mcp
Smithery集成:
该项目包含一个Dockerfile以实现容器化部署:
# 构建Docker镜像
docker build -t youtube-mcp-server .
# 使用HTTP传输运行容器
docker run -p 3000:3000 --env-file .env youtube-mcp-server
重要:容器现在暴露端口3000用于基于HTTP的MCP通信,而不是STDIO。
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
// 获取视频统计信息
{
"type": "tool",
"name": "get-video-stats",
"parameters": {
"videoId": "dQw4w9WgXcQ"
}
}
// 比较多个视频
{
"type": "tool",
"name": "compare-videos",
"parameters": {
"videoIds": ["dQw4w9WgXcQ", "9bZkp7q19f0"]
}
}
{
"type": "prompt",
"name": "transcript-summary",
"parameters": {
"videoId": "dQw4w9WgXcQ",
"language": "en"
}
}
// 基本多视频字幕提取
{
"type": "tool",
"name": "enhanced-transcript",
"parameters": {
"videoIds": ["dQw4w9WgXcQ", "9bZkp7q19f0"],
"format": "timestamped"
}
}
// 带有搜索和时间过滤
{
"type": "tool",
"name": "enhanced-transcript",
"parameters": {
"videoIds": ["dQw4w9WgXcQ"],
"filters": {
"timeRange": {
"start": 60, // 从60秒开始
"end": 180 // 到180秒结束
},
"search": {
"query": "never gonna",
"contextLines": 2
}
},
"format": "merged"
}
}
// 带有智能分段以便于分析
{
"type": "tool",
"name": "enhanced-transcript",
"parameters": {
"videoIds": ["dQw4w9WgXcQ"],
"filters": {
"segment": {
"count": 5,
"method": "smart" // 在自然停顿处中断
}
},
"format": "timestamped",
"language": "en"
}
}
// 从视频获取关键时刻
{
"type": "tool",
"name": "get-key-moments",
"parameters": {
"videoId": "dQw4w9WgXcQ",
"maxMoments": "5"
}
}
// 获取分段字幕
{
"type": "tool",
"name": "get-segmented-transcript",
"parameters": {
"videoId": "dQw4w9WgXcQ",
"segmentCount": "4"
}
}
// 获取逐段分析
{
"type": "prompt",
"name": "segment-by-segment-analysis",
"parameters": {
"videoId": "dQw4w9WgXcQ",
"segmentCount": "4"
}
}
// 获取定制化的字幕摘要
{
"type": "prompt",
"name": "transcript-summary",
"parameters": {
"videoId": "dQw4w9WgXcQ",
"language": "en",
"summaryLength": "detailed",
"includeKeywords": "true"
}
}
服务器处理各种错误情况,包括:
MIT