YouTube数据查询服务器

一个用于与YouTube数据交互的模型上下文协议服务器,提供查询视频、频道、评论和字幕的功能。

  • by xianxx17
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 xianxx17/my-youtube-mcp-server

使用说明

YouTube MCP服务器

用于与YouTube数据交互的模型上下文协议(MCP)服务器。此服务器提供资源和工具,通过stdio界面查询YouTube视频、频道、评论和转录。

特性

  • 使用高级过滤选项搜索YouTube视频
  • 获取特定视频和频道的详细信息
  • 比较多个视频的统计数据
  • 按地区和类别发现热门视频
  • 分析频道性能和视频统计数据
  • 检索视频评论和文字记录/字幕
  • 生成视频分析和成绩单摘要

先决条件

  • Node.js(v16+)
  • YouTube数据API密钥

安装

通过Smithery安装

通过以下方式自动安装适用于Claude Desktop的YouTube MCP服务器 史密瑟里:

npx -y @smithery/cli install @coyaSONG/youtube-mcp-server --client claude

手动安装

  1. 克隆此存储库:

    git clone https://github.com/coyaSONG/youtube-mcp-server.git
    cd youtube-mcp-server
    
  2. 安装依赖项:

    npm install
    
  3. 创建一个 .env 根目录中的文件:

    YOUTUBE_API_KEY=your_youtube_api_key_here
    PORT=3000
    

用法

建立和运行

  1. 构建项目:

    npm run build
    
  2. 运行服务器:

    npm start
    
  3. 在开发模式下运行:

    npm run dev
    
  4. 清理构建工件:

    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密钥无效
  • 未找到视频或频道
  • 成绩单不可用
  • 网络问题

许可证

麻省理工学院

致谢