返回市场
YouTube-MCP服务器

YouTube-MCP服务器

作者:coyaSONG11 星标更新:2025-11-02

项目介绍

YouTube MCP Server

smithery 徽章

这是一个用于与YouTube数据交互的模型上下文协议(MCP)服务器。该服务器提供了通过标准输入输出接口查询YouTube视频、频道、评论和字幕的资源和工具。

特性

  • 使用高级过滤选项搜索YouTube视频
  • 获取特定视频和频道的详细信息
  • 比较多个视频的统计数据
  • 发现按地区和类别划分的趋势视频
  • 分析频道表现和视频统计数据
  • 获取视频评论和字幕/字幕文本
  • 生成视频分析和字幕摘要

预备条件

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

安装

通过Smithery安装

要通过Smithery自动安装YouTube MCP服务器到Claude桌面:

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. 运行服务器(HTTP传输):

    npm start
    

    服务器将在端口3000(或PORT环境变量)上监听,并在/mcp端点接受MCP请求。

  3. 开发模式运行:

    npm run dev
    
  4. 清理构建产物:

    npm run clean
    

HTTP传输迁移

迁移状态:✅ 完成 - 成功从STDIO迁移到可流式传输的HTTP传输

此服务器已更新为使用现代的可流式传输的HTTP传输,这是Smithery托管平台的要求。迁移包括:

  • 现代协议:使用可流式传输的HTTP传输(协议版本2025-03-26)
  • Express.js框架:基于Express.js进行强大的HTTP处理
  • 会话管理:支持具有适当会话跟踪的状态操作
  • MCP端点:所有请求都在/mcp端点处理
  • 向后兼容性:与所有现有工具和资源保持完全兼容
  • 增强性能:提高可扩展性和更好的错误处理

测试迁移

本地测试

# 启动服务器
npm start

# 使用MCP Inspector测试
npx @modelcontextprotocol/inspector
# 连接到:http://localhost:3000/mcp

Smithery集成

  • 服务器完全符合Smithery的新托管要求
  • 所有现有的Claude桌面集成将继续无缝工作
  • 端用户无需任何更改

Docker部署

该项目包含一个Dockerfile以实现容器化部署:

# 构建Docker镜像
docker build -t youtube-mcp-server .

# 使用HTTP传输运行容器
docker run -p 3000:3000 --env-file .env youtube-mcp-server

重要:容器现在暴露端口3000用于基于HTTP的MCP通信,而不是STDIO。

API参考

资源

  • youtube://video/{videoId} - 获取特定视频的详细信息
  • youtube://channel/{channelId} - 获取特定频道的信息
  • youtube://transcript/{videoId} - 获取特定视频的字幕
    • 可选查询参数:?language=LANGUAGE_CODE(例如,enkoja

工具

基本工具

  • 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"
  }
}

错误处理

服务器处理各种错误情况,包括:

  • 无效的API密钥
  • 视频或频道未找到
  • 字幕不可用
  • 网络问题

许可证

MIT

致谢